我是 Natter 的作者。我创作 Natter 的起因是:我有一条移动送的千兆宽带,没有公网,但为 NAT1 。
创作 Natter ,也是为了证明:
但是,好景不长,两年后 家庭宽带 IPv6 被停,IPv4 变为 NAT4 (/t/1044806) 🤦♂️
然而我发现,我这里移动 NAT4 的外部端口是递增分配的。手机流量也是。于是着手开发 N4 工具。
N4 工具是为了证明:
具体工具和实现原理见:
https://github.com/MikeWang000000/n4
P.S. 本质上是端口预测,递增型是最好预测的一种情形。如果不是递增,但具有某种规律,或许通过机器学习等方法预测未来的端口也是可行的...
1
w568w 207 天前 1
NAT4 无法穿透的本质是 Address&Port-Dependent Filtering ,猜测 NAT4 端口目前通用的策略就两种,假设规律(比如递增或者别的什么规律)和生日攻击。
生日攻击的实现可以参考 https://github.com/jflyup/nat_traversal 。不过实际中运营商不会允许同一 IP 同时占用那么多表项,所以成功率很低。 之前论坛里也有说 Frp 的 XTCP 模式会尝试猜测 nat4 端口,可以看看他们的算法: https://www.v2ex.com/t/995966 。 不过我从家宽连接教育网里的服务器(两边 NAT4 ),从来没成功过… |
2
icaolei 207 天前
膜拜一下,才几天时间就搓出这个项目了。这效率太强了。👍
|
3
mikewang OP @w568w #1
Address and Port-Dependent Filtering 对应的应该是 NAT3 ,这个还能通过 STUN 找到外部端口对应; NAT4 更严格,问题在于不知道外部端口。 生日攻击在理论上成立,但是实际上应用有点困难(和你所说的原因一样): 类似于 TCP 的 “最大连接数”,UDP 也存在类似限制(实质就是映射表项数量的限制)。 在我的环境测试,UDP “连接数” 到达 100 往上时,便出现随机丢包,超过 2000 便无法向新地址发包。 此时再怎么测都是无效的,因为实际上 UDP 包根本就没有发出去,甚至没有形成映射。 所以 N4 只能采用不那么暴力的方式预测,每次在小范围内(默认一轮 25 个端口)尝试,这样就存在成功的可能。 |
4
mikewang OP |
5
liuzimin 207 天前 via Android
前几天还看到有人说“现在哪还有没 IPv6 的”。。(反正我也没有)
|
9
lightionight 207 天前 via iPhone 2
国内 ISP 致力于让每一个客户都成为网络专家
|
10
Dk2014 206 天前
我虽然是 nat1 ,但是 tmd 有时候拨号完打洞,端口都不够用,只能开一个洞😅
这狗电信还设置了 2000 分钟拨号上限,直接给你整掉线 |
11
tivizi 206 天前
深圳联通,目前还是 NAT3
|
12
Satansickle 205 天前
@liuzimin 好像是我说的...orz
|
13
Satansickle 205 天前
LZ 真是既有技术又有闲心啊,base64 ( 5ZkAPJNc8P )看看有没有什么能够帮到 LZ 的
|
14
Satansickle 205 天前
@Satansickle 搞错了,eHN3d3BwcA==
|
15
hexo 205 天前
佩服执行力
|
16
mikewang OP @Satansickle 我们有交流群组:🐧: 657590400 / TG: https://t.me/hellonatter 欢迎加入讨论👏
|