PT、BT 下载如何利用 P2P 打洞获得上传速度。

2022-12-13 08:40:59 +08:00
 mmr
已经实现的:
  1. 宽带改桥接。
  2. 拨号路由器 DMZ 主机设为下载服务器。
现阶段情况:
  1. 大部分时间没有上传。
  2. 对一部分国内 ip 有上传(可能是对面把我的端口蒙对了,或者 NAT 出去的就是原端口)。
想实现的:
  1. 希望实现用一个公网服务器自动的进行 P2P 打洞。
  2. 可不可以提供一些清晰的关于 NAT 和 P2P 打洞的资料。
8538 次点击
所在节点    宽带症候群
39 条回复
villivateur
2022-12-13 08:46:56 +08:00
DMZ 没必要,把 BT 通讯端口转发开放一下就行。
没有上传可能是因为你的网络环境不行,没有 IPv6 的话,上传会少非常多。
别折腾 NAT 打洞了,IPv6 更重要。
mmr
2022-12-13 08:49:37 +08:00
我现在测试阶段,后期为了内网安全肯定会上防火墙的。
我有 IPV6 ,测试已过。

@villivateur
redbeanzzZ
2022-12-13 09:21:12 +08:00
我以前用移动网,该有速度的还是有速度。
现在用的联通,有公网 IP ,该没速度的还是没速度。
现在已经佛系挂机了。
挑热门大包做种吧,有时候感觉是真抢不过别人,据说用 qbitorrent 抢上传会好点
mmr
2022-12-13 09:28:26 +08:00
我用的 Transmission
@redbeanzzZ
ScepterZ
2022-12-13 09:39:25 +08:00
我没有进行任何操作,该上传的时候自然就上传了,大部分时候没上传就是真的没人下载,到 pt 网站看看有没有人下载就知道了
RheatiN
2022-12-13 10:10:06 +08:00
别人都是盒子刷流,怎么可能抢得过他们- -
@redbeanzzZ
hahasong
2022-12-13 10:18:04 +08:00
开 UPNP 就行了,桥不桥接区别不大
leaves615
2022-12-13 10:30:25 +08:00
想刷上传,关注哪些热门的种子,多下几个。总有一个会上传, 玩 PT ,24 小时在线的设备要好一些。
ysc3839
2022-12-13 10:48:03 +08:00
BT 在 fullcone NAT 下本来就有打洞的效果,客户端会定时向别的 Peer 发送数据,就能刷新 NAT 回收端口的超时。印象中客户端也会获取公网 IP 和端口再上报给 Tracker 。
理论上 BT 在两端都是 port-restricted cone NAT 的情况下也能工作,但需要两端都定期向所有 Peer 发包,这样的话双方就会打通。
neptuno
2022-12-13 11:28:50 +08:00
刷成人包、抢热点种子
cwbsw
2022-12-13 11:48:28 +08:00
@ysc3839
没用的。你只能向 tracker 报告你内网端口,和 CGNAT 后的公网端口必然不一样。
要打洞,需要至少一方是 FullCone ,还需要有专用的服务器协助,现在的 BT 协议并不支持。
cwbsw
2022-12-13 11:50:31 +08:00
说下我的方案。

通过一台双栈服务器用 socat 把 v4 端口转发到本地 BT 客户端的 v6 端口,本地 BT 客户端走代理与 tracker 通信。
ysc3839
2022-12-13 11:56:50 +08:00
@cwbsw 报告内网还是公网是看客户端实现的,个人印象中 qBittorrent 是可以报告公网的。客户端能获取公网 IP ,获取 IP 的这个服务器就是“专用的服务器协助”了。只有 port-restricted cone NAT 的情况下,理论上两端都向对方发包,那就能互相打开 NAT 映射,就能互相通信了。不过大多数 BT 客户端在连不上某个 Peer 后就不会再尝试连接,所以实际还是 fullcone NAT 才可用。
mikewang
2022-12-13 12:26:07 +08:00
@heiher
在此艾特 natmap 小伙伴,我觉得你应该明白我想说的。

Natter 也研究过将 NAT1 中的 DHT TCP 端口开放至公网的方案。
从本机到公网的端口映射,有一种流程是:
本机:A —> 路由器:B —> 公网:C

其中 A, B 端口号是可控的,C 端口号不可控。
然而,虽然端口映射到了公网,BT 软件一般对外报告 A 端口号,而非 C ,导致外部主机连不上。

现在有一种思路,就是先建立〔路由器:B —> 公网:C 〕的映射,得到端口 C 后,反过来去通知 BT 软件去监听 C 端口,映射关系变为:
本机:C —> 路由器:B —> 公网:C

这样内外端口即保持一致。我做过实验,这样可以获得非常可观的上传。

这个缺陷在于,BT 软件需要提供 API 去改变实时监听端口(已知 transmission 是可以的)不过现在工作太忙了,不太有时间更新 Natter 。heiher 兄有没有什么想法?
cwbsw
2022-12-13 12:29:06 +08:00
@ysc3839 公网 IP 不需要 qBittorrent 报告,tracker 本来就能获取到,问题是端口。
ysc3839
2022-12-13 13:02:31 +08:00
@cwbsw 说的是公网 IP 和端口
cwbsw
2022-12-13 13:07:36 +08:00
@ysc3839 qBittorent 没这功能。
heiher
2022-12-13 13:36:21 +08:00
@mikewang

平常并不使用 BT 协议,也不了解 BT 协议,但 mike 兄讲的很清晰,我看懂了,哈哈。

我之前从直觉上的认知与 @ysc3839 一样,认为 BT 客户端可以将自己正在侦听的公网 IP 、端口交换给 peer ,那么在本机:A —> 路由器:B —> 公网:C 三层结构下,BT 客户端通过 UPNP 或 NATPMP 打通路由器:B —> 本机:A 的入站,再利用公网侧 CGNAT 的 NAT1 特点,同时打通公网:C —> 路由器:B 。就能完全实现用户免配置。

现在综合看事实可能不是这样的,那么向开源的 BT 客户端提交补丁可能是一劳永逸的方法?增加获得并报告公网侧 IP 、端口的支持。

对于不修改 BT 客户端的情况,mike 兄的方法已经实测可行了,只要在 Natter 的 Hook 脚本中调用 BT 客户端 API 更改侦听端口即可。而对于没有 API 的 BT 客户端,不知道是不是可以实现一个代理程序来篡改客户端上报的端口 :P
ysc3839
2022-12-13 13:39:05 +08:00
@cwbsw 我目前没有测试环境,但印象中以前用校园网连接 PT 站时,PT 站后台看到的 IPv4 端口是和本地不同的,本地一直是固定的 8000 多的端口,但是后台看到的是上万的端口。也有可能是我记错了,但我目前也没条件测试。
isad
2022-12-13 14:04:19 +08:00
对 BT 来说,没什么必要做特殊处理。你在内网里本身就可以通过 DHT 进行 μtp 上传,就算你自行映射端口并报告给 tracker ,中国三大运营商的国际互连质量也本来就很拉跨,tcp 上传并不会快多少。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/902093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX