N4:双 NAT4 网络打洞测试工具

172 天前
 mikewang

我是 Natter 的作者。我创作 Natter 的起因是:我有一条移动送的千兆宽带,没有公网,但为 NAT1 。

创作 Natter ,也是为了证明:


但是,好景不长,两年后 家庭宽带 IPv6 被停,IPv4 变为 NAT4 (/t/1044806) 🤦‍♂️

然而我发现,我这里移动 NAT4 的外部端口是递增分配的。手机流量也是。于是着手开发 N4 工具。

N4 工具是为了证明:


具体工具和实现原理见:

https://github.com/MikeWang000000/n4


P.S. 本质上是端口预测,递增型是最好预测的一种情形。如果不是递增,但具有某种规律,或许通过机器学习等方法预测未来的端口也是可行的...

3596 次点击
所在节点    宽带症候群
16 条回复
w568w
172 天前
NAT4 无法穿透的本质是 Address&Port-Dependent Filtering ,猜测 NAT4 端口目前通用的策略就两种,假设规律(比如递增或者别的什么规律)和生日攻击。

生日攻击的实现可以参考 https://github.com/jflyup/nat_traversal 。不过实际中运营商不会允许同一 IP 同时占用那么多表项,所以成功率很低。

之前论坛里也有说 Frp 的 XTCP 模式会尝试猜测 nat4 端口,可以看看他们的算法: https://www.v2ex.com/t/995966

不过我从家宽连接教育网里的服务器(两边 NAT4 ),从来没成功过…
icaolei
172 天前
膜拜一下,才几天时间就搓出这个项目了。这效率太强了。👍
mikewang
172 天前
@w568w #1

Address and Port-Dependent Filtering 对应的应该是 NAT3 ,这个还能通过 STUN 找到外部端口对应; NAT4 更严格,问题在于不知道外部端口。

生日攻击在理论上成立,但是实际上应用有点困难(和你所说的原因一样):

类似于 TCP 的 “最大连接数”,UDP 也存在类似限制(实质就是映射表项数量的限制)。
在我的环境测试,UDP “连接数” 到达 100 往上时,便出现随机丢包,超过 2000 便无法向新地址发包。

此时再怎么测都是无效的,因为实际上 UDP 包根本就没有发出去,甚至没有形成映射。

所以 N4 只能采用不那么暴力的方式预测,每次在小范围内(默认一轮 25 个端口)尝试,这样就存在成功的可能。
mikewang
172 天前
@w568w #1
另外感谢指路,jflyup/nat_traversal 使用小 TTL 防止触发 flooding protection 的思路很妙。
我也参考下其他算法看看能否进一步提升成功概率。
liuzimin
172 天前
前几天还看到有人说“现在哪还有没 IPv6 的”。。(反正我也没有)
kira887
172 天前
@liuzimin 很多公司也没配置
a33291
172 天前
@liuzimin 我们路由器直接不支持 ipv6😂
liuzimin
172 天前
@kira887 我家里是房东的下级网络,房东不肯开,我也没辙。正所谓现代版“何不食 ipv6”
lightionight
172 天前
国内 ISP 致力于让每一个客户都成为网络专家
Dk2014
172 天前
我虽然是 nat1 ,但是 tmd 有时候拨号完打洞,端口都不够用,只能开一个洞😅
这狗电信还设置了 2000 分钟拨号上限,直接给你整掉线
tivizi
172 天前
深圳联通,目前还是 NAT3
Satansickle
171 天前
@liuzimin 好像是我说的...orz
Satansickle
171 天前
LZ 真是既有技术又有闲心啊,base64 ( 5ZkAPJNc8P )看看有没有什么能够帮到 LZ 的
Satansickle
171 天前
@Satansickle 搞错了,eHN3d3BwcA==
hexo
171 天前
佩服执行力
mikewang
171 天前
@Satansickle 我们有交流群组:🐧: 657590400 / TG: https://t.me/hellonatter 欢迎加入讨论👏

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

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

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

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

© 2021 V2EX