图1 DNS Mapping示意图
如上图1所示,私网用户Host希望通过域名方式访问Web Server,Router作为NAT服务器。当Router设备收到DNS响应报文后,先根据其中携带的域名查找DNS Mapping映射表,再根据“公网IP地址—公网端口—协议类型”查找Web Server,然后将DNS响应报文中的公网IP地址替换成Web Server的私网IP地址。这样,Host收到的DNS响应报文中就携带了Web Server的私网IP地址,从而可以通过域名来访问Web Server。
五、NAT关联VPN
NAT不仅可以使内部网络的用户访问外部网络,还允许内部网络中分属于不同VPN(Virtual Private Network)的用户通过同一个出口访问外部网络,解决内部网络中IP地址重叠的VPN同时访问外网主机的问题;NAT还支持VPN关联的NAT Server,允许外部网络中的主机访问内网中分属不同VPN的服务器,同时支持内网多个VPN地址重叠的场景。
1、VPN关联的源NAT
VPN关联的源NAT是指内部网络中分属于不同VPN的用户通过NAT技术访问外部网络,组网如下图1所示。
图1 VPN关联的源NAT
VPN关联的源NAT的实现方式如下:
1. VPN 1内的主机A和VPN 2内的主机B地址重叠,都为私网地址10.1.1.1,都要同时访问外部网络的一个服务
器。
2. Router在做源NAT时,将内部VPN作为一个NAT的匹配条件,将主机A发出报文的源IP转换为202.1.1.1,
将主机B发出报文的源IP转换为202.1.2.1,同时在建立的NAT转换表中,记录用户的VPN信息。 3. 当外部网络服务器回应内部网络主机A和B的报文经过Router时,根据已建立的NAT映射表,NAT模块将发
往主机A报文的目的IP从202.1.1.1转换为10.1.1.1,然后再发往VPN 1的目的主机;将发往主机B报文的目的IP从202.1.2.1转换为10.1.1.1,然后再发往VPN 2的目的主机。 2、VPN关联的NAT Server
VPN关联的NAT Server是指外网主机通过NAT技术访问内网中分属不同VPN的服务器。
图2 VPN关联的NAT Server
组网如上图2所示,VPN 1内Server A和VPN 2内的Server B的地址都是10.1.1.1;使用202.1.10.1做为VPN 1
内的Server A的外部地址,使用202.1.20.1做为VPN 2内的Server B的外部地址。这样,外部网络的用户使用202.1.10.1就可以访问到VPN 1提供的服务,使用202.1.20.1就可以访问VPN 2提供的服务。 VPN关联的NAT Server的实现方式如下:
1. 外部网络的主机访问VPN 1内的Server A,报文目的IP是202.1.10.1;访问VPN 2内的Server B,报文目的IP
是202.1.20.1。
2. Router在做NAT server时,根据报文的目的IP及VPN信息进行判断,将目的IP是202.1.10.1的报文的目的
IP转换为10.1.1.1,然后发往VPN 1的目的Server A;将目的IP是202.1.20.1的报文的目的IP转换为10.1.1.1,然后发往VPN 2的目的Server B;同时在新建的NAT映射表中,记录下关联的VPN信息。 3. 当内部Server A和B回应外部网络主机的报文经过Router时,根据已建立的NAT映射表,NAT模块将从Server
A发出的报文的源IP从10.1.1.1转换为202.1.10.1,再发往外部网络;将从Server B发出的报文的源IP从10.1.1.1转换为202.1.20.1,再发往外部网络。
六、两次NAT
两次NAT即Twice NAT,指源IP和目的IP同时转换,该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。
图1 两次NAT示意图
如上图1所示,两次NAT转换的过程如下:
1. 内网Host A要访问地址重叠的外部网络Host B,Host A向位于外部网络的DNS服务器发送访问外网Host B的
DNS请求,DNS服务器应答Host B的IP地址为1.1.1.1,DNS应答报文在经过Router时,进行DNS ALG,Router将DNS应答报文中的重叠地址1.1.1.1转换为唯一的临时地址3.3.3.1,然后再转发给Host A。
2. Host A访问Host B,目的IP为临时地址3.3.3.1,报文在经过Router时,Router检查到目的IP是临时地址,
进行目的地址转换,将报文的目的IP转换为Host B的真实地址1.1.1.1,同时进行正常的NAT Outbound转换,将报文的源IP转换为源NAT地址池地址;Router将报文转发到Host B。
3. Host B回应Host A,目的IP为Host A的NAT Outbound地址池地址,源IP为Host B的地址1.1.1.1,报文在经
过Router时,Router检查到源IP是重叠地址,进行源地址转换,将报文的源IP转换为对应的临时地址3.3.3.1,同时进行正常的目的地址转换,将报文的目的IP从源NAT地址池地址转换为Host A的内网地址1.1.1.1;Router将报文转发到Host A。
图2 内网多VPN情况下的两次NAT示意图
考虑到内网有多个VPN的场景,且内网多个VPN的地址一样的情况下,在Router上DNS ALG时,增加内网VPN信息作为重叠地址池到临时地址的映射关系匹配条件之一,如上图2所示。内网多VPN情况下的两次NAT转换过程和两次NAT转换的过程类似,只是VPN A中的Host A转换为临时地址3.3.3.1,而VPN B中的Host B转换为临时地址4.4.4.1。
七、NAT过滤和映射方式
NAT过滤功能可以让NAT设备对外网发到内网的流量进行过滤;NAT映射功能可以让内部网络中的一组主机通过NAT映射表映射到一个外部IP地址,共享这一个IP地址,所有不同的信息流看起来好像来源于同一个IP地址。 1、NAT过滤
NAT过滤是指NAT设备对外网发到内网的流量进行过滤,包括三种类型: ? 与外部地址无关的NAT过滤行为 ? 与外部地址相关的NAT过滤行为
? 与外部地址和端口都相关的NAT过滤行为 应用场景如下图1所示:
图1 NAT过滤应用组网图
上图中,私网用户PC-1通过NAT设备与外网用户PC-2、PC-3进行通信。数据报文1代表私网主机PC-1访问公网PC-2,PC-1使用的端口号为1111,访问PC-2的端口2222;经过NAT设备时,源IP转换为202.169.10.1。
当私网主机向某公网主机发起访问后,公网主机发向私网主机的流量经过NAT设备时需要进行过滤。数据报文2’、数据报文3’和数据报文4’代表三种场景,分别对应上述三种NAT过滤类型:
? 数据报文2’代表公网主机PC-3(与报文1的目的地址不同)访问私网主机PC-1,目的端口号为1111,只有
配置了外部地址无关的NAT过滤行为,才允许此报文通过,否则被NAT设备过滤掉。
? 数据报文3’代表公网服务器PC-2(与报文1的目的地址相同)访问私网主机PC-1,目的端口号为1111,源
端口号为3333(与报文1的目的端口不同),只有配置了外部地址相关的NAT过滤行为或者配置了外部地址无关的NAT过滤行为,才允许此报文通过(均不涉及端口号),否则被NAT设备过滤掉。
? 数据报文4’代表公网服务器PC-2(与报文1的目的地址相同)访问私网主机PC-1,目的端口号为1111,源
端口号为2222(与报文1的目的端口相同),这属于外部地址和端口都相关的NAT过滤行为,是缺省的过滤行为,不配置或者配置任何类型的NAT过滤行为,都允许此报文通过,不会被过滤掉。
2、NAT映射
在Internet中使用NAT映射功能,所有不同的信息流看起来好像来源于同一个IP地址。因为NAT映射使得一组主机可以共享唯一的外部地址,当位于内部网络中的主机通过NAT设备向外部主机发起会话请求时,NAT设备就会查询NAT表,看是否有相关会话记录,如果有相关记录,就会将内部IP地址及端口同时进行转换,再转发出去;如果没有相关记录,进行IP地址和端口转换的同时,还会在NAT表增加一条该会话的记录。
NAT映射是NAT设备对内网发到外网的流量进行映射,包括以下两种类型: 外部地址无关的映射:
对相同的内部IP和端口重用相同的地址端口映射。 外部地址和端口相关的映射:
对相同的内部IP地址和端口号访问相同的外部IP地址和端口号重用相同的端口映射(如果此映射条目还处在活动状态)。