![uTorrent 和 PuTTY -> 如何将连接转变为活动连接?](https://linux22.com/image/1298647/uTorrent%20%E5%92%8C%20PuTTY%20-%3E%20%E5%A6%82%E4%BD%95%E5%B0%86%E8%BF%9E%E6%8E%A5%E8%BD%AC%E5%8F%98%E4%B8%BA%E6%B4%BB%E5%8A%A8%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
当我们谈论 torrent 时,有主动和被动模式。被动模式是指您无法主动连接到对等方。主动模式是指您的端口是转发器,其他人可以连接到您。
到目前为止,我所做的就是在我的服务器上安装 Debian。然后我将其添加GatewayPorts yes
到我的 sshd_config 文件中。之后,在 PuTTY 中,我设置了以下配置:
- 远程端口执行相同操作
- 本地端口接受来自其他主机的连接
然后我添加了一个新的转发,例如:
4D8080
(IPv4,动态,在我的 PC 端口 8080)。
之后,我将 uTorrent 设置为使用 SOCKS5 代理每一个可能的连接,在localhost
,端口8080
。但是,我的客户端将在右下角显示红色符号。
有解决办法吗?(肯定有什么地方不对劲,我得到的 DHT 节点也是 0 个。)
答案1
您的两个问题(无法连接和找不到 DHT 节点)是相关的,但它们有不同的原因和不同的(部分)解决方案。
连接
为了能够接受传入连接,您必须完成三件事:
将 uTorrent 监听的远程端口转发到您的客户端机器。
在首选项 → 连接 → 监听端口 → 用于传入连接的端口,uTorrent 允许您为传入连接指定单个端口。将其设置为
40000
(例如)。要转发此端口,请输入连接 → SSH → 隧道在 PuTTY 中并添加以下转发端口:
R40000 127.0.0.1:40000
检查本地端口接受来自其他主机的连接对此既不是必需的也不是理想的。它用于允许其他机器连接到您的计算机并使用转发的本地和动态端口。
检查远程端口也一样
GatewayPorts
仅当您在服务器上设置为时才需要clientspecified
。如果设置为yes
或no
,则此选项无效。让 uTorrent 向跟踪器报告正确的 IP。
默认情况下,跟踪器在将 IP 添加到对等列表时会给出最佳猜测。动态端口转发可能(这取决于跟踪器)导致本地 IP 地址 (
10.xxx.yyy.zzz
) 被添加到对等列表中。应该添加的 IP 是您的服务器。您可以在偏好设置 → BitTorrent → 报告给 Tracker 的 IP/主机名。并非所有追踪器都尊重此设置,但它应该有所帮助。
允许 uTorrent 接受传入连接。
在偏好设置 → 高级,您可以修改位字段bt.transp_disposition。
当使用具有远程端口转发功能的 SSH 隧道进行 TCP 和 UDP 连接(见下文)时,我会将其设置为
13
。这允许传出的 TCP 和传入的 TCP 和 UDP 对等连接。
DHT / UDP 连接
PuTTY 和 SSH 不监听任何 UDP 端口,因此您转发的动态端口和远程端口都无法正常工作。由于 DHT 使用 UDP,因此它也不起作用。
传入 UDP 连接
如果您安装索卡特在您的服务器(
apt-get install socat
)和客户端计算机上(使用适用于 Windows 的 Socat),您可以将传入的 UDP 连接转换为 TCP 连接,通过隧道转发它们,然后在客户端计算机上将它们转换回 UDP 连接。为此,请执行
socat udp4-listen:40000,reuseaddr,fork tcp:localhost:50000
在您的服务器上
socat tcp4-listen:50000,reuseaddr,fork UDP:localhost:40000
在您的客户端机器上。
端口号的选择
50000
是任意的,但它必须不同于40000
(以便能够区分一种连接类型与另一种连接类型)。对于实际转发,请输入连接 → SSH → 隧道在 PuTTY 中并添加以下转发端口:
R50000 127.0.0.1:50000
传出 UDP 连接
通过 SSH 隧道路由传出的 UDP 连接并不容易,甚至可能是不可能的。上面的方法不起作用,因为
socat
它只监听特定端口,而传出连接的目标端口可以是任何端口。此外,一旦 TCP 数据包到达动态转发端口,您就无法控制它会发生什么。可以逐个设置 UDP 连接,但这可能不值得付出努力。一旦您连接到第一个对等点,DHT 应该可以很好地处理传入连接。
答案2
您需要反过来做...您需要有远程端口接受来自其他主机的连接。并且您的服务器上有一条防火墙规则,允许传入流量到 utorrent 偏好设置中设置的监听端口。(虽然我不确定这是否会通过 socks 传播 - 您需要尝试并检查netstat
)
答案3
动态 SOCKS 代理模式(“D”选项)无法为您处理传入连接,因为协议中没有这样的规定。毕竟,代理协议只应该处理您的传出连接。
您需要添加远程重定向(“R”选项),以便您的 SSH 服务器监听某个端口并将数据包重定向给您。请参阅以下手册页摘录:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side. This
works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the connec-
tion is forwarded over the secure channel, and a connection is
made to host port hostport from the local machine.
Port forwardings can also be specified in the configuration file.
Privileged ports can be forwarded only when logging in as root on
the remote machine. IPv6 addresses can be specified by enclosing
the address in square braces or using an alternative syntax:
[bind_address/]host/port/hostport.
By default, the listening socket on the server will be bound to
the loopback interface only. This may be overriden by specifying
a bind_address. An empty bind_address, or the address '*', indi-
cates that the remote socket should listen on all interfaces.
Specifying a remote bind_address will only succeed if the
server's GatewayPorts option is enabled (see sshd_config(5)).
但请注意,此端口转发功能可能会更改远程对等方的原始 IP,从而可能扰乱 bittorrent 协议。如果是这种情况,您需要使用 VPN 而不是 SSH。