• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    NAT典型组网实例

    作者:  |  上传时间:2012-06-01  |  关键字:网络大爬虫5-NAT专题

    1      NAT多实例

    1.1    功能说明

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

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

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

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

     

    1.2    组网需求

    1 NAT多实例组网

    一个公司拥有13.1.1.1/2413.1.1.4/24四个公网地址。公司内部划分了三个部门,彼此隔离到三个不同的VPN内,每个VPN可以看作一个实例。VPN1VPN2的两个部门规划的网络内部IP相同。

    1、 两个VPN[VPN1VPN2]10.1.1.20010.1.1.100的用户可以访问Internet,其它用户不能访问Internet。两个VPN内用户访问Internet使用的公网地址为13.1.1.2

    2、 公网用户Host4可以访问VPN [VPN1]内的FTP SERVERHost4通过13.1.1.3访问FTP SERVER 1

    3、 VPN3 内的Host 3 通过20.1.1.222地址,可以访问VPN2FTP SERVER2

    1.3    实现配置

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

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

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

    参考命令行

    [Router] acl number 2001

    [Router-acl-basic-2001] rule permit vpn-instance vpn1 source 10.1.1.100 0

    [Router-acl-basic-2001] rule permit vpn-instance vpn1 source 10.1.1.200 0

    [Router-acl-basic-2001] rule permit vpn-instance vpn2 source 10.1.1.100 0

    [Router-acl-basic-2001] rule permit vpn-instance vpn2 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上应用基于ACLNAT出方向转换。

    参考命令行

    [Router] interface gigabitethernet 1/0

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

     

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

     

    6、 在公网出接口GE1/0上,设置映射内部服务器的命令;命令中需要的元素有FTP SERVER对外映射的公网IP地址13.1.1.3/32、提供的服务为FTPVPN内部FTP SERVERIP地址、以及所在VPN信息。设置后,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 vpn-instance vpn1

     

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

    参考命令行

    [Router] interface gigabitethernet 1/3

    [Router-GigabitEthernet1/3] nat server protocol tcp global 20.1.1.222 ftp vpn-instance vpn3  inside 10.1.1.100 ftp vpn-instance vpn2

     

    8、 VPN3中配置到达VPN2FTP SERVER2的路由,VPN2中配置到达VPN3Host3的路由。

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

    2      SR88采用多实例实现地址冲突情况下两次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

    2  两次NAT组网需求图

    2.3    实现分析

    1.    实现难点:

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

    2.    实现方式:

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

    (2)  利用静态NATVPN转换实现源和目的地址的两次转换;

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

    2.4    实现配置

    (1)  配置vpn1vpn2vpn3分别用于绑定连接银行、外联单位1、外联单位2的物理接口,配置vpn NAT作为两次NAT的中转VPN。配置vpn NATexport target,配置vpn1vpn2vpn3import target与之匹配;

    #

    ip vpn-instance vpn1

     description "Bank"

     route-distinguisher 1:1

    vpn-target 10:1 import-extcommunity

    #

    ip vpn-instance vpn2

     description "Company1"

     route-distinguisher 2:2

    vpn-target 10:1 import-extcommunity

    #

    ip vpn-instance vpn3

     description "Company2"

     route-distinguisher 3:3

    vpn-target 10:1 import-extcommunity

    #

    ip vpn-instance NAT

     description "ForNatAddress"

     route-distinguisher 10:1

     vpn-target 10:1 export-extcommunity

    #

    (2)  NAT板卡视图下配置nat static net-to-net命令,将源vpn1vpn2vpn3的地址网段静态转换为vpn NAT实例下的分配地址网段,如将vpn110.0.0.0/16网段转换为vpn NAT100.0.0.0/16网段;

    #

    interface NAT1/0/1

     nat static net-to-net 10.0.0.0 vpn-instance vpn1 100.0.0.0 vpn-instance NAT 255.255.0.0

     nat static net-to-net 10.0.0.0 vpn-instance vpn2 110.0.0.0 vpn-instance NAT 255.255.0.0

     nat static net-to-net 20.0.0.0 vpn-instance vpn3 120.0.0.0 vpn-instance NAT 255.255.0.0

    #

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

    #

    bgp 100

    ipv4-family vpn-instance NAT

      import-route static

    #

    (4)  配置两个ACL,第一个用于匹配路由110.0.0.0/16120.0.0.0/16,第二个用于匹配路由100.0.0.0/16。配置两个route-policy 12,均只配置一个permit节点,route-policy 1匹配第一个ACLroute-policy 2匹配第二个ACL。再在银行侧的ip vpn-instance vpn1视图下配置import route-policy 1,在外联单位侧ip vpn-instance vpn2vpn3视图下配置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 vpn-instance vpn1

    import route-policy 1

    #

    ip vpn-instance vpn2

    import route-policy 2

    #

    ip vpn-instance vpn3

    import route-policy 2

    #

     

    3      NAT实现Load Balance应用

    3.1    负载均衡概述

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

    3.2    负载均衡分类

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     

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

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

    1、 Host发送服务请求报文,报文的源IPHostIP,报文目的IPVSIP

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

    3、 LB device使用DNATDestination NAT,目的地址NAT)技术分发报文,报文的源IPHostIP,报文目的IPServerIP

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

    5、 LB device接收响应报文,转换源IP后转发,报文的源IPVSIP,报文目的IPHost IP

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

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

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

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

     

    4      NATDNS的组合应用

    4.1    DNS ALG

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

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

    4  NAT DNS处理组网图

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

    1、 PC1访问WWW服务器,向外网的DNS服务器发送DNS解析请求,源IP192.168.10.10,目的IPDNS服务器地址;

    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.2    DNS mapping

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

     

    5  DNS mapping组网图

    l  问题现象描述

    如果没有开启DNS mapping特性

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

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

    3、 DNS服务器对PC1的请求进行响应,两份响应内容分别为:WWW域名对应地址202.10.1.1FTP域名对应地址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访问不会成功。

    l  DNS 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 domain ftp.com protocol tcp ip 202.10.1.1 port ftp

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

    NAT网关收到DNS服务器返回的DNS响应报文,载荷中域名ftp.com对应IP地址202.10.1.1NAT网关查找dns-map表,找到匹配的表项,得到公网地址-域名-公网端口-协议类型­的对应关系,然后再从接口的nat server配置中得到对应的内网FTP服务器地址192.168.10.2NAT网关将DNS响应报文中的地址修改为192.168.10.2发向PC1PC1收到后向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    地址重叠情况下NATDNS的组合应用

    6 地址重叠情况下NATDNS组合应用

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

    1、 PC1WWW服务器发起访问,首先发起DNS查询,源IP192.168.10.1目的IP20.1.1.2

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

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

    4、 NAT网关收到后匹配双向NAT建立的session并且经过DNS ALG处理,发向PC1报文的源IP20.1.1.2,目的IP192.168.10.1DNS载荷变成20.1.1.1

    5、 PC1WWW服务器发起连接,源IP192.168.10.1,目的IP20.1.1.1

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

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

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

    5      NATDDNS的组合应用

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

    7 NAT环境下的DDNS

    5.1    组网描述

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

    5.2    处理过程描述

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

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

    3、 PC1访问WWW服务器,向外网的DNS服务器发送请求,源IP192.168.10.10,目的IPDNS服务器地址。

    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类似的组网需要用到前述介绍过的ALGDNS Mapping特性,处理流程与前述流程类似。