NAT配置管理一、简介网络地址转换NAT(NetworkAddressTranslation)是将IP数据报文头中的IP地址转换为另一个IP地址的过程。随着Internet的发展和网络应用的增多,IPv4地址枯竭已成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足问题,但目前众多网络设备和网络应用大多是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术(如CIDR、私网地址等)的使用是解决这个问题最主要的技术手段。NAT主要用于实现内部网络(简称内网,使用私有IP地址)访问外部网络(简称外网,使用公有IP地址)的功能。当内网的主机要访问外网时,通过NAT技术可以将其私网地址转换为公网地址,可以实现多个私网用户共用一个公网地址来访问外部网络,这样既可保证网络互通,又节省了公网地址。作为减缓IP地址枯竭的一种过渡方案,NAT通过地址重用的方法来满足IP地址的需要,可以在一定程度上缓解IP地址空间枯竭的压力。NAT除了解决IP地址短缺的问题,还带来了两个好处:1、有效避免来自外网的攻击,可以很大程度上提高网络安全性。2、控制内网主机访问外网,同时也可以控制外网主机访问内网,解决了内网和外网不能互通的问题。二、原理一、NAT概述NAT是将IP数据报文头中的IP地址转换为另一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能。BasicNAT是实现一对一的IP地址转换,而NAPT可以实现多个私有IP地址映射到同一个公有IP地址上。1、BasicNATBasicNAT方式属于一对一的地址转换,在这种方式下只转换IP地址,而不处理TCP/UDP协议的端口号,一个公网IP地址不能同时被多个私网用户使用。图1BasicNAT示意图上图1描述了BasicNAT的基本原理,实现过程如下:1.Router收到内网侧Host发送的访问公网侧Server的报文,其源IP地址为10.1.1.100。2.Router从地址池中选取一个空闲的公网IP地址,建立与内网侧报文源IP地址间的NAT转换表项(正反向),并依据查找正向NAT表项的结果将报文转换后向公网侧发送,其源IP地址是162.105.178.65,目的IP地址是211.100.7.34。3.Router收到公网侧的回应报文后,根据其目的IP地址查找反向NAT表项,并依据查表结果将报文转换后向私网侧发送,其源IP地址是162.105.178.65,目的IP地址是10.1.1.100。由于BasicNAT这种一对一的转换方式并未实现公网地址的复用,不能有效解决IP地址短缺的问题,因此在实际应用中并不常用。NAT设备拥有的公有IP地址数目要远少于内部网络的主机数目,这是因为所有内部主机并不会同时访问外部网络。公有IP地址数目的确定,应根据网络高峰期可能访问外部网络的内部主机数目的统计值来确定。2、NAPT除了一对一的NAT转换方式外,网络地址端口转换NAPT(NetworkAddressPortTranslation)可以实现并发的地址转换。它允许多个内部地址映射到同一个公有地址上,因此也可以称为“多对一地址转换”或地址复用。NAPT方式属于多对一的地址转换,它通过使用“IP地址+端口号”的形式进行转换,使多个私网用户可共用一个公网IP地址访问外网。图2NAPT示意图上图2描述了NAPT的基本原理,实现过程如下:1.Router收到内网侧Host发送的访问公网侧Server的报文。比如收到HostA报文的源地址是10.1.1.100,端口号1025。2.Router从地址池中选取一对空闲的“公网IP地址+端口号”,建立与内网侧报文“源IP地址+源端口号”间的NAPT转换表项(正反向),并依据查找正向NAPT表项的结果将报文转换后向公网侧发送。比如HostA的报文经Router转换后的报文源地址为162.105.178.65,端口号16384。3.Router收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向NAPT表项,并依据查表结果将报文转换后向私网侧发送。比如Server回应HostA的报文经Router转换后,目的地址为10.1.1.100,端口号1025。二、NAT实现BasicNAT和NAPT是私网IP地址通过NAT设备转换成公网IP地址的过程,分别实现一对一和多对一的地址转换功能。在现网环境下,NAT功能的实现还得依据BasicNAT和NAPT的原理,NAT实现主要包括:EasyIP、地址池NAT、NATServer和静态NAT/NAPT。地址池NAT和EasyIP类似,此处只介绍EasyIP。1、EasyIPEasyIP方式可以利用访问控制列表来控制哪些内部地址可以进行地址转换。EasyIP方式特别适合小型局域网访问Internet的情况。这里的小型局域网主要指中小型网吧、小型办公室等环境,一般具有以下特点:内部主机较少、出接口通过拨号方式获得临时公网IP地址以供内部主机访问Internet。对于这种情况,可以使用EasyIP方式使局域网用户都通过这个IP地址接入Internet。图1EasyIP示意图如上图1所示,EasyIP方式的处理过程如下:1.Router收到内网侧主机发送的访问公网侧服务器的报文。比如收到HostA报文的源地址是10.1.1.100,端口号1540。2.Router利用公网侧接口的“公网IP地址+端口号”,建立与内网侧报文“源IP地址+源端口号”间的EasyIP转换表项(正反向),并依据查找正向EasyIP表项的结果将报文转换后向公网侧发送。比如HostA的报文经Router转换后的报文源地址为162.10.2.8,端口号5480。3.Router收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向EasyIP表项,并依据查表结果将报文转换后向内网侧发送。比如Server回应HostA的报文经Router转换后,目的地址为10.1.1.100,端口号1540。2、NATServerNAT具有“屏蔽”内部主机的作用,但有时内网需要向外网提供服务,比如提供服务。这种情况下需要内网的服务器不被“屏蔽”,外网用户可以随时访问内网服务器。NATServer可以很好地解决这个问题,当外网用户访问内网服务器时,它通过事先配置好的“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,将服务器的“公网IP地址+端口号”根据映射关系替换成对应的“私网IP地址+端口号”。图2NATServer实现原理图如上图2所示,NATServer的地址转换过程如下:1.在Router上配置NATServer的转换表项。2.Router收到公网用户发起的访问请求,设备根据该请求的“目的IP+端口号”查找NATServer转换表项,找出对应的“私网IP+端口号”,然后用查找结果替换报文的“目的IP+端口号”。外网主机发送的报文,其目的地址是209.102.1.68,端口号80,经Router转换后目的地址转换为192.168.1.68,端口号80。3.Router收到内网服务器的回应报文后,根据该回应报文的“源IP地址+源端口号”查找NATServer转换表项,找出对应的“公网IP+端口号”,然后用查找结果替换报文的“源IP地址+源端口号”。内网服务器回应外网主机的报文,其源地址是192.168.1.68,端口号80,经Router转换后源地址转换为209.102.1.68,端口号80。3、静态NAT/NAPT静态NAT是指在进行NAT转换时,内部网络主机的IP同公网IP是一对一静态绑定的,静态NAT中的公网IP只会给唯一且固定的内网主机转换使用。静态NAPT是指“内部网络主机的IP+协议号+端口号”同“公网IP+协议号+端口号”是一对一静态绑定的,静态NAPT中的公网IP可以为多个私网IP使用。静态NAT/NAPT还支持将指定私网范围内的主机IP转换为指定的公网范围内的主机IP。当内部主机访问外部网络时,如果该主机地址在指定的内部主机地址范围内,会被转换为对应的公网地址;同样,当公网主机对内部主机进行访问时,如果该公网主机IP经过NAT转换后对应的私网IP地址在指定的内部主机地址范围内,也是可以直接访问到内部主机。三、NATALGNAT和NAPT只能对IP报文的头部地址和TCP/UDP头部的端口信息进行转换。对于一些特殊协议,例如FTP等,它们报文的数据部分可能包含IP地址信息或者端口信息,这些内容不能被NAT有效的转换。解决这些特殊协议的NAT转换问题的方法就是在NAT实现中使用应用层网关ALG(ApplicationLevelGateway)功能。ALG是对特定的应用层协议进行转换,在对这些特定的应用层协议进行NAT转换过程中,通过NAT的状态信息来改变封装在IP报文数据部分中的特定数据,最终使应用层协议可以跨越不同范围运行。例如,一个使用内部IP地址的FTP服务器可能在和外部网络主机建立会话的过程中需要将自己的IP地址发送给对方。而这个地址信息是放到IP报文的数据部分,NAT无法对它进行转换。当外部网络主机接收了这个私有地址并使用它,这时FTP服务器将表现为不可达。目前支持ALG功能的协议包括:DNS、FTP、SIP、PPTP和RTSP。不同协议支持的NAT转换字段如表1所示。表1不同协议支持的NAT转换字段表应用协议做NAT变换的字段表1不同协议支持的NAT转换字段表应用协议做NAT变换的字段DNS响应报文中的IP和PortFTPPort请求报文中载荷里的IP和PortPassive响应报文中载荷里的IP和PortSIPRequestlineFromToContactViaOMessagebody的C字段地址和M字段的端口record-routerPPTP分PPTPClient在私网还是PPTPServer在私网两种场景:PPTPClient在私网,PPTPServer在公网时,仅对Client-Call-ID进行端口替换PPTPServer在私网,PPTPClient在公网时,仅对Server-Call-ID进行端口替换RTSPsetup/replyOK报文中的端口字段四、DNSMapping在某些应用中,私网用户希望通过域名访问位于同一私网的内部服务器,而DNS服务器却位于公网。由于通常DNS响应报文中携带的是内部服务器的公网IP地址,因此若NAT设备未将DNSServer解析的公网IP替换成内部服务器对应的私网IP,私网用户将无法通过域名访问到内部服务器。这个问题可以使用DNSMapping方式来解决,通过配置“域名—公网IP地址—公网端口—协议类型”映射表,建立内部服务器的域名与其公网信息间的对应关系。下图1描述了DNSMapping的基本原理。图1DNSMapping示意图如上图1所示,私网用户Host希望通过域名方式访问WebServer,Router作为NAT服务器。当Router设备收到DNS响应报文后,先根据其中携带的域名查找DNSMapping映射表,再根据“公网IP地址—公网端口—协议类型”查找WebServer,然后将DNS响应报文中的公网IP地址替换成WebServer的私网IP地址。这样,Host收到的DNS响应报文中就携带了WebServer的私网IP地址,从而可以通过域名来访问WebServer。五、NAT关联VPNNAT不仅可以使内部网络的用户访问外部网络,还允许内部网络中分属于不同VPN(VirtualPrivateNetwork)的用户通过同一个出口访问外部网络,解决内部网络中IP地址重叠的VPN同时访问外网主机的问题;NAT还支持VPN关联的NATServer,允许外部网络中的主机访问内网中分属不同VPN的服务器,同时支持内网多个VPN地址重叠的场景。1、VPN关联的源NATVPN关联的源NAT是指内部网络中分属于不同VPN的用户通过NAT技术访问外部网络,组网如下图1所示。图1VPN关联