NAT-T技术原理简单分析及应用实验解析

1.首先我们就IPSEC VPN的部署场景来做简要分析:
NAT-T技术原理简单分析及应用实验解析_第1张图片
场景1:如图所示,企业的总部与分支机构分别架设了VPN设备,分支机构的需求是同步企业内部的业务数据(属企业内部的机密信息),那麽就必须确保数据在公网上是安全包密传递的。这种情况下我们可以直接用IPSEC VPN的隧道工作模式或传输工作模式(用传输工作模式的前提是底层要有隧道),使用IPSEC VPN的ESP(封装安全载荷)协议(使用ESP协议是因为ESP可以同时完成对数据的加密及校验)来保障数据在公网上是安全、加密传输的。
NAT-T技术原理简单分析及应用实验解析_第2张图片
场景2:如图所示,企业一般为了自己内网的安全考虑,在自己内部局域网的出口上是会架设防火墙的,并且会要求内部的所有设备通过防火墙的代理来上公网,那麽这就必然要使用NAT技术,但是使用了NAT技术就会带来一个新的问题,我们对这个问题来从两个方面入手分析:
1) 企业总部与分支机构都只架设一台VPN设备的情况下,并且企业总部方面是通过防火墙的代理来与分支构建VPN通道,那麽NAT技术此时是没有问题的,数据包出内网时经过改头换面可以到达对端VPN设备上,而分支机构给总部回包的话数据包是可以正常回到总部边界的防火墙上的,因为数据包在出内网时经过了NAT的转换,所以会在防火墙上形成一张地址转换列表,当分支回给总部的包到了防火墙上时,防火墙可以根据地址转换表将数据包转到VPN设备之上
技术方面:总部这边应用了防火墙来代理上网的话,总部与分支之间的VPN设备对接就可以直接应用IPSEC的隧道工作模式,并且选用IPSEC VPN的野蛮模式来进行对接,因为经过NAT,数据包的IP地址发生了转换(对于主模式来说IP地址发生改变,会导致协商失败的,因为主模式默认是以IP地址来做身份ID标识来进行协商的;具体情况要根据不同厂商的设备来看,如果厂商的设备支持主模式的身份ID可以自由配置的话,选用主模式也是可以的)。
2) 多VPN的情况下(企业总部内有多台VPN设备并且都是通过防火墙代理来上公网的情况下同分支内的VPN设备构建VPN通道):标准的IPSEC VPN只能同时进行一个VPN的连接。对于多VPN的连接存在着
两个严重的问题

问题一:总部这边,多台VPN设备都通过一台防火墙的代理来与分支构建IPSEC VPN通道,多台VPN设备将使用相同的源目端口号发起请求,再经过了代理设备的NAT转换后,所有想要构建VPN通道的设备都只拥有了相同的源IP地址和端口号;分部这边,总部那麽多台VPN设备发来的请求IP地址和端口号都是相同的,那麽该如何构建通道呢?
问题二:假设IPSEC VPN的通道构建完成,那麽分支回给总部某台VPN设备的数据包来到了总部这边的防火墙设备上,防火墙设备如何区分该转发给哪台VPN设备呢?
解决方案(NAT-T协议):
NAT-T协议运用在IPSec VPN中,在IKE协商和VPN连接时,允许源端口为非UDP 500端口,使用目的端口是UDP4500端口。
NAT-T协议为ESP增加了UDP头部,从而解决了数据传输过程经过防火墙后无法进行端口复用的问题。
NAT-T协议运用:
1)一旦运用到NAT-T技术,各大厂商的设备一定是让VPN设备,变换目标端口号或者是不检查源端口号
深信服设备是将目标端口号改为4500,源端口号任意;
CISCO 依然是udp的端口号500,但是应用了NAT-T技术将不检查源端口号。
2)NAT-T技术为ESP增加UDP头部(即增加端口号);Sangfor and Cisco 用源目端口号4500,到达NAT,NAT将自动为你更改源端口,也不用检查源端口号。(厂商可以自行修改,可以改为非UDP的非4500)。(实际上用TCP来为ESP增加一个头部也是可以的,但是TCP做的封装大,会增加传输的负荷。)经过NAT-T转换的数据包结构如下图所示:
NAT-T技术原理简单分析及应用实验解析_第3张图片
使用NAT的时候,IPSEC VPN在做动态NAT的时候是无法做连接的,因为动态NAT的原理是要先出去才能回来,所以至少得一方做静态的NAT。
2.NAT-T技术实验解析:
NAT-T技术原理简单分析及应用实验解析_第4张图片
如图所示为部署拓扑图,要求:
R3、R4为企业分支机构,R1、R5为企业总部,现要在总部的边界R1与分支的边界R3上开启代理功能,做NAT,企业分支内部R4与企业总部内部R5构建DMVPN环境,同时应用IPSEC对数据流量实施安全保护。
需要使用的技术:IPV4、静态路由、NAT(NAT-T协议在配置完NAT是默认开启的)、DMVPN、IPSEC。
1.拓扑具体的IPV4地址规划:
R1的 Loopback0的IPV4地址100.1.1.1/32;
R1-R2相连的Ethernet0/0的IPV4地址10.100.12.1/24;
R1-R5相连的Ethernet0/1的IPV4地址10.100.15.1/24;
R2的 Loopback0的IPV4地址100.2.2.2/32;
R2-R1相连的Ethernet0/0的IPV4地址10.100.12.2/24;
R2-R3相连的Ethernet0/1的IPV4地址10.100.23.2/24;
R3的 Loopback0的IPV4地址100.3.3.3/32;
R3-R2相连的Ethernet0/1的IPV4地址10.100.23.3/24;
R3-R4相连的Ethernet0/0的IPV4地址10.100.34.3/24;
R4的 Loopback0的IPV4地址100.4.4.4/32;
R4-R3相连的Ethernet0/0的IPV4地址10.100.34.4/24;
R5的 Loopback0的IPV4地址100.5.5.5/32;
R5-R1相连的Ethernet0/0的IPV4地址10.100.15.5/24;
总部R5与分支R4之间构建DMVPN环境:
R4的 Tunnel0的IPV4地址200.1.1.4/24;
R5的 Tunnel0的IPV4地址200.1.1.5/24;
2.底层路由的配置(公网可通,用静态路由的写法):

R3->R2/R3(config)# ip route 0.0.0.0 0.0.0.0 10.100.23.2   
R1->R2/R1(config)# ip route 0.0.0.0 0.0.0.0 10.100.12.2

3.在企业边界上启用NAT(总部的边界R1和分支的边界R3分别启用):
先抓取允许通过NAT转换的用户的IP地址

R3(config)# access-list 100 permit ip any any

R3上做NAT

R3(config)# ip nat inside source list 100 interface Ethernet0/1 overload
R3(config)# inter ethernet 0/0
R3(config)# ip nat inside
R3(config)#interface Ethernet0/1
R3(config)#ip nat outside

总部的边界R1上做同分支边界相同的操作。
4.内网底层路由的配置(静态路由写法):

R4->R3/R4(config)# ip route 0.0.0.0 0.0.0.0 10.100.34.3
R5->R1/R5(config)# ip route 0.0.0.0 0.0.0.0 10.100.15.1

5.搭建DMVPN环境:
配置隧道口地址

R4(config)#interface Tunnel0
R4(config -if)#ip address 200.1.1.1 255.255.255.0

定义隧道的源和目标

R4(config -if)# tunnel key 10
R4(config -if)# tunnel source Ethernet0/0
R4(config -if)# tunnel mode gre multipoint

NHRP协议的开启:

R4(config -if)# ip nhrp network-id 100
R4(config -if)# ip nhrp authentication cisco
R4(config -if)# ip nhrp nhs 200.1.1.5                  //企业总部的隧道口地址
R4(config -if)# ip nhrp map 200.1.1.5 10.100.12.1       //将总部的隧道口地址映射为其公网口的地址

总部的R5上做同分支R4上相同的配置。
6.启用IPSEC对DMVPN构建的隧道实施加密保护:

R4(config-isakmp)#crypto isakmp policy 10       
R4(config-isakmp)#encr 3des
R4(config-isakmp)#hash md5
R4(config-isakmp)#authentication pre-share
R4(config-isakmp)#group 2
R4(config )# crypto isakmp key ccie address 0.0.0.0
R4(config )#crypto ipsec transform-set ccie esp-3des esp-md5-hmac 
R4(cfg-crypto-trans)# mode transport                //IPSEC的传输工作模式,借用DMVPN的隧道

R4(config )#crypto ipsec profile ccie                  //CISCO的SVI配法
R4(ipsec-profile) set transform-set ccie
R4(config)#inter tunnel 0
R4(config-if) #tunnel protection ipsec profile ccie       //隧道口调用策略集

企业总部R5上启用和分支R4相同的IPSEC配置。

*Nov 13 10:29:23.961: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON 弹出此日志说明IPSEC调用成功

R4#show crypto engine connections active //通过此命令来查看IPSEC的引擎,我们可以看到IPSEC构建的三条通道,如下图所示:
NAT-T技术原理简单分析及应用实验解析_第5张图片
补充:如果设备上默认没有开启NAT-T,使用如下命令开启:

R4(config)#crypto ipsec nat-transparency udp-encapsulation

总结:通过NAT-T协议的使用,我们可以实现多VPN的构建,IPSEC的IKE第一阶段由隧道出接口为500的源端口号和各大厂商指定的目标端口号(根据你所使用的设备来决定)来发起IPSEC的IKE第一阶段的协商,但是当隧道另一端的入接口上无法正确识别并将其转换为正确的500端口号时,我们要在接收方的边界做静态映射,将其转换为正确的500端口,完成IKE第一阶段;IKE的第二阶段,发起方以源目端口号4500发起IPSEC的IKE第二阶段的协商,类似于IKE的第一阶段,接收方会在完成端口转换之后向发起方回应一个源端口为4500的确认报文,IKE的第二阶段仍然需要我们在边界设备上做静态映射;NAT下IPSEC VPN的部署,面对的问题有两个,一个是端口号复用的问题,一个是TCP/UDP的伪首部校验机制带来的问题(这个问题是由于主机对VPN的数据包进行了伪首部校验,我们可以在VPN设备上修改这个数据包,最终再转发给主机,通过伪首部校验)。解决端口号复用的问题,就得通过NAT-T协议(俗称NAT穿越技术)的解决。

你可能感兴趣的:(网络)