NAT功能
网络地址转换(Network Address Translation,NAT)是网络层的功能,用于将私有的局域网地址转换为公共网络地址,实现多个局域网设备共享同一个公共IP地址,解决IPv4地址短缺的问题。
NAT功能通过NAT设备来实现,路由器大都内置了NAT的功能,防火墙设备也经常集成了NAT功能,某些高级交换机可能包含NAT功能,还有专门的NAT设备。
地址映射关系
NAT实现的核心是地址映射关系,NAT设备维护着内部设备和公共网络之间的地址映射关系表,记录了内部设备私有IP地址、端口与NAT设备公共IP地址、端口之间的对应关系。映射表的具体结构可能会因NAT实现方式的不同而有所差异。如下简化示例:
内部IP:端口 | 外部IP:端口 | 协议 |
---|---|---|
192.168.1.2:1025 | 203.0.113.5:5001 | TCP |
192.168.1.3:8080 | 203.0.113.5:5002 | UDP |
192.168.1.4:3456 | 203.0.113.6:6001 | TCP |
NAT转换过程中同时也中转和传输数据,传输过程依赖传输层协议(TCP/UDP)。
NAT实现类型
- 静态NAT(Static NAT):网络管理员手动配置地址映射关系。这种方式映射是固定的,易于管理,但不够灵活,尤其是大型网络中。
- 动态NAT(Dynamic NAT):NAT设备会动态地配置地址映射关系,映射表是动态变化的。当新的内部设备启动连接时,NAT设备会创建新的映射表项;当连接结束或超时时,映射表项会被删除或释放。
- PAT(Port Address Translation):也称为NAPT(Network Address and Port Translation)。不仅进行IP地址的转换,还会转换端口号。多个内部设备共享同一个公共IP地址通过不同的端口号区分。
- Overloading: Overloading是PAT的一种实践方式。它使用端口号来区分不同的内部设备,通过在不同的协议层(例如TCP、UDP)和方向上使用相同的端口号,实现多个内部设备与一个公共IP地址之间的映射。
NAT的过程
- 内部设备发送数据包到NAT设备。
- NAT设备检查地址映射关系(映射表),存在映射关系则进行地址转换,将内部设备的IP地址和端口替换为对应的公共IP地址和端口。如果不存在映射关系,则NAT设备会创建新的映射关系。
- 经过地址转换后,NAT设备转发数据包到外部网络。
- 外部网络收到NAT设备转发的数据包后响应,NAT设备根据响应的数据包和地址映射关系进行反向地址转换,将目标IP地址和端口还原为原始的内部设备的IP地址和端口,并将数据包回传给内部设备。
配置与规则
- 可指定NAT设备处理的协议类型,例如TCP、UDP或同时支持TCP和UDP。
- 配置用于动态NAT允许的公共IP地址范围。NAT设备将从这个范围中选择可用的公共IP地址。
- 为每个动态映射关系配置允许的公共端口范围。这是支持PAT或Overloading的基础。
- 可配置排除某些IP地址或端口不进行动态NAT。
- 配置NAT设备指定连接的超时时间(即映射关系保持有效的时间)。配置允许建立的最大动态映射关系数量。
NAT设备会根据以上配置与规则进行动态NAT,动态NAT功能通常与DHCP一起使用,更有效地分配和管理内部设备的IP地址和动态NAT的映射关系。
DHCP(Dynamic Host Configuration Protocol)是一种网络协议,用于自动分配IP地址、子网掩码、默认网关等网络配置信息。