NAT配置管理
一、简介
网络地址转换NAT(Network Address Translation)是将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地址)的功能。Basic NAT是实现一对一的IP地址转换,而NAPT可以实现多个私有IP地址映射到同一个公有IP地址上。 1、Basic NAT
Basic NAT方式属于一对一的地址转换,在这种方式下只转换IP地址,而不处理TCP/UDP协议的端口号,一个公网IP地址不能同时被多个私网用户使用。
图1 Basic NAT示意图
上图1描述了Basic NAT的基本原理,实现过程如下:
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。
由于Basic NAT这种一对一的转换方式并未实现公网地址的复用,不能有效解决IP地址短缺的问题,因此在实际应用中并不常用。
NAT设备拥有的公有IP地址数目要远少于内部网络的主机数目,这是因为所有内部主机并不会同时访问外部网络。公有IP地址数目的确定,应根据网络高峰期可能访问外部网络的内部主机数目的统计值来确定。
2、NAPT
除了一对一的NAT转换方式外,网络地址端口转换NAPT(Network Address Port Translation)可以实现并发的地址转换。它允许多个内部地址映射到同一个公有地址上,因此也可以称为“多对一地址转换”或地址复用。
NAPT方式属于多对一的地址转换,它通过使用“IP地址+端口号”的形式进行转换,使多个私网用户可共用一个公网IP地址访问外网。
图2 NAPT示意图
上图2描述了NAPT的基本原理,实现过程如下:
1. Router收到内网侧Host发送的访问公网侧Server的报文。比如收到Host A报文的源地址是10.1.1.100,端口
号1025。
2. Router从地址池中选取一对空闲的“公网IP地址+端口号”,建立与内网侧报文“源IP地址+源端口号”间
的NAPT转换表项(正反向),并依据查找正向NAPT表项的结果将报文转换后向公网侧发送。比如Host A的报文经Router转换后的报文源地址为162.105.178.65,端口号16384。
3. Router收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向NAPT表项,并依据查表结
果将报文转换后向私网侧发送。比如Server回应Host A的报文经Router转换后,目的地址为10.1.1.100,端口号1025。
二、NAT实现
Basic NAT和NAPT是私网IP地址通过NAT设备转换成公网IP地址的过程,分别实现一对一和多对一的地址转换功能。在现网环境下,NAT功能的实现还得依据Basic NAT和NAPT的原理,NAT实现主要包括:Easy IP、地址池NAT、NAT Server和静态NAT/NAPT。
地址池NAT和Easy IP类似,此处只介绍Easy IP。 1、Easy IP
Easy IP方式可以利用访问控制列表来控制哪些内部地址可以进行地址转换。 Easy IP方式特别适合小型局域网访问Internet的情况。这里的小型局域网主要指中小型网吧、小型办公室等环境,一般具有以下特点:内部主机较少、出接口通过拨号方式获得临时公网IP地址以供内部主机访问Internet。对于这种情况,可以使用Easy IP方式使局域网用户都通过这个IP地址接入Internet。
图1 Easy IP示意图
如上图1所示,Easy IP方式的处理过程如下:
1. Router收到内网侧主机发送的访问公网侧服务器的报文。比如收到Host A报文的源地址是10.1.1.100,端口
号1540。
2. Router利用公网侧接口的“公网IP地址+端口号”,建立与内网侧报文“源IP地址+源端口号”间的Easy IP
转换表项(正反向),并依据查找正向Easy IP表项的结果将报文转换后向公网侧发送。比如Host A的报文经Router转换后的报文源地址为162.10.2.8,端口号5480。
3. Router收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向Easy IP表项,并依据查表
结果将报文转换后向内网侧发送。比如Server回应Host A的报文经Router转换后,目的地址为10.1.1.100,端口号1540。
2、NAT Server
NAT具有“屏蔽”内部主机的作用,但有时内网需要向外网提供服务,比如提供WWW服务或者FTP服务。这种情况下需要内网的服务器不被“屏蔽”,外网用户可以随时访问内网服务器。
NAT Server可以很好地解决这个问题,当外网用户访问内网服务器时,它通过事先配置好的“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,将服务器的“公网IP地址+端口号”根据映射关系替换成对应的“私网IP地址+端口号”。
图2 NAT Server实现原理图
如上图2所示,NAT Server的地址转换过程如下:
1. 在Router上配置NAT Server的转换表项。
2. Router收到公网用户发起的访问请求,设备根据该请求的“目的IP+端口号”查找NAT Server转换表项,找
出对应的“私网IP+端口号”,然后用查找结果替换报文的“目的IP+端口号”。外网主机发送的报文,其目的地址是209.102.1.68,端口号80,经Router转换后目的地址转换为192.168.1.68,端口号80。 3. Router收到内网服务器的回应报文后,根据该回应报文的“源IP地址+源端口号”查找NAT Server转换表项,
找出对应的“公网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地址在指定的内部主机地址范围内,也是可以直接访问到内部主机。
三、NAT ALG
NAT和NAPT只能对IP报文的头部地址和TCP/UDP头部的端口信息进行转换。对于一些特殊协议,例如FTP等,它们报文的数据部分可能包含IP地址信息或者端口信息,这些内容不能被NAT有效的转换。解决这些特殊协议的NAT转换问题的方法就是在NAT实现中使用应用层网关ALG(Application Level Gateway)功能。
ALG是对特定的应用层协议进行转换,在对这些特定的应用层协议进行NAT转换过程中,通过NAT的状态信息来改变封装在IP报文数据部分中的特定数据,最终使应用层协议可以跨越不同范围运行。
例如,一个使用内部IP地址的FTP服务器可能在和外部网络主机建立会话的过程中需要将自己的IP地址发送给对方。而这个地址信息是放到IP报文的数据部分,NAT无法对它进行转换。当外部网络主机接收了这个私有地址并使用它,这时FTP服务器将表现为不可达。
目前支持ALG功能的协议包括:DNS、FTP、SIP、PPTP和RTSP。不同协议支持的NAT转换字段如表1所示。 表1 不同协议支持的NAT转换字段表 应用协议 做NAT变换的字段 表1 不同协议支持的NAT转换字段表 应用协议 DNS FTP 做NAT变换的字段 响应报文中的IP和Port ? ? Port请求报文中载荷里的IP和Port Passive响应报文中载荷里的IP和Port Request line From To Contact Via O Message body的C字段地址和M字段的端口 record-router SIP ? ? ? ? ? ? ? ? PPTP 分PPTP Client在私网还是PPTP Server在私网两种场景: ? PPTP Client在私网,PPTP Server在公网时,仅对Client-Call-ID进行端口替换 ? PPTP Server在私网,PPTP Client在公网时,仅对Server-Call-ID进行端口替换 setup/reply OK报文中的端口字段 RTSP
四、DNS Mapping
在某些应用中,私网用户希望通过域名访问位于同一私网的内部服务器,而DNS服务器却位于公网。由于通常DNS响应报文中携带的是内部服务器的公网IP地址,因此若NAT设备未将DNS Server解析的公网IP替换成内部服务器对应的私网IP,私网用户将无法通过域名访问到内部服务器。
这个问题可以使用DNS Mapping方式来解决,通过配置“域名—公网IP地址—公网端口—协议类型”映射表,建立内部服务器的域名与其公网信息间的对应关系。
下图1描述了DNS Mapping的基本原理。