NAT技术白皮书
关键词:NAT NAPT
摘 要:NAT是一种地址转换技术,主要用于本地私有IP地址和全局公网IP地址之间的转换,从而实现私网主机对公网或者公网对私网主机的访问。本文介绍了NAT的基本概念、实现方案和典型组网应用。
缩略语:
缩略语 | 英文全名 | 中文解释 |
NAT | Network Address Translation | 网络地址转换 |
NAPT | Network Address and Port Translation | 网络地址和端口转换 |
VPN | Virtual Private Networks | 虚拟私有网络 |
NP | Network Processor | 网络处理器 |
Internet面临着最紧迫的问题是IP地址枯竭。针对这个问题,有两种解决方案:NAT和IPV6。NAT通过地址重用的方式来满足IP地址的需要,它主要是利用了这样一个事实:在一些域中(像一个公司的网络),在一段给定的时间内只有很少的主机需要访问域外的网络,80%左右的网络流量都局限于域内部。因此,这些域内的主机都使用私网IP地址(IANA保留了三个网段作为私网地址:10.0.0.0/8、172.16.0.0/12、 192.168.0.0/16),私网地址无需全球唯一,在不同的私网内可以重复使用,当需要访问域外的网络时,它们的IP地址转换成公网IP地址。
基于MPLS技术的MPLS L3 VPN技术既继承了IP选路技术的优点,又集成了MPLS技术转发快、组网灵活多变的特点,已经得到了越来越广泛的应用,特别是在比较大型的企业网中, MPLS L3 VPN技术可以使网络构架更清晰,维护更方便,性能更稳定,访问更安全。如果在MPLS L3 VPN中再集成NAT功能,那么可以进一步隐藏掉用户的私有网络,提高用户网络的安全性;同时还可以实现地址重用,节省了用户投资。NAT多实例实现了NAT功能与MPLS L3 VPN完美结合,通过NAT用户不仅可以实现Internet访问,还可以解决VPN间地址冲突的问题,私网主机地址转换后可以实现对其他VPN的访问。
l NAT (Network Address Translation)
网络地址转换:一种地址转换技术,主要用于本地私有IP地址和全局公网IP地址之间的转换,从而实现私网主机对公网或者公网对私网主机的访问。通常泛指的NAT包括了NAT和NAPT,本文后面所指的NAT没有特别说明,均泛指NAT和NAPT两种变换。
l NAPT (Network Address and Port Translation)
网络地址和端口转换:NAPT利用了TCP/UDP的IP地址和端口号来区别不同的内部网主机,对于ICMP则是利用ICMP报文的IP地址和Identifier来区别。除非特别说明,本文中IP报文的端口号指TCP/UDP的端口号或ICMP报文的Identifier。采用NAPT技术则可以更加充分地利用IP地址资源,实现更多的内部网主机对Internet的同时访问。
l VPN (Virtual Private Networks )
虚拟专用网,可以简单定义为在共享网络中,通过多种技术(如MPLS、隧道、加密等)实现原有专用网络的能力。
本文档内VPN定义,如果没有特别说明,专指三层VPN(BGP/MPLS VPN)。
l PE (Provider Edge)
运营商边缘:在VPN中位于运营商公网与用户私网直接相连的位置,该位置的用来接入用户私网的设备为运营商边缘(PE)设备。
l CE (Customer Edge)
用户边缘:在VPN中用户私网与运营商公网直接相连接的位置,对应接入公网的用户设备为CE设备。
l ALG (Application Layer Gateway)
应用层网关:ALG是NAT设备对特定应用协议报文(如ICMP目的不可达报文,FTP报文,ILS报文等)的特殊NAT转换处理。应用协议报文需要ALG处理的原因主要是:
某些应用层协议会在客户机和服务器之间协商端口号,NAT转换表项的建立需要根据报文协商的结果确定;
报文的载荷部分有私网IP地址或者端口的信息。
l FTP (File Transfer Protocol)
文件传输协议:用于文件传输的Internet应用层协议标准,用于将一个完整的文件从一个文件系统复制到另一个系统中。
l DNS (Domain Name System)
域名系统:域名系统是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。
l ILS (Internet Location Service)
互联网定位服务:ILS是微软公司为Netmeeting用户提供的动态目录服务功能,通过ILS,用户可以存储和查询动态信息(例如IP地址)。
l NP (Network Processor)
网络处理器:一种用于数据报文处理的可编程、高性能网络专用处理器。
纯NAT方式只转换IP地址,对端口号不处理,具体请参见下图:

图1 NAT方式基本原理
(1) NAT设备接收到私网用户发出的访问公网主机报文。
(2) NAT设备从地址池中选择一个没有使用的公网地址、建立NAT转换表项(正反向)。
(3) 根据私网源IP地址查找正向NAT表项,根据查表结果转换报文,向公网侧发送。
(4) NAT设备接收到公网侧的回应报文,根据目的IP地址查找反向NAT表项,根据查表结果转换报文,向私网侧发送。
说明:NAT方式不能有效解决IP地址短缺的问题,在实际应用中并不常用。
NAPT方式同时转换IP地址和端口号,可以更加充分地利用IP地址资源,实现更多的内部网主机对Internet的同时访问。NAPT在使用IP地址的同时,使用TCP/UDP的端口号,ICMP报文的标识符域来共同构造转换表项。

图2 NAPT方式基本原理
(1) NAT设备接收到私网用户发出的访问公网主机报文。
(2) 如果是私网用户对外发起一个新连接,NAT设备从地址池中选择一对空闲的公网地址和端口,建立NAPT转换表项(正反向)。
(3) 根据私网源IP地址、目标IP地址、源端口号和目标端口号查找正向NAPT表项,根据查表结果转换报文,向公网侧发送。
(4) NAT设备接收到公网侧的回应报文,根据报文的源IP地址、目标IP地址、源端口号和目标端口查找反向NAPT表项,根据查表结果转换报文,向私网侧发送。
私网的主机使用私有IP地址,无法通过正常的方式被外部网的主机所访问。出于安全的考虑,大部分内部私网的主机不希望被外部主机所访问,只有小部分私网的服务器有被外部主机所访问的需求。问题的关键在于首先由公网的用户发起连接,无法动态的建立NAPT转换表项。解决的方法就是在NAT设备上静态配置NAT内部服务器,即在NAT设备上定义公有IP地址/端口对和私有IP地址/端口对的映射表项。

图3 NAT内部服务器基本原理
(1) NAT设备接收到公网用户发出的访问私网内部服务器的报文。
(2) 根据目的IP地址和端口号查找反向NAPT表项,根据查找表结果转换报文,向私网侧发送。
(3) NAT设备接收到私网侧的回应报文,根据源IP地址和端口号查找正向NAPT表项,根据查表结果转换报文,向公网侧发送。
某些应用层协议会先在客户机和服务器之间协商端口号,然后服务器使用协商出的端口号向客户端发起连接,比如FTP数据通道的建立。如果NAT设备对两者的协商过程一无所知,那么服务器在向客户机发起连接的时候,就会因为在交换机上找不到对应关系而造成连接失败。下面详细介绍FTP协议ALG处理的过程。
FTP存在Common FTP 和Passive FTP两种模式。Common FTP模式,客户端会指定一个端口,服务器对其发起数据连接,因此当客户端在私网时,NAT设备需要对其进行ALG处理,生成对应的NAT/NAPT表项,服务器通过此表项完成对私网主机的访问。Passive FTP模式,服务器指定一个端口,客户端对其发起数据连接,因此当服务器在私网时,NAT设备也需要对其进行ALG处理,其处理流程和上基本相同。私网客户端使用Passive FTP模式访问公网服务器,以及公网客户端使用Common FTP模式访问私网服务器,由于数据连接都是私网发起的,因此NAT不需要对其进行ALG处理。
l Common FTP
当私网用户请求访问外部的FTP服务器时,FTP客户和服务器之间将建立两条TCP 连接,一个是控制连接,服务器TCP端口号为21,控制连接负责传输控制信息,如客户命令和参数,另一个为数据连接,用来在服务器与客户之间建立一个数据连接,服务器TCP端口号为20。主要用于传送文件。

在控制连接中,用户需要向FTP服务器发出PORT指令,通知服务器客户端监听数据连接的端口号和IP地址。当服务器收到PORT指令后,通常从本地的20号端口向指定客户地址和端口主动发起TCP数据连接。
对于Common FTP,当客户端在私网时,由于由公网服务器发起数据连接,需要在NAT设备上预先建立地址映射关系。所以NAT设备必须监听用户到FTP服务器的控制流。当收到PORT指令时,根据PORT指令中的地址与端口号,分配新的地址和端口号,并用分配地址和端口号替换PORT指令的对应内容,并使用它们创建对应的NAT/NAPT表项,这样当服务器发起连接时NAT设备才能正确的完成地址端口转换。
l Passive FTP
Passive FTP模式中,控制和数据连接都从Client 发起到Server 端,Client 通过控制通道传送PASV 命令通知Server 它将发起Passive FTP 模式,而不是common FTP 模式,同样Client 采用一个大于1023 的端口来传送数据并连接到 Server 的数据端口上(动态分配,不一定采用20)。

在passive FTP模式中,Client 向Server 发起PASV 请求,该命令通知Server 在一个数据端口(并非缺省的数据端口)进行侦听,从服务器发出的PASV 回应包括了Server 侦听的端口和地址,同时等待从客户端发起的数据连接。
当服务器在私网时,由于公网Client会对Server发起数据连接,因此需要在NAT上预先建立地址映射关系。当NAT设备收到Server的PASV回应时,根据PASV回应中的指令地址与端口,分配新的地址和端口号,并用分配地址和端口号替换PASV指令的对应内容,并使用它们创建对应的NAT/NAPT表项,这样当公网Client发起连接时NAT设备才能正确的完成地址端口转换。
纯NAT多实例和单实例一样,只对私网IP转换,与单实例不同是NAT多实例增加对VPN识别和处理,保证不同VPN私网内相同IP转换成不同的公网IP,具体请参见图6:

图6 多实例NAT方式基本原理
(1) NAT设备接收到私网用户发出的访问公网主机报文。
(2) 如果是私网主机首次访问公网,NAT设备从地址池中选择一个没有使用的公网地址、建立NAT转换表项(正反向),其内容包括私网VPN、源IP和分配的地址池地址。
(3) 根据私网VPN和源IP地址查找正向NAT表项,根据查表结果转换报文,向公网侧发送。
(4) NAT设备接收到公网侧的回应报文,根据目的IP地址查找反向NAT表项,根据查表结果转换报文的目标IP,并查找私网VPN对应的路由,对转换后的报文进行转发处理。
多实例的NAPT方式和单实例的NAPT方式相比,在原来私网地址和端口转换的基础上,增加了对VPN识别和处理。

图7 多实例NAPT方式基本原理
(1) NAT设备接收到私网用户发出的访问公网主机报文。
(2) 如果是私网用户对外发起一个新连接,NAT设备根据私网VPN、源IP地址、目标IP地址、源端口号和目标端口号,从地址池中选择一对空闲的公网地址和端口号、建立NAPT转换表项(正反向),其内容包括私网VPN、源IP地址、目标IP地址、源端口号、目标端口号、转换后的IP地址和端口。
(3) 根据私网VPN、源IP地址、目标IP地址、源端口号和目标端口号查找正向NAPT表项,根据查表结果转换报文,向公网侧发送。
(4) NAT设备接收到公网侧的回应报文,根据目的IP地址、源IP地址、目的端口号和源端口号查找反向NAPT表项,根据查表结果转换报文,并查找私网VPN对应的路由,对转换后的报文进行转发处理。
NAT多实例的内部服务器,增加了私网侧对VPN的支持,处理流程与单实例相同。

图8 NAT内部服务器基本原理
(1) NAT设备接收到公网用户发出的访问私网内部服务器的报文。
(2) 根据目的IP地址和端口号查找反向NAPT表项,根据查找表结果转换报文,并查找私网VPN对应的路由,对转换后的报文进行转发处理。
(3) NAT设备接收到私网侧的回应报文,根据VPN、源IP地址和端口号查找正向NAPT表项,根据查表结果转换报文,向公网侧发送。
NAT多实例和单实例的ALG处理流程基本相同。不同的是NAT设备创建公网与私网的地址端口映射表项,NAT多实例在私网侧地址和端口基础上增加VPN。
内网向外网发起首次访问后,只有相同目的IP和目的端口才能发起对内网对应IP和端口的访问,外网其它的IP或其它的IP+端口都不能主动发起对内网IP的访问。

图9 对称方式原理图
内网向外网发起首次访问后,只有访问的IP才能发起对内网对应IP和端口的访问,外网其它的IP+端口都不能主动发起对内网IP的访问。

图10 限制圆锥方式原理图
内网向外网发起首次访问后,只有与访问目的端口相同的情况才能发起对内网对应IP和端口的访问,其它的IP+端口都不能主动发起对内网对应IP的访问。

图11 限制端口圆锥方式原理图
内网向外网发起首次访问后,任何外部主机都能够发起对内网对应IP和端口的访问。

图12 全圆锥方式原理图
随着Internet规模的扩大,IPv4地址短缺问题日益突出,在大型企业、城域网中使用NAT的需求也开始出现,在高端路由器、核心交换机上提供NAT功能,可以满足企业网、城域网易于维护、易于管理的需求。普通的POP点组网如图,用户使用保留的私有地址接入,在POP点通过NAT设备转换成公网地址,这样可以有效解决公网地址不足的问题。

图13 普通的pop点组网
一些私网可能同时接入多个ISP(因特网服务提供商),如图10所示。通过配置策略路由,10.8.1.0/24通过ISP1访问Internet,10.8.2.0/24通过ISP2访问Internet。在NAT设备上配置地址池1:205.113.48.1--205.113.48.3和地址池2:207.36.64.1--207.36.64.3。地址池1的地址属于ISP1,地址池2的地址属于ISP2。NAT绑定关系配置为10.8.1.0/24对Internet的访问使用地址池1,10.8.2.0/24对Internet的访问使用地址池2。这样就使得私网侧的不同网段通过不同的ISP实现对Internet的访问,可以对不同的用户提供不同访问质量。

图14 使用策略路由的多ISP组
SR8800的内部服务器组功能可以实现简单的服务器负载分担功能。可以由多台服务器组合成一个组,对外看起来像一台服务器。内部服务器组是一种简单扩充服务器性能的好方法,服务器的分担采取粘性连接技术,同一个主机发来的连接会选择同一个服务器,保证有连接依赖关系的WEB应用能够正常运行。

图15 NAT的内部服务器组
每台PE上都有自己的地址池,并分配有独立的地址池地址。每台PE都可以执行NAT功能,并能支持NAT转换后将报文封装成MPLS格式。
这种组网方式可以用于运营商和大的企业用户,VPN用户可以自己规划IP,而不会影响到其它VPN用户。

图16 多实例NAT访问公网
每台PE(运营商边缘)设备上配置NAT,VPN各站点内用户直接通过本地PE设备配置的NAT访问Internet,VPN内不同站点的互访和Internet访问互不影响,同时各VPN发布自己的内部服务器,也互不影响。VPN用户访问Internet时,报文从CE(用户边缘)设备转发到PE设备时,PE设备满足NAT条件的报文进行NAT转换后发送到Internet。 如果Internet的用户访问内部服务器,则数据包到达配置内部服务器的PE/NAT设备上时,目的IP和端口转换成VPN内部服务器的IP地址和端口后,在VPN内进行转发,最终到达CE和内部服务器。
通常在政务网或大型企业网内,存在不同的机构和部门,它们之间同时存在网络隔离和数据共享的需求,为了解决这个问题,通常采用MPLS L3 VPN实现不同机构(部门)之间的网络隔离,同时通过策略引入共享服务器的路由来实现服务器共享访问。这种方法需要整个网络进行统一的地址和路由规划,共享服务器的路由引入,会带来安全隐患,配置管理也相当复杂。
SR8800的VPN NAT功能提供了另外一种解决方案,它可以提供更高的安全性和灵活性,它有如下特点:
l 组网方便,不同机构和部门不需要统一分配地址,地址可以重叠,网络结构清晰,路由策略简单。
l 2、可以任意配置共享的服务器,不需要修改网络内部的路由设置,而且服务器放置在VPN的位置也不受限制。共享服务器的变更,只需简单修改NAT配置,不需要修改路由设置。
l 3、更高的安全性,可以掩藏真实的IP地址,NAT的具有防火墙单向发起访问的特性,外部设备无法主动访问内网设备,使得访问者不易受到攻击。
l 4、简单的访问权限管理,可以通过设置不同的共享VPN,实现共享服务器的群组管理,结合NAT规则的设置,可以方便设置各种访问权限。

图17 VPN间通过NAT共享资源
如图12所示,有VPN1、VPN3和VPN6 3个VPN,VPN5是地址池的VPN用于发布共享的服务器资源。所有PE/NAT设备的NAT变换的地址池和内部服务器的公网IP地址都放在VPN5,将VPN5的路由发布给VPN1、VPN3、VPN6等需要访问共享资源的VPN。
SR8800的NAT最具特色之处在于其强大VPN NAT功能,它不但能够实现普通的多实例NAT功能,即实现不同的VPN用户共享一台NAT设备上公网,而且还能够支持任意VPN间通过NAT实现资源共享访问。支持在同一个NAT设备上实现本地的和远端的多个VPN通过NAT进行资源共享。
由于采用了高性能NP对普通的数据报文进行NAT处理,SR8800的NAT具有NAT表项容量大,处理能力高的优势。单块NAT业务板支持的最大会话数>200万,新建会话速率>20万会话/秒, 64byte包转换速率>6Gbps。还可以通过配置多块NAT业务板来线性增加NAT容量和性能。整个设备可支持高达4K个VPN实例。
SR8800 NAT支持的ALG种类丰富,主要有:FTP、TFTP、DNS、ICMP超时/不可达、H323 (RAS,H225,H245)、SIP 、NBT 、ILS 、RTSP 、SQLNET等等,对目前网络常用的一些应用软件均能很好支持。
SR8800的NAT采取全对称方式的NAT变换,是安全度最高的一种NAT变换,详见前面的NAT行为方式描述。当内网向外网发起首次访问后,只有被访问的IP和端口才能发起对内网对应IP和端口的访问,外网其它的IP或其它的IP+端口都不能主动发起对内网IP的访问,这保证内网主机不会受到外网设备的主动攻击。
支持在接口的入方向或出方向配置NAT,可以根据NAT设备位于网络中的位置进行灵活选择,简化NAT配置。
如果设备位于公网,可以在入接口配置NAT,使得报文进入设备时完成NAT变换,转换成公网地址。

图18 入接口NAT应用
如果设备位于私网,这种情况通常连接公网接口有限,可以配置出接口NAT,报文在发往公网时,将报文的私网地址转换成公网地址。

图19 出接口NAT应用
在NAT变换过程中,支持对报文的源IP和目的IP同时进行NAT变换。并且能够一次性完成基于源IP和目的IP的两次NAT变换,具有很高的两次NAT变换性能。两次NAT功能可以支持地址完全重叠的两个网络的互相访问。

图20 两次NAT应用
在私网通过多链路接入公网时,一般不同ISP的链路会分配不同的公网地址池,而同一ISP的不同链路则可能会分配相同的地址池。对于不同ISP由于链路故障切换时,能够快速切换到新的链路,删除原会话,以新地址池地址重新建立NAT会话。但对于地址池不变的链路切换,则直接进行路由切换,NAT会话保持不变,可以实现会话不中断的快速切换。
![]()

图21 多链路快速切换
支持内部服务器组的功能,能够实现一个服务器组中的多台内部的服务器对应同一个公网的服务器,能够实现服务器组之间的负载分担。
支持按网段进行NAT变换,可以将一个网段的地址直接转换成另一个网段的地址,简单的实现不同地址域的切换。
为了防止私网内的某个用户过多地占用NAT会话资源,可以对私网用户的连接数进行限制,可以预先配置一个阈值,当私网用户的连接数到达该阈值后,该用户不能再新建连接,直到已有连接数恢复到阈值以下。连接数的限制可分四类:TCP、HTTP、DNS和剩下的其它报文。这四类连接数可以单独统计,单独限制,互不干扰。例如在运行常用的P2P应用时,可以不影响正常的网页浏览。连接数限制的日志功能还能记录用户的连接数限制情况。
为了防止私网内的某个用户建链的速度太快,过多地占用设备的资源,可以对私网用户的建链速率进行限制,采用令牌桶技术对用户建链速率进行速率监管,当私网用户的建链速率超过设置的速率后被限制新建连接,直到下降到设置值以下。

图22 NAT建链速率限制的应用
由于NAT设备一般都位于网络的出口,SR8800的NAT提供了带宽限制功能,可以针对每个用户来限制进行NAT的流量带宽,这样可以有效管理用户对出口带宽的占用。用户带宽流量的监管也是通过令牌桶技术来实现的。用户可以选择配置带宽限制或者建链速率限制中的一种。

图23 NAT带宽限制应用
根据需要,可以对NAT转换进行日志记录,用于对用户行为进行追踪。日志报文被送往设定的日志服务器进行存储,以便于查询和检索。记录的时刻分别为NAT转换表项建立、转换表项老化以及转换表项超过一定的活跃时间。日志启动配置和ACL关联,可以通过ACL来选择需要记录日志的NAT变换。

图24 NAT日志应用
在多实例NAT中,可以限制每个VPN的会话连接数,建链的速率和带宽,可以有效的防止一个VPN用户占用过多的NAT资源,使得VPN对NAT资源的占用控制在配置的范围内,方便实现VPN NAT的管理和运营。
Copyright © 2008 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形