前一段时间琢磨怎么在内网里做种,毕竟只下载不上传实在太蛋疼了(良心过不去,而且我有能力尝试做种为啥不去试试呢),最后终于成功了,遂来分享。
环境:内网中计算机一台,公网里有 root 的 VPS 一台。
为了在内网中做种,我使用的方法的基本原理是:在 VPS 上搭建代理和内网穿透,内网的 BT 客户端设置出站完全走代理,以避免其它部分 peer 看你还是在内网中。做内网穿透当然是为了让其它 peer 连进内网里,这里我用的是 NPS 。
但是实际上很多 BT 客户端都是基于libtorrent
(简称lt
)这个库的,libtorrent
有个毛病就是当你设置使用代理的时候,lt
不会在本地监听 TCP (好像是为了流量暴露?),导致其它 peer 连不进来。这里我使用Brandon 的 patch,这个 patch 通过修改lt
的源代码,使其在使用代理的时候也会在本地监听 TCP 。
此外,lt
还需要开启allow_multiple_connections_per_ip
,以允许同一 IP 建立多个连接,这是因为使用内网穿透之后所有连进来的 peer 的 IP 都会展现为127.0.0.1
。这里我使用的是deluge
客户端和ltconfig
插件,ltconfig
支持手动更改 lt 的所有选项。而且 ltconfig 可以开启默认被 deluge 禁用的announce_to_all_trackers
,从而一次性使用所有 tracker ,加速下载和上传。
不过最后我发现如果按照这个方法并且用 SOCKS5 当代理协议(当然有加密过)的话,在 deluge 上会导致 UDP 用不了。不知道是不是lt
又犯傻了……不知道其它协议或者其它客户端可不可行?