国家 / 地区

NAT技术白皮书-6W100

手册下载

NAT技术白皮书

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2019 新华三技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。

本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。



概述

1.1  产生背景

随着Internet的发展和网络应用的增多,IPv4地址枯竭已成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足问题,但目前众多网络设备和网络应用大多是基于IPv4的,IPv6在实际引入上进展缓慢。在IPv6广泛应用之前,即IPv4IPv6过渡期间,使用NATNetwork Address Translation,网络地址转换)能够提高IPv4地址的利用率,保证业务的平滑过渡,为IPv6的部署争取时间。

1.2  技术优点

作为一种过渡方案,NAT通过地址重用的方法来满足IP地址的需要,可以在一定程度上缓解IP地址空间枯竭的压力。它具备以下优点:

·     对于内部通讯可以利用私网地址,如果需要与外部通讯或访问外部资源,则可通过将私网地址转换成公网地址来实现。

·     通过公网地址与端口的结合,可使多个私网用户共用一个公网地址。

·     通过静态映射,不同的内部服务器可以映射到同一个公网地址。外部用户可通过公网地址和端口访问不同的内部服务器,同时还隐藏了内部服务器的真实IP地址,从而防止外部对内部服务器乃至内部网络的攻击行为。

·     方便网络管理,如通过改变地址映射表就可实现私网服务器的迁移,内部网络的改变也很容易。

NAT技术实现

2.1  NAT基本概念

NAT基本概念如下:

·     NAT设备:配置了NAT功能的连接内部网络和外部网络的边缘设备。

·     NAT规则:用于进行地址转换的NAT配置称为NAT规则。

·     NAT地址:用于进行地址转换的公网IP地址,与外部网络路由可达,可静态指定或动态分配。

·     NAT表项:NAT设备上用于记录网络地址转换映射关系的表项。

·     Easy IP功能:NAT转换时直接使用设备上接口的IP地址作为NAT地址。设备上接口的地址可静态指定或通过DHCP协议动态获取。

2.2  NAT基本原理

当内部网络访问外部网络的报文经过NAT设备时,NAT设备会用一个合法的公网地址替换原报文中的源IP地址,并对这种转换进行记录;之后,当报文从外网侧返回时,NAT设备查找原有的记录,将报文的目的地址再替换回原来的私网地址,并转发给内网侧主机。这个过程对于私网侧或公网侧设备透明。基于这种基本的地址转换原理,数量庞大的内网主机就不再需要公网IP地址了。

2.3  NAT实现方式

2.3.1  静态方式

静态方式的地址转换是指外部网络和内部网络之间的地址映射关系由配置确定,即一个公网IP地址唯一对应一个内部主机。该方式适用于内部网络与外部网络之间存在固定访问需求的组网环境。静态地址转换支持双向互访:内网用户可以主动访问外网,外网用户也可以主动访问内网。

2.3.2  NO-PAT方式

NO-PAT方式属于一对一的地址转换,在这种方式下只转换IP地址,而对TCP/UDP协议的端口号不处理,一个公网IP地址不能同时被多个用户使用。

1所示,NO-PAT方式的处理过程如下:

(1)     NAT设备收到私网侧主机发送的访问公网侧服务器的报文。

(2)     NAT设备从地址池中选取一个空闲的公网IP地址,建立与私网侧报文源IP地址间的NAT转换表项,并依据查找NAT表项的结果将报文转换后向公网侧发送。

(3)     NAT设备收到公网侧的回应报文后,根据其目的IP地址反向查找NAT表项,并依据查表结果将报文转换后向私网侧发送。

说明

由于NO-PAT这种一对一的转换方式并未实现公网地址的复用,不能有效解决IP地址短缺的问题,因此在实际应用中并不常用。

 

图1 NO-PAT方式原理图

 

2.3.3  PAT方式

由于NO-PAT方式并未实现地址复用,因此并不能解决公网地址短缺的问题,而PATPort Address Translation方式则可以解决这个问题。

PAT方式属于多对一的地址转换,它通过使用“IP地址+端口号”的形式进行转换,使多个私网用户可共用一个公网IP地址访问外网,实现了地址的复用,因此是地址转换实现的主要形式。

目前PAT仅支持对传输层协议为TCPUDPICMP的报文进行“IP地址+端口号”转换。

2所示,PAT方式的处理过程如下:

(1)     NAT设备收到私网侧主机发送的访问公网侧服务器的报文。

(2)     NAT设备从地址池中选取一对空闲的“公网IP地址+端口号”,建立与私网侧报文“源IP地址+源端口号”间的PAT转换表项,并依据查找PAT表项的结果将报文转换后向公网侧发送。

(3)     NAT设备收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”反向查找PAT表项,并依据查表结果将报文转换后向私网侧发送。

图2 PAT方式原理图

 

2.3.4  NAT Server方式

出于安全考虑,大部分私网主机通常并不希望被公网用户访问。但在某些实际应用中,需要给公网用户提供一个访问私网服务器的机会。而在NO-PATPAT方式下,由于由公网用户发起的访问无法动态建立NAT表项,因此公网用户无法访问私网主机。NAT ServerNAT内部服务器)方式就可以解决这个问题——通过静态配置“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,NAT设备可以将公网地址“反向”转换成私网地址。

3所示,NAT Server方式的处理过程如下:

(1)     NAT设备收到公网侧主机发送的访问私网侧服务器的报文。

(2)     NAT设备根据公网侧报文的“目的IP地址+目的端口号”反向查找静态NAT表项,并依据查表结果将报文转换后向私网侧发送。

(3)     NAT设备收到私网侧的回应报文后,根据其“源IP地址+源端口号”查找静态NAT表项,并依据查表结果将报文转换后向公网侧发送。

图3 NAT Server方式原理图

 

2.3.5  Easy IP方式

EASY IP方式是指直接使用接口的公网IP地址作为转换后的源地址进行地址转换,它可以动态获取出接口地址,从而有效支持出接口通过拨号或DHCP方式获取公网IP地址的应用场景。

EASY IP方式特别适合小型局域网访问Internet的情况。这里的小型局域网主要指中小型网吧、小型办公室等环境,一般具有以下特点:内部主机较少、出接口通过拨号方式获得临时公网IP地址以供内部主机访问Internet。对于这种情况,可以使用EASY IP方式使局域网用户都通过这个IP地址接入Internet

4所示,EASY IP方式的处理过程如下:

(1)     NAT设备收到私网侧主机发送的访问公网侧服务器的报文。

(2)     NAT设备利用公网侧接口的“公网IP地址+端口号”,建立与私网侧报文“源IP地址+源端口号”间的EASY IP转换表项(正反向),并依据查找正向EASY IP表项的结果将报文转换后向公网侧发送。

(3)     NAT设备收到公网侧的回应报文后,根据其“目的IP地址+目的端口号”查找反向EASY IP表项,并依据查表结果将报文转换后向私网侧发送。

图4 EASY IP方式原理图

 

2.3.6  NAT hairpin

NAT hairpin功能用于满足位于内网侧的用户之间或内网侧的用户与服务器之间通过NAT地址进行访问的需求。开启NAT hairpin的内网侧接口上会对报文同时进行源地址和目的地址的转换。它支持两种组网模式:

(1)     P2P:位于内网侧的用户之间通过NAT地址互访。内网各主机首先向外网服务器注册自己NAT转换后的外网IP地址和端口号信息。56所示,当内网的一个客户端使用NAT地址访问内网的另一个客户端时,首先从服务器获取对方注册的IP地址和端口号信息,然后根据该信息与对方建立连接。

图5 P2P组网模式下的NAT hairpinPacket from Host A to Host B

 

图6 P2P组网模式下的NAT hairpinPacket from Host B to Host A

 

(2)     C/S:位于内网侧的用户使用NAT地址访问内网服务器。如78所示,内部网络中有一台FTP服务器,内网用户使用NAT地址访问该FTP服务器时,NAT设备同时转换访问内网服务器的报文的源和目的IP地址,其中,目的IP地址转换通过匹配外网接口上的内部服务器配置来完成,源地址转换通过匹配内部服务器所在接口上的出方向动态地址转换或出方向静态地址转换来完成。

图7 C/S组网模式下的NAT hairpinPacket from Host to Server

 

图8 C/S组网模式下的NAT hairpinPacket from Server to Host

 

2.4  NAT ALG机制

2.4.1  NAT ALG机制简介

通常情况下,NAT只改变IP报文头部地址信息,而不对报文载荷进行分析,这对于普通的应用层协议(如Telnet)来说,并不会影响其业务的开展;然而有一些应用层协议,其报文载荷中可能也携带有地址或端口信息,若这些信息不能被有效转换,就可能导致问题。譬如,某些应用层协议会在客户端与服务器之间协商端口号,然后服务器使用协商出的端口号向客户端发起连接。如果NAT设备对二者的协商过程一无所知,那么当服务器向客户端发起连接时,就会因为在NAT设备上找不到内部与外部的IP地址/端口号对应关系而造成连接失败。

这个问题可以通过ALGApplication Level Gateway,应用层网关)来解决。ALG主要完成对应用层报文的解析和处理。NAT利用ALG技术可以对应用层协议的报文载荷进行信息解析,改变封装在其中的地址和端口信息,并完成其它必要的工作以使应用协议可以穿越NAT

ALG机制可处理的应用层协议包括DNSFTPH.323ILSSIP等。

2.4.2  基本概念

1. 会话

会话记录了传输层报文之间的交互信息,包括源IP地址、源端口、目的IP地址、目的端口,协议类型和源/目的IP地址所属的VPN实例。

2. 动态通道

当应用层协议报文中携带地址信息时,这些地址信息会被用于建立动态通道,后续符合该地址信息的连接将使用已经建立的动态通道来传输数据。

2.4.3  FTP协议的ALG处理

FTP工作过程中,客户端与服务器之间将建立两条TCP连接:一条为控制连接,负责传输诸如用户指令和参数等控制信息,其中包括发起数据连接时要用到的端口信息;另一条为数据连接,负责在服务器与客户端之间建立数据通道以传送文件。

FTP有两种不同的工作模式:PORT(主动模式)和PASV(被动模式)。不同模式下,FTP连接建立过程中NAT ALG的处理机制有所不同。下面介绍两种不同模式下FTP的连接建立过程。

1. 主动模式下的FTP连接建立过程

在主动模式下,在由客户端发起控制连接中,客户端将指定的端口通过PORT指令发送给服务器,然后由服务器向该端口发起数据连接。

主动模式下,是否需要在控制连接中进行ALG处理与服务器和客户端所处的位置有关,具体如下:

·     客户端位于公网而服务器位于私网的情况下,由于客户端向服务器通告的是公网地址和端口,服务器可直接向其发起数据连接,因此无需在控制连接中进行ALG处理。

·     客户端位于私网而服务器位于公网的情况下,由于客户端向服务器通告的是私网地址和端口,因此需在控制连接中通过ALG处理将其转换为公网地址和端口,以供服务器发起数据连接所用。

图9 主动模式下的ALG处理

 

9所示,位于内部网络的客户端以PORT方式访问位于外部网络的FTP服务器,NAT设备上配置了内网地址IP1到外网地址IP2的映射。同时,在NAT设备上开启ALG功能。

(2)     首先,由客户端向服务器发送PORT指令,以向服务器通知发起数据连接所应使用的地址和端口(IP 1Port 1);

(3)     NAT设备收到该指令后,将其中载荷所携带的私网地址和端口(IP 1Port 1)替换为公网地址和端口(IP 2Port 2),并据此创建相应的PAT表项——此过程即为ALG处理;

(4)     服务器收到该指令后,主动向公网地址和端口(IP 2Port 2)发起数据连接,并在通过NAT设备时被转化为私网地址和端口(IP 1Port 1)。

2. 被动模式下的FTP连接建立过程

在被动模式下,在由客户端发起控制连接中,客户端向服务器发送PASV请求来通知服务器它将发起被动模式,服务器再将指定的端口通过PASV响应发送给客户端,然后由客户端向该端口发起数据连接。

被动模式下,是否需要在控制连接中进行ALG处理与服务器和客户端所处的位置有关,具体如下:

·     服务器位于公网而客户端位于私网的情况下,由于服务器向客户端通告的是公网地址和端口,客户端可直接向其发起数据连接,因此无需在控制连接中进行ALG处理。

·     服务器位于私网而客户端位于公网的情况下,由于服务器向客户端通告的是私网地址和端口,因此需在控制连接中通过ALG处理将其转换为公网地址和端口,以供客户端发起数据连接所用。

图10 被动模式下的ALG处理

 

10所示,位于外部网络的FTP客户端以PASV方式访问位于内部网络的FTP服务器,NAT设备上配置了内网地址IP1到外网地址IP2的映射,开启ALG功能后的地址转换过程如下:

(2)     客户端向服务器发送PASV请求;

(3)     服务器收到该请求后,选择并打开服务器端数据通道的地址和端口(IP 1Port 1),并通过PASV响应向客户端返回该地址和端口;

(4)     NAT设备收到该响应后,将其中载荷所携带的私网地址和端口(IP 1Port 1)替换为公网地址和端口(IP 2Port 2),并据此创建相应的PAT表项——此过程即为ALG处理;

(5)     客户端收到该响应后,向公网地址和端口(IP 2Port 2)发起数据连接,并在通过NAT设备时被转换为私网地址和端口(IP 1Port 1)。

2.4.4  DNS协议的ALG处理

11所示,私网侧主机要使用域名访问内部WWW服务器(域名为www.abc.com,对外公网地址为50.10.10.10),但它查询的DNS服务器位于公网,DNS服务器的响应报文中包含的是内部WWW服务器的公网地址,导致收到响应报文的私网用户无法利用域名访问内部服务器。此时,需要NAT设备在转换DNS报文的同时进行ALG处理,将DNS响应报文中携带的公网地址转换为服务器的私网地址。

图11 DNS报文载荷的ALG处理示意图

 

DNS报文载荷的NAT ALG处理机制如下:

(2)     私网主机向公网的DNS服务器发起DNS查询。

(3)     DNS服务器收到查询报文后进行查询处理,并将查询到的结果(域名www.abc.com对应IP地址50.10.10.10)放在DNS响应报文(DNS Answer)中发送给私网主机对应的公网地址。

(4)     DNS响应报文在到达具有ALG特性的NAT设备时,报文载荷中的公网地址会被映射成为内部WWW服务器的私网地址。即,NAT设备将收到的DNS响应报文数据载荷中的IP地址50.10.10.10替换为192.168.0.10后,将DNS响应报文发往私网。

(5)     这样,私网主机收到的DNS响应报文中就携带了www.abc.com的私网IP地址,从而实现私网客户端通过公网DNS服务器以域名方式访问私网服务器的功能。

2.4.5  ICMP协议的ALG处理

12所示,公网侧的主机要访问私网中的FTP服务器,该内部服务器对外的公网地址为50.10.10.10。若内部FTP服务器的21端口未打开,那么它会向主机发送一个ICMP差错报文,该差错报文的数据载荷中的IP地址信息为FTP服务器的私网IP地址。在这种情况下,如果ICMP差错报文未经ALG处理直接从私网发送到公网,那么公网主机就无法识别该差错报文属于哪个应用程序,同时也会将FTP服务器的私网地址泄漏到公网中。

因此,需要NAT设备对ICMP差错报文进行ALG处理。ALG会根据原始FTP会话的地址转换信息记录,将其数据载荷中的私网地址192.168.0.10还原成公网地址50.10.10.10,再将该ICMP差错报文发送到公网。这样,公网主机就可以正确识别出错的应用程序,同时也避免了私网地址的泄漏。

图12 ICMP差错报文载荷的ALG处理示意图

 

2.4.6  DNS Mapping方式

DNS Mapping主要用于解决普通的NAT ALG在特定组网时的问题。如13所示,DNS服务器位于公网,NAT设备使用一个公网地址映射内部的多个服务器,内网主机通过域名访问内网Web服务器时,由于NAT设备开启了DNS ALG功能,因此会将DNS响应报文中的公网地址修改为内部服务器的私网地址。但是,由于DNS服务器的响应报文的载荷中只包含域名和应用服务器的外网IP地址,不包含传输协议类型和端口号。所以NAT设备在修改DNS响应报文载荷中的外网IP地址时,有可能将其修改为FTP服务器的私网地址。这种情况下,内部主机收到响应报文后向FTP服务器发起HTTP访问,该访问将以失败告终。。

为了解决上述问题,需要借助DNS mapping,通过指定域名与应用服务器的外网IP地址、端口和协议的映射关系,由域名获取应用服务器的外网IP地址、端口和协议,进而精确匹配内部服务器配置获取应用服务器的内网IP地址。

NAT设备收到DNS响应报文后,载荷中域名www.test.com对应的IP地址为162.10.2.5NAT设备查找DNS Mapping,得到“域名—公网IP地址—公网端口—协议类型”的对应关系,然后再从NAT server配置中得到对应的Web服务器的私网地址10.1.1.200NAT设备将DNS响应报文中的地址修改为10.1.1.200后发送给内部主机。内部主机收到该DNS相应后,向10.1.1.200对应的服务器发起HTTP访问。

图13 DNS Mapping方式原理图

 

2.5  NAT支持多VPN实例

NAT多实例主要针对MPLS L3VPN用户访问公网或为公网提供服务而提出,可实现不同VPN内使用相同私网地址的用户同时访问外部网络。NAT多实例在转换过程中增加了对VPN的识别和处理,把VPN作为区分会话的参数之一,以此实现了多实例同时访问公网的功能。

1. 多实例NO-PAT

与单实例一样,多实例的NO-PAT只对私网的IP地址进行转换,但不同的是多实例NO-PAT在原有私网IP地址转换的基础上增加了对VPN的识别和处理,即在NAT转换表项中增加了VPN信息,并将其作为转换依据之一,以确保将不同VPN内相同的私网IP地址转换成不同的公网IP地址。

2. 多实例PAT

与单实例相比,多实例的PAT在原有私网IP地址和端口号转换的基础上,增加了对VPN的识别和处理,即在PAT转换表项中增加了VPN信息,并将其作为转换依据之一,以确保将不同VPN内相同的“私网IP地址+端口号”转换成不同的“公网IP地址+端口号”。

3. 多实例NAT Server

与单实例相比,多实例的NAT Server增加了私网侧对VPN的支持,即在所配置的静态NAT转换表项中增加了VPN信息,并将其作为转换依据之一,以确保将访问不同VPN的报文送达正确的VPN,其处理流程与单实例相同。

4. 多实例EASY IP

与单实例相比,多实例的EASY IP在原有私网IP地址和端口号转换的基础上,增加了对VPN的识别和处理,即在EASY IP转换表项中增加了VPN信息,并将其作为转换依据之一,以确保将不同VPN内相同的“私网IP地址+端口号”转换成不同的“公网IP地址+端口号”。

5. 多实例DNS Mapping

与单实例相比,多实例的DNS Mapping增加了私网侧对VPN的支持,即在所配置的DNS Mapping映射表项中增加了VPN信息,并将其作为转换依据之一,以确保将访问不同VPN的报文送达正确的VPN,其处理流程与单实例相同。

6. 多实例ALG处理

多实例的ALG处理流程与单实例基本相同,不同的是NAT设备在创建公网与私网的地址端口映射表项时,NAT多实例在私网侧地址和端口基础上增加了对VPN的识别与处理,即在映射表项中增加了VPN信息,譬如将私网侧的(VPN AIP 1Port 1)与公网侧的(IP 2Port 2)进行映射。

典型组网应用

3.1  私网主机访问公网服务器

在许多小区、学校和企业网的内网规划中,由于公网地址资源有限,内部用户实际使用的都是私网地址,在这种情况下,可以使用NAT技术来实现内部用户对公网的访问。如14所示,通过在NAT网关上配置NAT转换规则,可以实现私网主机访问公网服务器。

图14 私网主机访问公网服务器组网图

 

3.2  公网主机访问私网服务器

在某些场合,私网内部有一些服务器需要向公网提供服务,比如一些位于私网内的Web服务器、FTP服务器等,NAT可以支持这样的应用。如15所示,通过配置NAT Server,即定义“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,位于公网的主机能够通过该映射关系访问到位于私网的服务器。

图15 公网主机访问私网服务器组网图

 

3.3  私网主机通过域名访问私网服务器

在某些场合,私网用户希望通过域名访问位于同一私网的内部服务器,而DNS服务器却位于公网,此时可通过DNS Mapping方式来实现。如16所示,通过配置DNS Mapping映射表,即定义“域名—公网IP地址—公网端口—协议类型”间的映射关系,将DNS响应报文中携带的公网IP地址替换成内部服务器的私网IP地址,从而使私网用户可以通过域名来访问该服务器。

图16 私网主机通过域名访问私网服务器组网图

 

3.4  不同VPN的主机使用相同的私网地址访问公网

当分属不同MPLS VPN的主机使用相同的私网地址,并通过同一个出口设备访问Internet时,NAT多实例可实现这些地址重叠的主机同时访问公网服务器。如17所示,Host AHost B具有相同的私网地址,且分属不同的VPNNAT能够区分属于不同VPN的主机,允许二者同时访问公网服务器。

图17 NAT多实例组网图

 

参考文献

·     RFC 1631The IP Network Address Translator (NAT)

·     RFC 2663IP Network Address Translator (NAT) Terminology and Considerations

·     RFC 2993Architectural Implications of NAT

·     RFC 3022Traditional IP Network Address Translator (Traditional NAT)

·     RFC 3027Protocol Complications with the IP Network Address Translator

联系我们 联系我们
联系我们
回到顶部 回到顶部