NAT概念介绍

106 阅读3分钟

网络上充满了各种关于NAT(Network Address Traversal)的介绍文章,大量的文章信息描述停留在2003年的ietf-rfc3489,该rfc将NAT类型定义为下列四种:

NAT类别中文
Full Cone完全锥形
Restricted ConeIP受限锥形
Port Restricted ConePort受限锥形
Symmetric对称型

随着网络技术的快速发展和IPV6的规模部署,NAT与20年前已大不相同,NAT穿透的技术需求和方法也已经调整和变化。 ietf-RFC5389对NAT进行了新的定义,新的定义从两个方面去观察NAT的行为:

  • NAT映射: 内网应用的IP:port在NAT上ip:port的映射行为,可以分为两类

端点无关 NAT 映射: 同一个内网应用绑定的IP:Port,在与不同的外部服务IP:port进行通信时,在NAT上映射的IP:Port是相同的。比如你的一个UDP应用,内网绑定的socket为ip1:port1,当你使用该socket与外部的服务器1 ip2:port2和外部的服务器2 ip3:port3进行通信时,2个外部服务器看到的NAT映射的ip:port是一样的。如下图所示,这种行为常见于家用NAT:

flowchart BT
 subgraph s4["内网UDP应用"]
        s41["192.168.0.1:10000"]
  end
  
 subgraph s3["NAT映射"]
        s31["123.123.123.123: 11223"]
  end
  
 subgraph  
 subgraph s1["服务器1"]
        s11["111.123.123.123: 12345"]
  end
 subgraph s2["服务器2"]
        s21["211.223.223.223: 22345"]
  end
  end
  
  s4 --> s3
  s3 --> s1 
  s3 --> s2     

端点相关 NAT 映射: 同一个内网应用绑定的IP:Port,在与不同的外部服务IP:port进行通信时,在NAT上映射的IP:Port是不同的。如下图所示,这种行为常见于企业级NAT防火墙。

flowchart BT
 subgraph s4["内网UDP应用"]
        s41["192.168.0.1:10000"]
  end
  
 subgraph s3["NAT映射"]
        s31["123.123.123.123: 11223"]
        s32["123.123.123.123: 11224"]
  end
  
 subgraph  
 subgraph s1["服务器1"]
        s11["111.123.123.123: 12345"]
  end
 subgraph s2["服务器2"]
        s21["211.223.223.223: 22345"]
  end
  end
  
  s4 --> s31
  s4 --> s32
  s31 --> s1 
  s32 --> s2     
  • NAT防火墙行为:这里的防火墙行为是指,当内部UDP应用向外部服务A1发送报文,NAT已经为该应用分配了IP:port。当其他外部服务器A2/A3等等向该NAT的IP:port发送报文时,NAT防火墙对这些报文处理的行为分类。

比如下图有2个服务器,服务器1地址为111.123.123.123,服务器2地址为211.223.223.223。服务器1上有两个应用A1和A2,端口分别为12345和54321,服务器2上有1个服务A3,端口为22345。内部UDP应用访问服务器1上的111.123.123.123:12345应用,NAT为该访问映射IP为123.123.123.123:11223。

flowchart BT
 subgraph s4["内网UDP应用"]
        s41["192.168.0.1:10000"]
  end
  
 subgraph s3["NAT映射"]
        s31["123.123.123.123: 11223"]
  end
  
 subgraph  
 subgraph s1["服务器1"]
        s11["A1 111.123.123.123: 12345"]
        s12["A2 111.123.123.123: 54321"]
  end
 subgraph s2["服务器2"]
        s21["A3 211.223.223.223: 22345"]
  end
  end
  
  s4 --> s3

  s3 --> s11 
   

端点无关防火墙 :当A2与A3发送报文到NAT映射IP:port 123.123.123.123:11223时,如果NAT允许这些报文进入NAT内部,这类防火墙称为端点无关防火墙

端点相关防火墙(仅限目标 IP):当A2与A3发送报文到NAT映射IP:port 123.123.123.123:11223时,如果NAT允许与A1 IP地址相同的A2应用的报文进入NAT内部,不允许A3的报文进入,这类防火墙称为端点相关防火墙(仅限目标 IP)

端点相关防火墙(目标 IP + 端口):当A2与A3发送报文到NAT映射IP:port 123.123.123.123:11223时,如果NAT不允许A2应用的报文进入NAT内部,也不允许A3的报文进入NAT内部,这类防火墙称为端点相关防火墙(目标 IP + 端口)

基于上述对NAT端口映射的行为、NAT防火墙对进入报文的行为进行组合,将rfc3489定义的4种NAT放入其中:

端点无关 NAT 映射端点相关 NAT 映射(所有类型)
端点无关防火墙全锥NAT不适用*
端点相关防火墙(仅限目标 IP)限制性锥形 NAT不适用*
端点相关防火墙(目标 IP + 端口)端口限制锥形 NAT对称 NAT

标注<不适用*>的格,是表示理论上存在这种情况,但是目前现实世界网络中不存在这种NAT设备。

回顾:本文介绍了RFC5389对NAT类型的定义,通过从NAT映射行为和NAT防火墙行为进行组合,解释现实网络中不同的NAT类型。