NAT即网络地址转换(Network Address Translation),又称网络掩蔽或IP掩蔽。是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只能通过少量甚至一个公有IP地址访问因特网的私有网络中。


什么是NAT

NAT定义

NAT即网络地址转换(Network Address Translation),又称网络掩蔽或IP掩蔽。是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。例如,当我们在家里用电脑或手机连接无线路由器上网时,在手机/电脑上看到被分配的IP可能为192.168.X.X的本地局域网IP,而通过互联网上的搜索引擎或IP查询服务查询本机IP时,看到的会是另外一个IP。这个IP变化的过程,就是NAT的应用。

在家庭和企业办公网络甚至是网络运营商层面,NAT是一个方便且得到了广泛应用的技术。但同时,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。

NAT类型

目前常用的NAT模式,主要有静态NAT、动态NAT和NAPT(网络地址端口转换)三种

静态NAT

静态NAT是最简单的地址转换技术,它是将每个需要转换的内网IP地址,固定的映射到唯一对应的公网IP地址,也就是内网IP与公网IP一一映射。使用静态NAT方式,需要与内网地址数量相同的公网IP资源。因此,静态NAT技术,并无法应对IP资源稀缺的问题,只是对外隐藏了内部主机的真实地址,在一定程度上起到保护内部主机的作用。同时,让外部主机可以间接访问到内部的服务器。这种NAT方式,现在的应用相对较少。

静态NAT

动态NAT

动态NAT适用于拥有多个公网IP地址资源,同时公网IP数量小于内网地址数量,而又大于内网对外并发连接数量的环境。一般是由NAT服务器维护一个公网IP的地址池。当内网主机需要访问公网时,以随机或按照特定规则的方式,从公网IP地址池中选取一个公网IP,与内网主机的内网IP建立临时映射关系,并根据这个映射关系,对内网主机与公网通信的报文进行地址转换,实现内外网之间的通信。

动态NAT

网络地址端口转换NAPT

网络地址端口转换(NAPT)可以视为是动态NAT的一种改进技术,它将内网IP和公网IP的映射关系细化为了内网IP+端口和公网IP+端口的映射关系。这种方式大大增加了一个公网IP所能同时映射的内网访问服务的数量,在绝大多数情况下,内部网络中的所有主机可以共享一个外部IP地址实现对Internet的访问。也就是说,NAPT模式可以最大限度的节约IP地址资源。因此,在家庭、小型企业等大多数场景下,都主要采用了NAPT模式的网络地址转换。

根据实现机制的差异,NAPT可以分为完全圆锥型(Full Cone)、地址受限圆锥型(Address-Restricted Cone)、端口受限圆锥型(Port-Restricted Cone)和对称型(Symmetric)四大类型。

完全圆锥型NAT

一个内部地址iAddr:iPort映射到外部地址eAddr:ePort,则所有来自iAddr:iPort的报文,都将源地址转换为eAddr:ePort然后向外发送。而任意的外部主机,都可以通过eAddr:ePort地址将报文发送给内部地址iAddr:iPort。

完全圆锥型NAT

地址受限圆锥型NAT

一个内部地址iAddr:iPort映射到外部地址eAddr:ePort,必须先通过eAddr:ePort向某一目的地址dAddr:dPort发送报文,dAddr的任意端口才可以通过eAddr:ePort向内部地址发送回应报文。

地址受限圆锥型NAT

端口受限圆锥型NAT

一个内部地址iAddr:iPort映射到外部地址eAddr:ePort,必须先通过eAddr:ePort向某一目的地址dAddr:dPort发送报文,dAddr:dPort地址才可以通过eAddr:ePort向内部地址发送回应报文。

即端口受限圆锥型相较于地址受限圆锥型,添加了对外部地址回应报文的源端口限制。

端口受限圆锥型NAT

对称型NAT

每个内部IP+端口与一个目的IP+端口的通信,映射到唯一的外部端口,同一个内部IP+端口在访问不同的目的IP+端口时,会映射到不同的外部端口。而目的IP+端口必须在收到请求报文后,才可以通过对应映射的外部IP+端口,向内部地址发送回应报文。

对称型NAT