NAT典型组网实例

1NAT多实例

1.1功能说明

多实例的概念是指路由的多实例,每一个实例之间路由相互隔离。通常情况下,每一个v*n看作为一个实例。

NAT多实例允许分属于不同实例的用户通过同一个出口访问外部网络,同时允许分属于不同实例的用户使用相同的私网地址。当实例内的用户访问外部网络时,地址转换将内部网络主机的IP地址和端口替换为设备的外部网络地址和端口,同时还记录了用户的实例信息(如MPLS v*n协议类型和路由标识符RD等)。回应报文到达时,地址转换将外部网络地址和端口还原为内部网络主机的IP地址和端口,可得知是哪一个实例用户的访问。

同时,地址转换支持内部服务器的多实例,给外部提供访问实例内主机的机会。例如,MPLS v*n1内提供Web服务的主机地址是10.110.1.1,可以使用202.110.10.20作为Web服务器的外部地址,Internet的用户使用202.110.10.20的地址就可以访问到MPLS v*n1提供的Web服务。

另外,NAT还可利用外部网络地址所携带的实例信息,支持多个实例之间的互访。

1.2组网需求

NAT典型组网实例

图1 NAT多实例组网

一个公司拥有13.1.1.1/24至13.1.1.4/24四个公网地址。公司内部划分了三个部门,彼此隔离到三个不同的v*n内,每个v*n可以看作一个实例。v*n1和v*n2的两个部门规划的网络内部IP相同。

1、两个v*n内[v*n1、v*n2]的10.1.1.200和10.1.1.100的用户可以访问Internet,其它用户不能访问Internet。两个v*n内用户访问Internet使用的公网地址为13.1.1.2;

2、公网用户Host4可以访问v*n [v*n1]内的FTP SERVER,Host4通过13.1.1.3访问FTP SERVER 1;

3、v*n3内的Host 3通过20.1.1.222地址,可以访问v*n2的FTP SERVER2。

1.3实现配置

1、按照拓扑完成IP地址等配置信息,完成v*n的设置,以及公网的路由设置。

2、需要在两个v*n[v*n1、v*n2]内静态路由方式设置到达公网FTP SERVER 4的下一跳IP,确定公网的出接口。

3、根据需求完成v*n内用户是否允许经过NAT的权限设置,添加ACL匹配两个MPLS v*n内的地址10.1.1.100/32、10.1.1.200/32。

参考命令行

[Router] acl number 2001

[Router-acl-basic-2001] rule permit v*n-instance v*n1 source 10.1.1.100 0

[Router-acl-basic-2001] rule permit v*n-instance v*n1 source 10.1.1.200 0

[Router-acl-basic-2001] rule permit v*n-instance v*n2 source 10.1.1.100 0

[Router-acl-basic-2001] rule permit v*n-instance v*n2 source 10.1.1.200 0[Router-acl-basic-2001] rule deny

[Router-acl-basic-2001] quit

4、建立NAT转换地址池,使用13.1.1.2。

参考命令行

<Router> system-view

[Router] nat address-group 1 13.1.1.2 13.1.1.2

5、在出口GE1/0上应用基于ACL的NAT出方向转换。

参考命令行

[Router] interface gigabitethernet 1/0

[Router-GigabitEthernet1/0] nat outbound 2001 address-group 1

此时可以实现v*n内的用户访问公网FTP SERVER 4的功能。每个NAT表项内,会有标明v*n的RD信息,用以区分相同网段的不同v*n用户。

6、在公网出接口GE1/0上,设置映射内部服务器的命令;命令中需要的元素有FTP SERVER对外映射的公网IP地址13.1.1.3/32、提供的服务为FTP、v*n内部FTP SERVER的IP地址、以及所在v*n信息。设置后,Host4就可以‘ftp 13.1.1.3’方式登陆FTP SERVER 1。

参考命令行

[Router] interface gigabitethernet 1/0

[Router-GigabitEthernet1/0] nat server protocol tcp global 13.1.1.3 ftp inside 10.1.1.100 ftp v*n-instance v*n1

7、v*n3内的Host 3需要访问v*n2的FTP SERVER2,首先需要在v*n 3的接口GE1/3上设置NAT内部SERVER相关的命令,此命令与上面类似。不过这次增加了虚拟SERVER IP地址所在的v*n信息。

参考命令行

[Router] interface gigabitethernet 1/3

[Router-GigabitEthernet1/3] nat server protocol tcp global 20.1.1.222 ftp v*n-instance v*n3 inside 10.1.1.100 ftp v*n-instance v*n2

8、v*n3中配置到达v*n2中FTP SERVER2的路由,v*n2中配置到达v*n3中Host3的路由。

此时完成相关配置,HOST 3可以通过‘ftp 20.1.1.222’的方式访问FTP SERVER 2。

2SR88采用多实例实现地址冲突情况下两次NAT应用

2.1功能说明

两次NAT:一个NAT变换能够同时实现源地址的变换和目的地址的变换。

双向NAT:能够从内网和外网同时发起NAT变换的首包流程,也就是既能实现内网对外网的访问,也能够同时实现外网对内网资源的访问。

2.2组网需求:

某银行需要引入外联单位进入内网,为了不暴露自身私网细节以及对外联网络的统一管理,要求将内网向外联单位访问的数据流量先NAT至对外统一网段100.0.0.0/16后再转发至相关外联单位,且要将外联单位向内网访问的数据流量先NAT至银行为其分配的外联单位网段后再进入内网,使得银行内网路由可统一管理。银行为外联单位1分配的网段为110.0.0.0/16,为外联单位2分配的网段为120.0.0.0/16。由于外联单位较多且都独自规划各自内网,在实施时出现一个外联单位和银行内网网段重叠情况,均为10.0.0.0/16。银行客户要求在出口设备上解决该地址重叠问题,并需保证各本来不互通的外联单位仍保证网络访问隔离,所有的NAT操作也只在其一台出口路由器SR88上进行。具体组网图见图2。

NAT典型组网实例

图2 两次NAT组网需求图

2.3实现分析

1.实现难点:

对于边界设备来说,两个接口都有相同网段的路由10.0.0.0/16,出现路由上的冲突,设备该如何将数据送到正确的出口进行转发;按照用户需求,银行与外联单位进行业务互通时,在银行出口设备上需要对源和目的均进行转换,要求设备能够同时转换源和目的IP,即具有两次NAT的功能;并需保证各本来不互通的外联单位仍保证网络访问隔离。

2.实现方式:

(1)将接口绑入v*n实现重叠路由隔离,NAT后的目的地址跨v*n寻址;

(2)利用静态NAT跨v*n转换实现源和目的地址的两次转换;

(3)配置路由策略实现外联单位间的路由隔离。

2.4实现配置

(1)配置v*n1、v*n2和v*n3分别用于绑定连接银行、外联单位1、外联单位2的物理接口,配置v*n NAT作为两次NAT的中转v*n。配置v*n NAT的export target,配置v*n1,v*n2和v*n3的import target与之匹配;

#

ip v*n-instance v*n1

description "Bank"

route-distinguisher 1:1

v*n-target 10:1 import-extcommunity

#

ip v*n-instance v*n2

description "Company1"

route-distinguisher 2:2

v*n-target 10:1 import-extcommunity

#

ip v*n-instance v*n3

description "Company2"

route-distinguisher 3:3

v*n-target 10:1 import-extcommunity

#

ip v*n-instance NAT

description "ForNatAddress"

route-distinguisher 10:1

v*n-target 10:1 export-extcommunity

#

(2)在NAT板卡视图下配置nat static net-to-net命令,将源v*n1,v*n2,v*n3的地址网段静态转换为v*n NAT实例下的分配地址网段,如将v*n1的10.0.0.0/16网段转换为v*n NAT的100.0.0.0/16网段;

#

interface NAT1/0/1

nat static net-to-net 10.0.0.0 v*n-instance v*n1 100.0.0.0 v*n-instance NAT 255.255.0.0

nat static net-to-net 10.0.0.0 v*n-instance v*n2 110.0.0.0 v*n-instance NAT 255.255.0.0

nat static net-to-net 20.0.0.0 v*n-instance v*n3 120.0.0.0 v*n-instance NAT 255.255.0.0

#

(3)启用BGP,在ipv4-family v*n-instance NAT视图下引入设备自动生成的NAT后网段静态路由;

#

bgp 100

ipv4-family v*n-instance NAT

import-route static

#

(4)配置两个ACL,第一个用于匹配路由110.0.0.0/16和120.0.0.0/16,第二个用于匹配路由100.0.0.0/16。配置两个route-policy 1和2,均只配置一个permit节点,route-policy 1匹配第一个ACL,route-policy 2匹配第二个ACL。再在银行侧的ip v*n-instance v*n1视图下配置import route-policy 1,在外联单位侧ip v*n-instance v*n2和v*n3视图下配置import route-policy 2。如此实现不同外联单位间的路由隔离。

#

acl number 2000

rule 0 permit source 110.0.0.0 0.0.255.255

rule 5 permit source 120.0.0.0 0.0.0.255

acl number 2001

rule 0 permit source 100.0.0.0 0.0.255.255

#

route-policy 1 permit node 10

if-match acl 2000

route-policy 2 permit node 10

if-match acl 2001

#

ip v*n-instance v*n1

import route-policy 1

#

ip v*n-instance v*n2

import route-policy 2

#

ip v*n-instance v*n3

import route-policy 2

#

3NAT实现Load Balance应用

3.1负载均衡概述

LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。

3.2负载均衡分类

负载均衡包括服务器负载均衡、防火墙负载均衡和链路负载均衡三种类型,三种负载均衡的应用场景如下:

1、服务器负载均衡:在数据中心等组网环境中,可以采用服务器负载均衡,将网络服务分担给多台服务器进行处理,提高数据中心的业务处理能力。

2、防火墙负载均衡:在防火墙的处理能力成为瓶颈的组网环境中,可以采用防火墙负载均衡,将网络流量分担给多台防火墙设备,提高防火墙的处理能力。

3、链路负载均衡:在有多个运营商出口的组网环境中,可以采用链路动态负载均衡,实现链路的动态选择,提高服务的可靠性。

3.3NAT方式的服务器负载均衡

下面介绍与NAT相关的服务器负载均衡的工作机制。NAT方式的负载均衡是指通过利用NAT技术对报文的源、目的地址进行转换,使客户端和各个真实服务器之间进行通信。

NAT方式的服务器负载均衡组网图2所示:

NAT典型组网实例

图2 NAT方式的服务器负载均衡组网图

NAT方式的服务器负载均衡包括以下几个基本元素:

1、集群(Cluster):对外提供特定服务的群体,包括LB device和Server。

2、LB device:负责分发各种服务请求到多台Server的设备。

3、Server:负责响应和处理各种服务请求的服务器。

4、VSIP:集群对外提供的虚服务IP(Virtual Service IP),供用户请求服务时使用。

5、Server IP:服务器的IP地址,供LB device分发服务请求时使用。

NAT方式服务器负载均衡的工作流程如图3所示:

图3 NAT方式的服务器负载均衡流程图

下面简要描述单向NAT转换的报文交互流程:

1、Host发送服务请求报文,报文的源IP为HostIP,报文目的IP为VSIP。

2、LB device接收到请求报文后,借助调度算法计算出应该将请求分发给哪台Server

3、LB device使用DNAT(Destination NAT,目的地址NAT)技术分发报文,报文的源IP为HostIP,报文目的IP为ServerIP。

4、Server接收并处理请求报文,返回响应报文,报文的源IP为Server IP,报文目的IP为Host IP。

5、LB device接收响应报文,转换源IP后转发,报文的源IP为VSIP,报文目的IP为Host IP。

NAT方式服务器负载均衡具有如下特点:

1、上述LB Device是作为单向NAT设备进行地址转换,LB Device还可以进行双向NAT转换,即LB Device选择服务器时,使用DNAT和SNAT技术对报文的目的地址和源地址都进行了转换。

2、所有请求和响应报文都经过LB进行转发,流程可控,便于扩展安全功能,这是优点,但LB Device负载较重,容易成为性能瓶颈;

3、组网灵活,对服务器没有额外要求,不需要修改服务器配置,适用于各种组网。

4NAT与DNS的组合应用

4.1DNS ALG

通常情况下,NAT只对报文头中的IP地址和端口信息进行转换,不对应用层数据载荷中的字段进行分析。然而一些特殊协议,它们报文的数据载荷中可能包含IP地址或端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。ALG(Application Level Gateway,应用层网关)主要完成对应用层报文的处理,主要用来解决在NAT环境中只转换IP地址和端口信息,无法有效处理数据载荷的问题。

如下组网图4中,如果NAT网关没有开启ALG,PC1访问WWW服务器就会出现问题:

NAT典型组网实例

图4 NATDNS处理组网图

l没有开启DNS ALG的情况下,处理流程如下

1、PC1访问WWW服务器,向外网的DNS服务器发送DNS解析请求,源IP为192.168.10.10,目的IP为DNS服务器地址;

2、DNS请求经过NAT网关转换源地址后发送给DNS服务器;

3、DNS服务器对PC1的请求进行响应,响应内容包括WWW域名与IP地址的对应关系,注意,外网DNS服务器上www域名对应的IP地址是NAT网关上配置的外网地址202.10.1.1;

4、NAT网关收到响应报文后转换目的地址发向PC1;

5、PC1收到该响应报文后向外网地址202.10.1.1发起数据访问,而真实的服务器在内网,显然这样的访问不会成功。

l开启DNS ALG后的处理流程:

NAT网关收到DNS响应报文,由于开启了DNS ALG功能,所以NAT网关会监听DNS服务器的响应报文,在本例中由于外网接口上配置的NAT server公网地址为202.10.1.1,返回的DNS响应报文中域名对应的地址也是202.10.1.1,所以NAT网关会修改DNS响应报文,将DNS响应报文中域名对应的地址修改为内网服务器真实地址192.168.10.1,同时将响应报文的目的IP进行转换目的地址后发向PC1;

PC1收到该响应报文后向192.168.10.1发起数据访问,由于真实的服务器就在内网,所以访问成功。

4.2DNSmapping

DNS mapping主要用于解决普通的NAT ALG在特定组网时的问题,如在图5中:DNS服务器在公网上,NAT网关上使用一个公网地址映射内部的多个Server,内网PC1需要通过域名正常访问内网服务器。

NAT典型组网实例

图5 DNS mapping组网图

l问题现象描述

如果没有开启DNS mapping特性

1、PC1访问WWW服务器和FTP服务器,向外网的DNS服务器发送两份DNS请求,源IP为192.168.10.10,目的IP为DNS服务器地址;

2、两份DNS请求经过NAT网关转换源地址后发送给DNS服务器;

3、DNS服务器对PC1的请求进行响应,两份响应内容分别为:WWW域名对应地址202.10.1.1,FTP域名对应地址202.10.1.1,注意DNS响应报文中不包括端口信息;

4、NAT网关收到响应报文,由于开启了DNS ALG功能,所以NAT网关会监听DNS服务器的响应报文,在本例中由于外网接口上配置的NAT server公网地址为202.10.1.1,返回的DNS响应报文中域名对应的地址也是202.10.1.1,所以需要修改DNS响应报文,将DNS响应报文中域名对应的地址修改为内网服务器真实地址,但问题出现了,由于DNS服务器发回的DNS响应报文中不包括端口信息,所以网关在修改DNS响应报文时,有可能将内部真实的服务器地址填写错误,如:将ftp域名对应的服务器地址也填写成192.168.10.1;

5、PC1收到该响应报文后向192.168.10.1发起ftp访问,但实际开启ftp服务的实际是192.168.10.2,所以ftp访问不会成功。

lDNS mapping原理

配置了NAT的接口上收到DNS响应报文后会根据报文中的域名查找用户配置的映射表,如果存在对应的表项,则根据表项内的“公网地址-公网端口-协议类型”查找内网服务器,如果找到指定的内部服务器,则用服务器的私网地址替换DNS查询结果中的公网地址。如果没有配置此域名或对应的内部服务器不存在,则按原来流程替换。然后正常转发此DNS响应报文。这样就能避免前面提到的多个内网服务器对应一个公网地址时出现问题。

l使能DNS mapping后的处理流程

在NAT网关上配置DNS mapping:

nat dns-map domain www.com protocol tcp ip 202.10.1.1 port www

nat dns-map domainftp.comprotocol tcp ip 202.10.1.1 port ftp

加载上述配置后NAT网关的处理流程如下:

NAT网关收到DNS服务器返回的DNS响应报文,载荷中域名ftp.com对应IP地址202.10.1.1,NAT网关查找dns-map表,找到匹配的表项,得到公网地址-域名-公网端口-协议类型­的对应关系,然后再从接口的nat server配置中得到对应的内网FTP服务器地址192.168.10.2,NAT网关将DNS响应报文中的地址修改为192.168.10.2发向PC1,PC1收到后向192.168.10.2发起ftp访问,访问正常;PC1如果向www.com发起访问,处理方式也类似,能够解析到对应内网WWW服务器的IP地址,不再赘述。

l在dns-map表中为何不直接指定私网服务器的IP地址?

有两个原因:

1、在实际组网中,对外提供的nat server公网地址可以认为是固定的(外网用户只看到公网地址,并且在DNS server上记录的也是域名与公网地址的映射),但内网服务器的地址未必是固定的,如果内网服务器地址变化,dns-map表不需变化,仅修改接口nat server的配置即可;

2、在有些组网中,需要提供服务器负载均衡功能,即:对外表现为一个nat server外网服务器,内网可以有多个内网服务器,实际浏览可以根据算法重定向到不同内网服务器。这种情况下dns-map表不需变化,在nat server的配置中关联server-group即可。

4.3地址重叠情况下NAT与DNS的组合应用

NAT典型组网实例

图6地址重叠情况下NAT与DNS组合应用

在上面的场景中,内外网地址完全重叠,需要双向NAT(SNAT、DNAT)与DNS ALG组合才能实现正常访问,流程简述如下:

1、PC1向WWW服务器发起访问,首先发起DNS查询,源IP为192.168.10.1目的IP为20.1.1.2;

2、查询报文到达NAT网关,网关经过双向NAT处理后发向DNS server的报文源IP为10.1.1.1,目的IP为192.168.10.2,源和目的IP全部改变;

3、DNS Server收到查询后向NAT网关发出响应报文,源IP为192.168.10.2,目的IP为10.1.1.1,DNS载荷为WWW服务器对应的IP地址192.168.10.1;

4、NAT网关收到后匹配双向NAT建立的session并且经过DNS ALG处理,发向PC1报文的源IP为20.1.1.2,目的IP为192.168.10.1,DNS载荷变成20.1.1.1;

5、PC1向WWW服务器发起连接,源IP为192.168.10.1,目的IP为20.1.1.1;

6、WWW数据报文到NAT网关,网关经过双向NAT处理后发向WWW服务器的报文源IP为10.1.1.1,目的IP为192.168.10.1,源和目的IP全部改变。

7、WWW回程报文的地址转换流程与DNS报文处理类似,不再详述。

注:地址重叠场景下的NAT与ALG处理在我司各产品上实现及支持情况可能有差异,请以具体产品实现为准。

5NAT与DDNS的组合应用

我们知道,DNS域名比IP更容易被记住,所以服务器一般会有自己的域名。但对于一个使用NAT来连接公网的企业或组织,仅有的出口公网IP也可能是动态分配的,静态配置的DNS无法适应这种场景。此时就会用到动态DNS技术,即DDNS。,DDNS协议用于这种情况下对域名与IP地址的对应关系进行及时更新,DDNS客户端会将变化后的结果及时更新给服务器,DNS客户可以按照正常的DNS查询来得知这种变化。DDNS特性与NAT特性共同部署时的组网如下:

NAT典型组网实例

图7 NAT环境下的DDNS

5.1组网描述

内网服务器位于NAT网关之后,需要配置NAT Server,同时为了使内外网上的所有用户都可以访问内网服务器提供的服务,NAT Server又必须采用对端给本端接口动态分配的公网地址,这导致在DNS服务器上域名对应的地址是动态变化的,因此在NAT网关上需要采用DDNS更新报文将最新的域名与IP对应关系发送给DDNS Server。其中NAT网关同时充当DDNS client角色,负责将外网口地址(同时也是NAT Server的global地址)与域名的对应关系及时向DDNS Server进行更新。

5.2处理过程描述

1、NAT网关的外网地址更新后向DDNS server发送DDNS更新报文,假设对端给NAT网关分配到的地址为202.10.10.10。

2、DDNS Server收到后对域名www.com与IP的对应关系进行更新。

3、PC1访问WWW服务器,向外网的DNS服务器发送请求,源IP为192.168.10.10,目的IP为DNS服务器地址。

4、DNS请求经过NAT网关转换源地址后发送给DNS服务器。

5、DNS服务器对PC1的请求进行响应,响应内容包括WWW域名与IP地址的对应关系,由于服务器中的域名与IP地址对应关系已经经过更新,所以回应的DNS响应报文中WWW.COM对应的地址为202.10.10.10。

6、NAT网关收到DNS响应报文后检查该消息,DNS ALG发现当前NAT Server地址与收到的DNS响应报文中的地址相同,就是动态获取的接口地址,所以需要修改DNS响应报文,将DNS响应报文中域名对应的地址修改为内网服务器的真实IP地址192.168.10.1,同时将响应报文的目的IP进行转换目的地址后发向PC1。

7、PC1收到该响应报文后向WWW服务器的内网地址192.168.10.1发起访问,访问成功。

注:目前,DDNS更新过程没有统一的标准,向不同的DDNS服务器请求更新的过程各不相同。

5.3总结

由上面的步骤可以看出,对于内网的PC1,在DNS Server返回的响应报文中域名与IP地址对应关系动态变化的情况下,NAT网关在ALG的协助下进行载荷修改,内网的PC1总是能够得知内网服务器的真实IP地址,可以直接发起访问;

对于外网的PC2,能够直接收到DNS server发送的DNS响应报文,因此发起的真实数据访问可以根据DNS响应的内容进行动态变化。

DNS客户端向DDNS server发起DNS查询,查询过程是标准的DNS查询,流程与DNS客户端向普通DNS server发起查询过程完全相同,如果出现与图4、图5类似的组网需要用到前述介绍过的ALG和DNS Mapping特性,处理流程与前述流程类似。