rTorrent SOCKS5 代理:network.proxy.global.set 一行配置,和登录信息的坑
rTorrent SOCKS5 代理用 network.proxy.global.set 一行就能配置。它代理什么、会关掉什么,以及为什么建议用 IP 白名单,而不是把用户名和密码写进 URL。
rTorrent 的 SOCKS5 代理,是 .rtorrent.rc 里的一行配置,从 0.16.16 版开始可用:network.proxy.global.set = "socks5h://HOST:PORT"。设了之后,rTorrent 的连接经过代理,而按照它自己的 wiki,UDP Tracker、DHT 和监听端口会被关掉。建议把服务器的地址加进我们的 IP 白名单,而不是把用户名和密码写进这一行:当前的源码在 peer 连接上会丢掉登录信息。
rTorrent 一般跑在服务器上,所以这一篇默认你在终端前,面对一台自己能控制的机器。
种子机还需要代理吗
很多时候不需要。租来的种子机或者自己的服务器,本来就有一个独立于家里宽带的地址,带宽通常也是按重度使用定价的。在它前面再加一个按量计费的代理,等于这台机器传输的每个 GB 都要付两次钱:一次是机器自己的流量额度,一次是代理。不限流量的独享 IP 没有这个问题,见文末。
代理适合的情况,是你需要 rTorrent 从服务器自身以外的地址出去:一个特定的出口位置,或者你不想让服务器自己的地址出现在某个项目的下载群里。内容请限于可以分享的:发行版镜像、开源软件、科研数据集和知识共享合集,正是 rTorrent 最擅长长期做种的东西。这类合法内容的点对点流量,在我们的住宅代理和不限流量的独享 IP(没有流量上限的独享 ISP 或数据中心 IP)上都可以跑。但在 ProxyPanda 上分享未经授权的内容是不允许的,使用规范写明了遵守法律是你自己的责任。如果你担心的是版权追查,代理不是合适的工具,BT 项目的文档建议的是 VPN,见代理和 VPN 的区别。
打开全局代理后,被关掉的东西
rTorrent 的 wiki 页面“Proxy-Configuration”写得很直接:“UDP (trackers/dht) and listening ports are disabled.”实际意味着:
- UDP Tracker 和 DHT 停用。 它们不是绕过代理发出去,而是被关掉。这正好符合我们的 SOCKS5:我们没有在网关上验证过 UDP 中继,请把它当作只支持 TCP;HTTP 代理则本来就承载不了 UDP。背景见 HTTP 代理和 SOCKS5 的区别。
- 没有监听端口。 别的 peer 连不进来。rTorrent 仍然可以向它主动连上的 peer 上传,所以做种还在继续,只是 peer 少了。
- 种子必须有可用的 HTTP Tracker。 只靠 UDP Tracker 或 DHT 的种子会找不到任何 peer。大多数发行版的种子都列有 HTTP Tracker,但用之前最好确认一下。
- 代理不加密。 如果发送了 SOCKS5 登录信息,它是明文传过网络的。
- 双向都经过代理。 上传给其他 peer 和下载一样都要经过代理,两个方向各自怎么计入套餐,写在计量说明里。
先查版本号
代理命令是 v0.16.16 才加入的,发布于 2026 年 7 月 3 日,更新说明写的是:“new proxy support, using network.proxy.global.set and network.proxy.http.set, with http://, socks5:// and socks5h:// support”。当前版本是 v0.16.25。
发行版的软件包往往落后。2026 年 10 月 8 日我们从 Alpine Linux 的软件源安装 rTorrent,稳定分支给的是 0.15.2,连 edge 分支也只有 0.16.12,都比加入代理支持的版本旧。查一下你的版本:
rtorrent -h | head -1
低于 0.16.16,这些命令根本不存在。旧的 network.http.proxy_address 已被弃用。
两条命令
| 命令 | 作用 |
|---|---|
network.proxy.global.set |
rTorrent 连接所用的代理,包括 peer,见 0.16.16 更新说明:“support for socks5 for peer connections” |
network.proxy.http.set |
“Sets HTTP proxy (overrides global)”,用于 Tracker 通告这类 HTTP 请求;“Supports all native libcurl schemas” |
wiki 为全局代理列了三种写法,换成我们的占位符是:http://HOST:PORT、socks5://USERNAME:PASSWORD@HOST:PORT 和 socks5h://USERNAME:PASSWORD@HOST:PORT。优先用 socks5h://,把域名交给代理解析,而不是在你的服务器上查。
登录信息的坑,和白名单的解法
wiki 写明可以在 URL 里带用户名和密码,它自己的例子就在代理地址前写了 user:pass@。但 rTorrent 在 v0.16.25 标签下的源码,从 socks5:// URL 里解析出用户名和密码之后,建立 SOCKS5 连接时并没有把它们传进去。这是我们读代码看到的,没有实际运行过。如果代码确实如此,需要登录的 SOCKS5 代理会拒绝 rTorrent 的 peer 连接,而同样的登录信息在别的工具里可能完全正常。
与其赌这一点,不如用 IP 白名单:在控制台里加上服务器的地址,代理不用登录也会接受它的连接。有固定地址的服务器正是白名单最适合的场景,密码也不必出现在配置文件里。然后写:
network.proxy.global.set = "socks5h://HOST:PORT"
HOST 和 PORT 来自服务页面。ISP 和数据中心代理先在控制台切换到 SOCKS5,再复制它显示的端口。
写入配置,以及之后怎么改
- 把上面那一行加进
~/.rtorrent.rc。 - 重启 rTorrent,让新设置作用于新建立的连接。
- 如果你通过 XML-RPC 控制 rTorrent,两条代理命令在源码里都标记为可以通过 RPC 安全调用,脚本可以在运行时修改它们。
常用的网页前端 ruTorrent 是否在界面里提供这些设置,我们没能确认。请在配置文件里设置,把 ruTorrent 当作查看结果的窗口。
在服务器上验证,再核对用量
先在同一台服务器上确认代理可用,并且返回的是另一个地址:
curl -s -x socks5h://HOST:PORT https://api.ipify.org
然后拿用量表和 rTorrent 自己的统计对账:
- 记下控制台里这项服务的流量数字,怎么查看还剩多少流量讲了在哪里看。
- 让 rTorrent 下载一个小而合法、带 HTTP Tracker 的种子。
- 控制台数字是定期更新的,不是实时的,几分钟后把增量和 rTorrent 的下载量、上传量对比。
两者大致相符,说明 peer 走了代理。rTorrent 显示有 peer、用量却几乎不动,说明有东西绕开了代理,从服务器自己的地址出去了。rTorrent 一个 peer 都没有,先检查种子有没有 HTTP Tracker,再检查白名单里的地址和服务器实际的出口地址是否一致。
全天候做种,账要算在前面
rTorrent 天生就是全天候做种用的,而住宅代理按 GB 计量。全局代理覆盖这个 rTorrent 实例里的所有种子,所以请限制上传速度,或者到一定分享率就停止;不需要单独地址的种子,放到一个不挂代理的实例里跑。服务器全天候做种,最合适的是不限流量的独享 IP:数据中心代理的独享档和高级档、ISP 代理的高级档没有流量上限,做种不按 GB 计,速度仍受端口速率限制。线路区别见 ISP 还是数据中心代理,价格见价格页。
常见问题
rTorrent 怎么设置 SOCKS5 代理? 在 0.16.16 或更新的版本里,往 .rtorrent.rc 写 network.proxy.global.set = "socks5h://HOST:PORT"。
rTorrent 的代理能承载 DHT 吗? 不能。设了全局代理,UDP Tracker、DHT 和监听端口都会被关掉。
能把代理的用户名和密码写进 URL 吗? wiki 写了可以,但 v0.16.25 的源码看起来不会把它们用在 peer 连接上。在有人实测之前,请用 IP 白名单。
network.http.proxy_address 还能用吗? 它已被弃用,请改用上面两条命令。
下一步
如果你在新版 rTorrent 上测试了带登录的 SOCKS5 URL,不管 peer 连接成功与否,都欢迎到 Discord 告诉我们结果,我们会据此更新这一篇。其他客户端的情况见哪些 BT 客户端支持 SOCKS5。