有人说不必迷信 Full-Cone NAT - 技术宅银魂 - 科技改变生活 - 万事屋

有人说不必迷信 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 应用正常工作的要求:

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

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

  • Full-Cone NAT 的 NAT 映射关系全网可用,可以让 Symmetric NAT 背后的端点主动连接 Full-Cone NAT 的端点。
  • Restricted-Cone NAT 只要向 Symmetric NAT 的外部地址发送“敲门报文”(敲自己的门)建立本地的 NAT 映射关系,之后 Symmetric NAT 就可以连过来了。

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

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

Full-Cone NAT 的 NAT 映射关系全网可用,如果你使用的应用安全设计薄弱,一旦 NAT 映射关系暴露(攻击者攻击应用服务器,或是端口扫描),则你的主机可能遭遇攻击。

结论:只要不是 NAT 4 ,日子都还过得去。

    没有回复内容

万事屋新帖