没有公网 IP 的不必迷信 Full-Cone NAT

1 天前
 HawkinsSherpherd

其实有公网 IP 的也不用迷信 Full-Cone NAT ,有是不错,没有也不用强求。

RFC 4787 ( Network Address Translation (NAT) Behavioral Requirements for Unicast UDP )中,定义了使语音,游戏等 UDP 应用正常工作的 NAT 行为要求:

  1. 必须使用 Endpoint-Independent Mapping 的 NAT 映射模式
  2. 建议以“对齐”的方式从 IP 地址池中分配 NAT 地址
  3. 不可为不同的内部 IP:端口组合复用同样的 NAT 地址:端口组合
  4. 建议 NAT 网关以奇偶对称的方式分配端口
    • 奇数的内部端口分配奇数的外部端口,反之亦然
  5. UDP NAT 映射关系的存活时间不可低于两分钟
    • 例外情况:一些运行在公认端口范围( 0-1023 )内的应用
  6. 必须要有出方向的 NAT 映射关系存活时间刷新机制

Full-Cone NAT ( NAT 1 ),Restricted-Cone NAT ( NAT 2 )等术语的定义位于 RFC 3489 ( STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)) 中,它们都具有一个共同的特点:

从 NAT 1 到 NAT 3 ,它们都将相同的内部 IP:端口组合映射到同样的外部 IP:端口组合上,无论访问的外部主机 IP:端口组合如何,符合 Endpoint-Independent Mapping 的定义。它们都满足使语音,游戏等 UDP 应用正常工作的第一则要求。

而 Symmetric NAT ( NAT 4 ),理论和实践中都不满足使语音,游戏等 UDP 应用正常工作的要求:

  1. NAT 4 不对不同的外部主机 IP:端口组合复用 NAT 地址:端口组合,每发起对一个新的外部主机 IP:端口组合的通信都会生成一个不重复的 NAT 地址:端口映射,配合严格的过滤策略,使得隐藏在 NAT 4 之后的端点没有一个对除中转服务器之外的端点确定可用于外部主动连接的 NAT 地址:端口映射组合。
  2. NAT 4 严格的 NAT 过滤策略使现有的 NAT 映射关系无法被复用,即便服务器知道一个存在的外部端点,这个端点也只能给服务器用,不能给其它端点使用。

有的朋友可能会说了,NAT 1 和 NAT 2 理论上也能和 Symmetric NAT 打洞 P2P 通信,所以 Full-Cone NAT 是有意义的:

但这是规范之外的行为,只能与特定类型的用户打洞并不符合规范要求,无情地说,NAT 4 用户能不能打洞是不值得关心的,因为本来就不能。

而且,Full-Cone NAT 具有一定安全风险:

结论:如果只是个臭打游戏的,也没有公网 IP ,只要不是 NAT 4 ,日子都还过得去。

2522 次点击
所在节点    宽带症候群
31 条回复
wtks1
1 天前
但现在的网络都挺两极分化的,不是 nat1 就是 nat4 ,nat2 和 nat3 都没见过....
HawkinsSherpherd
1 天前
@wtks1 用 iptable 的路由器可能会有 NAT 3 ,因为 iptables 的 MASQUERADE 默认用 Endpoint-Independent Mapping 的 NAT 映射模式,而 iptables 的 NAT 过滤模式用的是 Address and Port-Dependent Filtering 。
6a82aa9bfe
1 天前
@HawkinsSherpherd 也就是说 openwrt 默认 nat4
lsylsy2
1 天前
@6a82aa9bfe linux 不打补丁都是的,不过 openwrt 一般都有 upnp/nat-pmp 所以问题不大
totoro625
1 天前
OP 想表达的意思是:NAT2/3 略差于 NAT1 但是依旧能用,等同于有公网 IP ,只要不是 NAT4 就行 吗?
HawkinsSherpherd
1 天前
@totoro625 对了一半,没有公网 IP 就是没有,无论是 NAT 1 还是 NAT 3 ,都没有能让任意外网主机随时主动连接的端口,即便是 NAT 1 也要用些奇技淫巧。
HFX3389
1 天前
说实话,我还没见过 NAT 2 和 NAT 3 ,而且一般来说网络管理都不会专门设置 NAT 吧,都是敲完命令通了就行,都是 NAT 4 。

> 只要不是 NAT 4 ,日子都还过得去。

但是只要是 NAT ,基本都是 NAT 4
amyw495062
1 天前
所以专线才是最优解,家宽的公网迟早都要没
amyw495062
1 天前
全广东联通现在新装没公网的应该基本都是入户 nat4 了,贴吧还有一群人舔着联通那 b 吃相,比移动贵还不如移动,移动好歹大部分还是 nat1
totoro625
1 天前
@amyw495062 #9 坐标江苏,两条移动,上传超过 200G 就掉 NAT4 了
想想光是 iPhone 备份,每天备份超过 5G 很快就超限了
amyw495062
1 天前
@totoro625 就算要这么执行也没办法,我们这边广东移动就还好,但也都是暂时的,谁知道以后呢,我们这都陆陆续续出现老用户电信和联通被回收公网的,虽然可以走投诉要回,但他们就是吃一个算一个,下一步电信移动估计也都是要学联通默认就直接入户 nat4 了,现在各大运营商为了应对 pcdn 只能一刀切
bibiisme
1 天前
但是运营商现在不是 nat1 就是 nat4 啊
jimao54
1 天前
我也觉得我们大广东很快就三网集体 nat4 了
titanium98118
1 天前
都公网 ip 了,nat 几不是自己说了算吗?
titanium98118
1 天前
@titanium98118 #14 sorry ,标题看错了
fengyaochen
1 天前
公网 IP 运营商 QOS UDP 和 NAT4 没啥区别
chouxw112233
1 天前
楼上说不是 1 就是 4
但我家就是 NAT3 ,换了个运营商也还是 3 ,是路由器拨号的
路由器关系吗
wtks1
1 天前
@chouxw112233 #17 这种情况,你家应该是 nat1 的,只是路由器的关系才变成 nat3
HawkinsSherpherd
1 天前
@wtks1 确实,我之前用家用路由器拨号是 NAT 1 ,换成 ER-X 之后就是 NAT 3 了。
frankilla
1 天前
公网 IP+full nat 。没感觉有啥用啊,我也不玩什么联机游戏。

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

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

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

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

© 2021 V2EX