端口受限 NAT 与对称 NAT 有办法打洞吗?

2022-05-21 09:08:52 +08:00
 lovelylain

家宽之前在手机上测试显示 full cone ,但与对称 nat 一直无法打洞成功,昨天换了一种方式测试,应该是那个测试 app 有 bug ,实际上应该是端口受限 nat 。手机流量的对称 nat 也测试了一下,虽然目标 ip 确定的情况下端口递增,但是访问不同 ip 可能映射到不同公网 ip ,所以端口猜测也没法搞了吧?还有可能打洞成功吗?

4948 次点击
所在节点    宽带症候群
17 条回复
delpo
2022-05-21 09:23:07 +08:00
如果一边端口受限另一边对称 nat,并且对称 nat 是端口递增的, 那么可以通过手动发包的方法打洞
比如说对称 nat 一侧,和打洞服务器通信时,防火墙映射的外网端口为 n,那么真正打洞时,防火墙映射的外网端口就是 n+x(x 不一定为 1,因为内网可能还有其他客户端),这时候端口受限 nat 一侧的客户端就可以手动发包访问 n+x 号端口,就可以用该端口完成打洞.
至于 x,一般比较小,可以通过遍历的方式进行发包
missdeer
2022-05-21 11:54:55 +08:00
我觉得你可以考虑试试在家宽打开 upnp ,我之前遇到了跟你一样的问题,现在通过 upnp 能满足我绝大多数需求
v2tudnew
2022-05-21 12:01:25 +08:00
有,要公网 IP ,普通路由器拨号😂。或者上 IPv6 。
CGNAT 就算给 Full Cone NAT 也是端口不对称的残废版本,没用。
yaott2020
2022-05-21 13:04:39 +08:00
目前好像没有办法,可以试试预测
lovelylain
2022-05-21 15:42:01 +08:00
@yaott2020 主要是对称 nat 不一样的目的 ip 连出口 ip 都可能不一样,好像没什么办法能确定出口 ip ,所以端口猜测也搞不了。
lovelylain
2022-05-21 15:46:57 +08:00
@missdeer 你的意思是局端可能开启了 upnp ,可以在路由器上走 upnp 协议端口映射?这个要怎么操作呀?
huyujievip
2022-05-21 16:53:28 +08:00
别打了,用 Wireguard 组网吧
missdeer
2022-05-21 17:45:47 +08:00
@jobmailcn 在光猫上 enable upnp (这步用光猫的手机 app 就能做到),然后光猫后的设备可以自己用程序(比如 miniupnp )映射端口,具体命令参数上网搜一下吧,很简单的,映射成功的话光猫 app 上能查到。我现在家宽和外面都是对称型,在家宽开了 udp 端口后,从外面就能连上来了。
anbobi
2022-05-21 21:33:25 +08:00
话说打洞是啥意思
i3x
2022-05-22 02:05:26 +08:00
不是靠猜测。靠第三方服务器判定。
stun 。
fullcone 状态的话端口虽然不一致但是对应关系可以通过 stun 或者其他的外部服务器方式取得。

你是需要两个地方通过 udp 打洞实现两端直接通信吧。搜索 site2site udp hole punching wireguard 。。。如果没有洁癖不担心商业产品依赖问题,tail scale 或者国产的 oray 蒲公英随便用。蒲公英组网也是优先穿透实在没办法才会用服务器转发。


@anbobi 没有公网 ip ,且网关不提供 upnp ,端口映射之类的。但是仍然能保持让其他设备访问的端口。。。。基本上只能 udp 。因为 tcp 有来路问题。
yaott2020
2022-05-22 11:39:03 +08:00
@jobmailcn 那基本无解,除非运气好刚好能撞上,。还是买台 nat 鸡上中转吧。

好奇问一句是什么网络环境,长城宽带吗
lovelylain
2022-05-22 14:11:52 +08:00
@missdeer 试了一下,No IGD UPnP Device found on the network !应该是没有 upnp 的。

之前拨号成功虽然能获取到 ipv6 地址,但没有分发前缀,而且也 ping 不通 ipv6 网站,刚才又折腾了一番,终于发现是联通给我改的桥接有问题,调整了一下后 ipv6 就能用了,困扰近 2 年的 ipv6 不能用问题终于解决了。
i3x
2022-05-22 20:02:56 +08:00
@jobmailcn 桥接还有区别?啥问题?很好奇。
lovelylain
2022-05-23 08:13:41 +08:00
@i3x 光猫桥接配置里有个 ip 类型选项,v4 v6 或 双栈,之前是 v4 ,于是 v6 收发包都被屏蔽了,改成双栈后就有分发前缀了,v6 也正常了。
anbobi
2022-05-23 13:22:42 +08:00
@i3x 你当真了,我这就是纯粹是揶揄楼主没有公网 IP 而已
openp2p
2022-05-29 16:14:30 +08:00
这个实现其实非常简单,就是靠端口碰撞,大概发送 800 个包就超过 99%的概率打洞成功。
可以先试用下行不行 https://openp2p.cn
可行再看看代码 https://github.com/openp2p-cn/openp2p/blob/master/holepunch.go 核心部分就几十行代码的事
flynaj
2022-05-30 23:34:57 +08:00
路由器拨号,路由器开 UPnP

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

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

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

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

© 2021 V2EX