之前看了这篇文章,
https://xinyuehtx.github.io/post/%E7%90%86%E8%A7%A3NAT%E7%A9%BF%E8%B6%8A.html上面介绍了常见的 NAT 类型,但我主要对 NAT 的穿透可行性有所疑问。
原文所属,端口受限型 NAT 与 端口受限型 NAT 之间是可以打洞的,但我认为不可行,或者说,应该不是完全可行的。
假如有两地 A ,B ; A ( 1.1.1.1 ),B ( 2.2.2.2 )。
A 地内网主机 X(10.0.0.1),B 地内网主机 Y(11.0.0.2)
按照他的说法,我们可以先连上一个公网节点 C ,C 可以得知 A 、B 实际公网地址,随后要求 X 主机(10.0.0.1) 向 B 的公网(2.2.2.2)发包,10.0.0.1:4000 映射为 1.1.1.1:1001 向 2.2.2.2:8000 发送数据包(在这里 8000 端口应该是可以任意的)。
那么此时,2.2.2.2:8000 可以与 1.1.1.1:1001 通信。 但是问题是,B 地内网主机 Y ( 11.0.0.2 ),与 10.0.0.1:4000 发送数据包通信时,路由器不一定映射为 2.2.2.2:8000 ,有可能映射为 2.2.2.2:1234 与 1.1.1.1:1001 进行通信,此时 A 地路由器由于端口不一致则会拒绝接受数据包。
因此,以上场景中只有当 B 地路由器分配主机 Y ( 11.0.0.2 )与 1.1.1.1:1001 通信的端口恰好为 8000 时,才可能实现穿透吧。
可能我的理解有误,希望大家积极指正,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/829589
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.