网络上充满了各种关于NAT(Network Address Traversal)的介绍文章,大量的文章信息描述停留在2003年的ietf-rfc3489,该rfc将NAT类型定义为下列四种:
| NAT类别 | 中文 |
|---|---|
| Full Cone | 完全锥形 |
| Restricted Cone | IP受限锥形 |
| Port Restricted Cone | Port受限锥形 |
| 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类型。