什么是NAT?
NAT是一种在IP数据包传输过程中,将源IP地址或目标IP地址在私有网络和公有网络之间进行转换的技术。
通过NAT,私有网络中的设备可以使用私有IP地址进行内部通信,同时能够借助公有IP地址与互联网上的设备进行通信。这种方式不仅解决了IP地址不足的问题,还增强了网络的安全性。
NAT的功能
主要功能有以下几点:
- 节省公网IP地址:通过地址复用,多个私有IP地址可以共享一个公网IP地址进行通信。
- 增强安全性:NAT隐藏了内部网络的真实IP地址,使得外部网络难以直接访问内部设备,从而提高了网络的安全性。
- 控制访问:NAT可以控制哪些内部设备可以访问外部网络,以及哪些外部设备可以访问内部网络。
NAT的弊端
尽管在表面上看,NAT似乎真的没有缺点,除了节约公网IP资源外,它还可以保护我们内部网络的安全。但是,完美无缺的事物是不存在的。在享受了NAT所带来的便利后,NAT技术的缺陷也逐渐引起了人们的重视。
-
增加了网络的复杂性和不可预测性
NAT打破了IP网络的端到端通信模型,使得内部网络中的设备无法直接暴露给外部网络,这就导致该过程无法参与高层网络的一些协议,比如说非常重要的传输层协议——TCP和UDP,这对于需要建立稳定、持久连接的应用(如VoIP、视频会议等)来说,可能会引入额外的延迟、丢包或连接中断问题。
-
不能处理嵌入式IP地址或端口
由于NAT设备只能修改正常位于IP头部,它只能翻译那些正常位于IP首部中的地址信息和TCP/UDP首部中的端口信息。不能翻译那些嵌入到应用数据部分的IP地址或端口信息。
尽管IPv6提供了充足的地址空间,但在IPv4到IPv6的过渡期内,NAT仍然扮演着重要角色。然而,这种过渡并非一帆风顺,需要解决大量的兼容性和互操作性问题。即便在IPv6全面普及之后,NAT可能仍然会在某些特定场景下继续使用,比如出于安全考虑或为了简化网络管理等。但这并不意味着NAT是一个完美的解决方案,它仍然需要与其他技术和策略相结合,以提供更全面、更可靠的网络服务。
NAT的工作原理
NAT的工作原理可以概括为两个过程:地址转换和会话建立。
- 地址转换:当数据包从内网发往外网时,NAT会更改数据包的源IP地址为公网IP地址;当数据包从外网回复内网时,NAT会更改数据包的目标IP地址为对应的私有IP地址。
- 会话建立:NAT维护一个会话表,记录每个会话的源IP地址、目标IP地址、源端口号和目标端口号等信息。通过会话表,NAT能够正确地将数据包转发给目标设备。
NAT分类
根据NAT转换是对报文中的源地址进行转换还是对目的地址进行转换,NAT可以分为源NAT、目的NAT和双向NAT。
SNAT(源NAT)
源NAT在NAT转换时,仅对报文中的源地址进行转换,主要应用于私网用户访问公网的场景。
根据转换时是否同时转换源端口号,源NAT可以细分为如下几种类型,详见下图。
- NAPT在进行地址转换的同时还进行端口转换,可以实现多个私网用户共同使用一个公网IP地址上网。NAPT根据端口来区分不同用户,真正做到了地址复用。
DNAT(目的NAT)
目的NAT在NAT转换时,仅对报文中的目的地址和目的端口号进行转换,主要应用于公网用户访问私网服务的场景。当公网用户主机发送的报文到达NAT设备后,设备通过目的NAT技术将报文中的公网IPv4地址转换成私网IPv4地址,从而使公网用户可以使用公网地址访问私网服务。
根据转换前后的地址是否存在一种固定的映射关系,目的NAT可以细分为如下几种类型,详见下图。
- 使用NAT Server时,需要先在设备上配置公网地址和私网地址的固定映射关系。配置完成后,设备将会生成Server-Map表项,存放公网地址和私网地址的映射关系。该表项将一直存在除非NAT Server的配置被删除。
双向NAT
双向NAT指的是在转换过程中同时转换报文的源信息和目的信息。双向NAT不是一个单独的功能,而是源NAT和目的NAT的组合。双向NAT是针对同一条流,在其经过设备时同时转换报文的源地址和目的地址。双向NAT主要应用在同时有外网用户访问内部服务器和私网用户访问内部服务器的场景。