1
villivateur 2022-12-13 08:46:56 +08:00
DMZ 没必要,把 BT 通讯端口转发开放一下就行。
没有上传可能是因为你的网络环境不行,没有 IPv6 的话,上传会少非常多。 别折腾 NAT 打洞了,IPv6 更重要。 |
2
mmr OP |
3
redbeanzzZ 2022-12-13 09:21:12 +08:00
我以前用移动网,该有速度的还是有速度。
现在用的联通,有公网 IP ,该没速度的还是没速度。 现在已经佛系挂机了。 挑热门大包做种吧,有时候感觉是真抢不过别人,据说用 qbitorrent 抢上传会好点 |
4
mmr OP 我用的 Transmission
@redbeanzzZ |
5
ScepterZ 2022-12-13 09:39:25 +08:00
我没有进行任何操作,该上传的时候自然就上传了,大部分时候没上传就是真的没人下载,到 pt 网站看看有没有人下载就知道了
|
6
RheatiN 2022-12-13 10:10:06 +08:00
别人都是盒子刷流,怎么可能抢得过他们- -
@redbeanzzZ |
7
hahasong 2022-12-13 10:18:04 +08:00
开 UPNP 就行了,桥不桥接区别不大
|
8
leaves615 2022-12-13 10:30:25 +08:00
想刷上传,关注哪些热门的种子,多下几个。总有一个会上传, 玩 PT ,24 小时在线的设备要好一些。
|
9
ysc3839 2022-12-13 10:48:03 +08:00
BT 在 fullcone NAT 下本来就有打洞的效果,客户端会定时向别的 Peer 发送数据,就能刷新 NAT 回收端口的超时。印象中客户端也会获取公网 IP 和端口再上报给 Tracker 。
理论上 BT 在两端都是 port-restricted cone NAT 的情况下也能工作,但需要两端都定期向所有 Peer 发包,这样的话双方就会打通。 |
10
neptuno 2022-12-13 11:28:50 +08:00
刷成人包、抢热点种子
|
11
cwbsw 2022-12-13 11:48:28 +08:00
@ysc3839
没用的。你只能向 tracker 报告你内网端口,和 CGNAT 后的公网端口必然不一样。 要打洞,需要至少一方是 FullCone ,还需要有专用的服务器协助,现在的 BT 协议并不支持。 |
12
cwbsw 2022-12-13 11:50:31 +08:00
说下我的方案。
通过一台双栈服务器用 socat 把 v4 端口转发到本地 BT 客户端的 v6 端口,本地 BT 客户端走代理与 tracker 通信。 |
13
ysc3839 2022-12-13 11:56:50 +08:00
@cwbsw 报告内网还是公网是看客户端实现的,个人印象中 qBittorrent 是可以报告公网的。客户端能获取公网 IP ,获取 IP 的这个服务器就是“专用的服务器协助”了。只有 port-restricted cone NAT 的情况下,理论上两端都向对方发包,那就能互相打开 NAT 映射,就能互相通信了。不过大多数 BT 客户端在连不上某个 Peer 后就不会再尝试连接,所以实际还是 fullcone NAT 才可用。
|
14
mikewang 2022-12-13 12:26:07 +08:00 via iPhone 1
@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 兄有没有什么想法? |
18
heiher 2022-12-13 13:36:21 +08:00 1
@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 |
19
ysc3839 2022-12-13 13:39:05 +08:00 via Android
@cwbsw 我目前没有测试环境,但印象中以前用校园网连接 PT 站时,PT 站后台看到的 IPv4 端口是和本地不同的,本地一直是固定的 8000 多的端口,但是后台看到的是上万的端口。也有可能是我记错了,但我目前也没条件测试。
|
20
isad 2022-12-13 14:04:19 +08:00
对 BT 来说,没什么必要做特殊处理。你在内网里本身就可以通过 DHT 进行 μtp 上传,就算你自行映射端口并报告给 tracker ,中国三大运营商的国际互连质量也本来就很拉跨,tcp 上传并不会快多少。
|
22
dc3365 2022-12-13 14:23:57 +08:00
我的解决方案是直接在网站上购买上传量。10 块钱可以买到很多。足够单独下载很久。
|
23
redbeanzzZ 2022-12-13 17:34:34 +08:00
@RheatiN 热门成人包回个本一般还是可以的,反正 24 小时挂着
|
24
mikewang 2022-12-13 23:26:32 +08:00
|
25
cwbsw 2022-12-14 14:32:19 +08:00 1
|
26
cwbsw 2022-12-14 14:34:39 +08:00
好想是想太简单了,应该还需要动态配置 IPv6 的防火墙,不过问题也不大,很多方法可以解决。
|
27
Wenpo 2022-12-15 00:02:58 +08:00 1
@mikewang 蹲,哈哈事实上 natter 刚出来的时候,我第一个应用就是给 bt/pt 打洞,然后把打洞后的端口手动设置到 tr 上,我每次都还用 itdog 全国 ping 一下,每过一阵子我还要检查一下端口改了没。
|
28
qbqbqbqb 2022-12-18 17:51:42 +08:00
BT 打洞是看软件实现的。
首先 BT 有两个协议,基于 TCP 的 BT 协议和基于 UDP 的 uTP 协议,只有 UDP 的 uTP 能打洞。所以你的 BT 软件必须要支持 UDP 传输。 其次看你用的是哪款客户端软件,开源 BT 软件一般都是基于 libutp 这个库的,这个库里的 uTP 的实现上支持一个 ut_holepunch 打洞扩展。 已知 qBittorrent 可以自动打洞。Transmission 虽然也是基于 libutp 的,但它似乎没有实现打洞功能。 其它软件的话,很多人喜欢用的“比特彗星”这个软件,老版本是完全不能打洞的,新版本据说可以。 |
29
qbqbqbqb 2022-12-18 17:53:24 +08:00
|
30
jyeric 2022-12-26 20:57:24 +08:00
bitcomet 好像据说支持打洞,但没实际测试过
|
31
MeteorVIP 2023-02-03 11:54:33 +08:00 via iPhone
|
32
mikewang 2023-02-04 01:41:52 +08:00 via iPhone 2
@MeteorVIP 👍实践出真知
这种 NAT1“真”穿透打洞的方式是我半年前一时兴起想到的方法,得到了广大 v 友的验证,还有 @heiher 这样优秀的开发者以全开源的形式贡献代码。毕竟很多类似的工具不是中转就是闭源。还是非常感动的。欢迎来 https://t.me/hellonatter 大家一起探讨。 |
36
heiher 2023-02-06 12:34:52 +08:00 1
@MeteorVIP #35 应用程序的端口转发在程序启动后目前无法修改,将来可以增加方法;结合性能考虑,建议使用防火墙的端口转发,在映射建立获得公网端口,调整 BT 客户端侦听端口后,脚本里再更新防火墙的端口转发规则。
|
37
MeteorVIP 2023-02-06 22:08:11 +08:00
@heiher #36 可能是表达的不够清楚,我想修改的是"转发目标端口".
通过界面是可以修改的.openwrt 界面显示的代码是 uci set natmap.cfg053b66.forward_port='54321' 比如新建端口 23456 代码为 natmap -4 -d -i pppoe-wan -s stun.stunprotocol.org -h qq.com -b 48083 -t 172.16.1.111 -p 23456 我想把 23456 改为 54321,请问通过代码怎么实现?谢谢 |
38
heiher 2023-02-06 22:17:35 +08:00 1
@MeteorVIP #37 我没有理解错,已经启动的 natmap 的 -p 参数还不能运行时修改,建议使用防火墙的端口转发实现 -t 172.16.1.111 -p 23456 的转发功能,性能更好,而且也方便更新目标端口。
如果暂时非要用 natmap 的应用程序端口转发,那么一种 workaround 方法是先后启动两个 natmap ,打同一个端口: 1. natmap -4 -d -i pppoe-wan -s stun.stunprotocol.org -h qq.com -b 48083 -t 172.16.1.111 -p 23456 -e script1 2. natmap -4 -d -i pppoe-wan -s stun.stunprotocol.org -h baidu.com -b 48083 -t 172.16.1.111 -p 54321 -e script2 script1 负责启动第二个 natmap ,并关闭第一个 natmap 。script2 实现同等的功能,当公网端口映射变更时。需要注意的是 -h 参数两个 natmap 需要不同,防止冲突。两个不同的 http server 可以交替使用。 还是建议使用防火墙方式,可以参考这个更新脚本: https://github.com/Mythologyli/qBittorrent-NAT-TCP-Hole-Punching/blob/master/update.sh#L21 |
39
ChiCh 2023-08-29 21:19:07 +08:00 via iPhone
BT 软件是支持打洞的,而且打洞方式已经被协议化了,详见: https://www.bittorrent.org/beps/bep_0055.html 。
如果用的软件不是太旧的版本的话,想必都已经实现了此功能。 协议中:只支持 UDP 打洞,并通过 uTP 传输( TCP 打洞不支持,我认为是因为 TCP 打洞只支持完全锥形 NAT ,打洞成功率较低)。 STUN 也和大家想的不一样,他是通过把有公网 IP 的下载/做种用户当作 STUN 进行搭桥。 至于 Tracker 部分,上传给 Tracker 的仍然是不可用的内网端口号。Tracker 在此环境下只提供“得到活动的公网 IP 用户”的功能。 |