不懂就问,关于 NAT 打洞

3 月 16 日
 mooyo

不太懂网络 NAT 的原理。

如果是对称型 NAT ,假设有两台主机 A 和 B

A 有公网 IPv4 没有 IPv6 ,B 只有一个 NAT IP, IPv4 NAT OUT. IPv6 NAT IN.

现在我希望让 A 通过这个 NAT OUT 的 IP 连接到 B ,但是又不太能通过反向连接的方式实现。也就是常见的内网穿透,因为一些网络审计的原因,从 B 到 A 没法走加速包加速,丢包严重,但是从 A 到 B 是有加速包的。

这种情况下有可能让 B 打个洞出来让 A 主动连接么?

3183 次点击
所在节点    宽带症候群
15 条回复
kirafreedom
3 月 16 日
我家里网络就是内网 ipv4 ,用 stun 穿透打开一个 ipv4 公网端口,在外面通过这个端口回家
mooyo
3 月 16 日
@kirafreedom 我知道 NAT1 ,2 可以这样做,但是 NAT4 也行么?
basncy
3 月 16 日
能跑通的第一个包是从 B 到 A ,可以再开个贴先解决审计丢包问题。
totoro625
3 月 16 日
@mooyo #2 NAT4 只能靠猜测,历遍端口进行碰撞,参考: https://github.com/MikeWang000000/n4
yiranw09
3 月 16 日
对称型 NAT 要怎么打洞?
靠猜吗...
lmmir
3 月 16 日
还有就是走 upnp
cmj2010
3 月 16 日
To hit a 99.9% chance of success, we need each side to send 170,000 probes. At 100 packets/sec, that’s 28 minutes of trying before we can communicate.
source: https://tailscale.com/blog/how-nat-traversal-works
v2er119
3 月 16 日
B 提供 SSH Server
wanghanthu
3 月 16 日
@yiranw09 UDP 可以靠穷举,TCP 估计是不现实了
superkkk
3 月 16 日
要不让 b 连 a 开个 ssh 隧道?
n43635
3 月 17 日
B 开 ssh 服务器,通过 frpc ( A 做服务端,B 做客户端)等将 ssh 端口映射到 A 上,A 再通过映射的 ssh 端口连接 B ,必要时可以使用 ssh 隧道
yulgang
3 月 17 日
@n43635 本质还是 B 连 A ,用不到加速包
Ipsum
3 月 17 日
B 需要至少主动向 A 发送一次数据,不然防火墙不会连接映射。如果只要是 B 主动发起的都吃不到加速包,那基本上可以放弃了。
dream2cast
3 月 18 日
NAT4 打洞在 EasyTier 中有个选项可以禁用的,不禁用的话,纯靠猜。NAT4 还有个 EasyInc 的类型,好像有规律,容易猜中一点。
flynaj
3 月 21 日
看你 b 的 Nat 等级。fullclone 可以,目前只有 EasyTier 可以实现,你自己下载测试一下,可以配合 Natmap.

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

https://v2ex.xtra.eu.org/t/1198496

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

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

© 2021 V2EX