NAT基本原理及应用

NAT基本原理及应用

一、关于NAT
NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有IP翻译成合法网络IP地址的技术,可以认为,NAT在一定程度上有效解决公网地址不足的问题。
二、名词理解
2.1公有IP
公有IP也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址。
2.2私有IP
私有IP也叫内部地址,属于非注册地址,专门为组织机构内部使用。因特网分配编号委员会(IANA)保留了3块IP地址作为私有IP地址:
10.0.0.0 ——— 10.255.255.255
172.16.0.0——— 172.31.255.255
192.168.0.0———192.168.255.255
2.3地址池
地址池是由外部地址组合而成,当内部网络通过地址转换到达外部网络时,将会在地址池中选择某个IP作为数据包的源IP,这样可以有效利用用户外部地址,提高访问外部网络能力。
三、分类
NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)
NAT基本原理及应用
图1
3.1静态NAT
通过手动设置,将Internet客户进行的通信映射到某个特定的私有网络地址和端口,如果想让连接在Internet中的计算机访问并使用私有网络的服务器(如:网站服务器,程序游戏),那么静态映射是必须的,静态映射不会从NAT表中删除。
内网IP与公网IP属于一对一的映射关系,用此方法一般是内部IP地址较少,或者机构能够申请到足够的公网IP,同时优先级是最高的,静态NAT可做SNAT,DNAT。
3.2动态NAT
动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要用于拨号,当用户远程连接成功之后,动态地址NAT会分配给它一个IP地址,当用户断开连接时,这个IP地址会被释放,处于待使用状态。
动态NAT方式适用于当机构申请到的全局(公网)IP地址较少而内部网络主机较多的情况,内网主机IP与全局IP地址是多对一的关系。当数据包进出内网时,具有NAT功能的设备对数据包的处理与静态NAT一样,只是动态NAT对应的NAT-TABLE表的记录是动态的,如果内网主机在一定时间内没和外部网络通信,有关它的IP地址映射关系将会被删除,并把该全局IP分配给新的IP数据包使用,形成新的NAT-TABLE记录。
3.3网络地址端口转换NAPT
网络地址端口转换NAPT(Network Address Port Translation)则是把内部地址映射到外部网络的一个IP地址的不同端口上。它可以将中小型网络隐藏在一个合法的IP地址后面。与动态NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加一个由NAT设备选定的端口号。
NAPT是使用最普遍的一种转换方式,它又包含两种转换方式:SNAT和DNAT
(1)源NAT(Source NAT ,SNAT):修改数据包的源地址,源NAT改变第一个数据包的来源地址,它永远在数据包发送到网络之前完成,如数据包伪装就属于SNAT。)
(2)目的NAT(Destination NAT ,DNAT):修改数据包的目的地址,源NAT与目的NAT正好相反,它是改变第一个数据包的目的地址,如平衡负载、端口转发和透明代理就属于DNAT。
四、NAT实现方式
4.1全锥NAT(Full Cone NAT)
完全圆锥型NAT,将从一个内部IP地址和端口来的所有请求,都映射到相同的外部IP地址和端口。并且,任何外部主机通过向映射的外部地址发送报文,都可以实现和内部主机进行通信。只要建立了内部网络的IP地址和端口与公网IP地址和端口的映射关系,所有的Internet上的主机都可以访问该NAT之后的主机。
NAT基本原理及应用
图2
4.2地址限制性锥NAT(Address-Restricted Cone NAT)
地址限制圆锥型NAT也是将从相同的内部IP地址和端口来的所有请求映射到相同的公网IP地址和端口。但是与完全圆锥型NAT不同,当且仅当内部主机之前已经向公网主机发送过报文,此时公网主机才能向内网主机发送报文。
NAT基本原理及应用
图3
4.3端口限制性锥NAT(Port Restricted Cone NAT)
端口限制性锥NAT与限制性锥NAT类似,只是多了端口号的限制。端口受限圆锥型NAT增加了端口号的限制,当前仅当内网主机之前已经向公网主机发送了报文,公网主机才能和此内网主机通信。如果pc3在收到包时自己的端口是6666, 回包时将自己的端口改为了7777,此时数据包无法通过nat映射的公网地址发现内网。
NAT基本原理及应用
图4
4.4对称NAT(Symmetric NAT)
对称型NAT把从同一内网地址和端口到相同目的地址和端口的所有请求,都映射到同一个公网地址和端口。如果同一个内网主机,用相同的内网地址和端口向另外一个目的地址发送报文,则会用不同的映射。这和端口限制型NAT不同,端口限制型NAT是所有请求映射到相同的公网IP地址和端口,而对称型NAT是不同的请求有不同的映射。
NAT基本原理及应用
图5
五、NAT原理
5.1地址转换
说明:nat地址的转换过程
当私有网络主机和公有网络主机通信的IP数据包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
NAT基本原理及应用
图6
NAT基本原理及应用
图7
5.2连接跟踪
说明:nat映射表的作用
在上述过程中图6,NAT Gateway在收到响应包后,就需要判断将数据包转发给谁。如果内网只有少量客机,则可以通过静态NAT指定,如果有多台客机,并且各自访问的不同网站,这时就需要连接跟踪(Connection Truck)。如下图:
NAT基本原理及应用
图8
当NAT Gateway收到客机的请求数据包时,做SNAT并记录保存。
当NAT Gateway收到服务器发来的响应包时,查找Track Table确认转发目标,根据记录做DNAT,转发给客机。
5.3端口转发
说明:主要用于多客户端同时访问外网,nat gw的回包处理
(1)以上述客户机访问服务器图6举例:当只有一台客机访问时,NAT Gateway只需要改数据包的源或者目的IP即可正常通信。
(2)ClientA与ClientB同时访问WEB Server,当NAT Gateway收到服务器发来得响应包时,无法判断将数据包转发给谁如图9,此时就需要NAT Gateway在Connection Track中加入端口信息加已区分,如果两客机源端口正好相同,那么在做SNAT,DNAT时同时对应的源端口也需要转换如图10。
NAT基本原理及应用
图9
NAT基本原理及应用
图10
六、NAT的应用
NAT主要可以实现以下几个功能:
数据包伪装:改内部网络IP为统一信息,隐藏内网拓扑,不暴露内网主机,实现共享上网。
平衡负载:DNAT转换时,如内部有多台服务器,外网访问内部服务器时,可以进行随机选择。
端口转发:内网主机为外网提供服务时,由于是内部私有IP外网无法直接访问,因此需要在网关上进行端口转发,将特定服务的数据包转发给内网主机,所有访问外网公共网络的请求都将自动转向内网IP地址,而这个过程对用户来说是透明的。
七、NAT举例
7.1静态NAT

NAT基本原理及应用
图11
如图11,内网用户对外进行访问时,数据包的源地址发生了变化,但是由于此时采用的是静态NAT,所以数据包的源地址(192.168.0.1)变成了NAT设备接入外网的公网地址,即图中所示的220.16.249.1,数据包返回的时候会将目的地址为220.16.249.1的数据包进行修改,目的地址将改为192.168.0.1。
7.2动态NAT
NAT基本原理及应用
图12
图12中,内网地址为192.168.0.1的主机想要访问外网地址为221.16.175.1的服务器,中间的NAT设备在接收到内网地址发出的访问数据包后,将从所定义好的地址池中选取一个地址,将数据包的源地址改写为该地址,数据包的源地址发生了变化,当数据返回时,NAT设备将依照地址的对应关系,将发向这个地址的数据包的目的地址改为192.168.0.1。
7.3 PNAT
NAT基本原理及应用
图13
如图13所示,当多个用户同时使用NAT的时候,使用PNAT技术。当192.168.0.1向服务器发起HTTP访问,其发送的数据包端口为1024,目的端口为80;当192.168.0.2向服务器也发起HTTP访问时,假设其发送端口也是1024,目的端口为80。则此时在NAT设备上需要进行端口的修改。PNAT的端口修改是按照访问主机的先后顺序进行+1操作的。当192.168.0.1用户先发起了访问,NAT设备不做端口修改,只将源地址改为220.16.249.1然后转发,当192.168.0.2发起访问后,由于1024端口被占据,所以将其端口号+1,变为1025,同时修改源地址,然后转发。当数据返回时,分别按照NAT表中的对应关系进行转发就可以了。