IPSEC VPN 的NAT穿越详解.docx
- 文档编号:6772805
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:11
- 大小:18.30KB
IPSEC VPN 的NAT穿越详解.docx
《IPSEC VPN 的NAT穿越详解.docx》由会员分享,可在线阅读,更多相关《IPSEC VPN 的NAT穿越详解.docx(11页珍藏版)》请在冰豆网上搜索。
IPSECVPN的NAT穿越详解
IPSECVPN的NAT穿越详解
IPSECVPN 的NAT穿越
IPSec是基于网络层的,不能穿越通常的NAT、防火墙,这篇文章就是要讨论,在需要NAT网络的环境中,如果使用IPsecVPN 隧道技术。
IPsec 协议有两种运行模式:
IPSec隧道模式
IPSec传输模式
隧道模式通常是建立在双方的网关之间的。
传输模式下,IPSec主要对上层的传输进行封装保护,通常情况下,传输模式只用于两台主机之间的通信。
因为我们讨论的是NAT环境下的VPN传输,所以我们就只是关注隧道模式下IPSec是如何动作的。
不过我们先来看一看两种模式的区别,下面给出包头的结构,就一目了然。
一、封装AH认证头的两种方式的不同
1、传输模式:
AH协议(IP协议号为51)提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。
AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护。
可选择的认证算法有MD5(MessageDigest)、SHA-1(SecureHashAlgorithm)等。
MD5算法的计算速度比SHA-1算法快,而SHA-1算法的安全强度比MD5算法高。
设计AH认证协议的目的是用来增加IP数据报的安全性。
AH协议提供无连接的完整性、数据源认证和抗重放保护服务,但是AH不提供任何保密性服务。
IPSec验证报头AH是个用于提供IP数据报完整性、身份认证和可选的抗重传攻击的机制,但是不提供数据机密性保护。
验证报头的认证算法有两种:
一种是基于对称加密算法(如DES),另一种是基于单向哈希算法(如MD5或SHA-1)。
传输模式只对上层协议数据(传输层数据)和IP头中的固定字段提供认证保护,把AH插在IP报头的后面,主要适合于主机实现。
2、隧道模式:
隧道模式把需要保护的IP包封装在新的IP包中,作为新报文的载荷,然后把AH插在新的IP报头的后面。
隧道模式对整个IP数据报提供认证保护。
二、ESP认证加密方法
传输模式:
隧道模式:
ESP(EncapsulateSecurityPayload,封装安全载荷)协议:
封装安全载荷(ESP)用于提高Internet协议(IP)协议的安全性。
它可为IP提供机密性、数据源验证、抗重放以及数据完整性等安全服务。
ESP属于IPSec的机密性服务。
其中,数据机密性是ESP的基本功能,而数据源身份认证、数据完整性检验以及抗重传保护都是可选的。
ESP主要支持IP数据包的机密性,它将需要保护的用户数据进行加密后再重新封装到新的IP数据包中。
上面看过了AH和ESP认证头的结构,与两种模式下的不同。
下面讨论的是,为什么在NAT环境中,ipsecvpn不能使用AH认证方法?
IPSec协议的主要目标是保护IP数据包的完整性,这意味着IPSec会禁止任何对数据包的修改。
但是NAT处理过程是需要修改IP数据包的IP包头、端口号才能正常工作的。
所以,如果从我们的网关出去的数据包经过了ipsec的处理,当这些数据包经过NAT设备时,包内容被NAT设备所改动,修改后的数据包到达目的地主机后其解密或完整性认证处理就会失败,于是这个数据包被认为是非法数据而丢弃。
无论传输模式还是隧道模式,AH都会认证整个包头,不同于ESP的是,AH还会认证位于AH头前的新IP头,当NAT修改了IP头之后,IPSec就会认为这是对数以完整性的破坏,从而丢弃数据包。
因此,AH是约可能与NAT一起工作的。
意思就是说,AH处理数据时,所使用的数据是整个数据包,甚至是IP包头的IP地址,也是处理数据的一部分,对这些数据作整合,计算出一个值,这个值是唯一的,即只有相同的数据,才可能计算出相同的值。
当NAT设备修改了IP地址时,就不符合这个值了。
这时,这个数据包就被破坏了。
而ESP并不保护IP包头,ESP保护的内容是ESP字段到ESP跟踪字段之间的内容,因此,如何NAT只是转换IP的话,那就不会影响ESP的计算。
但是如果是使用PAT的话,这个数据包仍然会受到破坏。
所以,在NAT网络中,只能使用IPSec的ESP认证加密方法,不能用AH。
但是也是有办法解决这个缺陷的,不能修改受ESP保护的TCP/UDP,那就再加一个UDP报头。
解决方案:
NAT穿越
NAT-T的基本思路是IPSec封装好的数据包外再进行一次UDP数据封装。
这样,当此数据包穿过NAT网关时,被修改的只是最外层的IP/udp数据报。
NAT-T的操作步骤:
一、判断双方是否支持NAT-T,这是IKE协商的第一阶段,双方通过发送一个VENDORID来识别是否支持NAT-T,等一下做实验会看到这个。
二、判断通信链路上是否存在NAT设备,这一步是NAT发现,NAT发现的原理是判断通信方的IP地址和端口是否发生了改变,判断的方法是,使用IP地址和端口号进行HASH运算,送往对方进行校验。
一旦发现NAT,则立即进行端口浮动,也就是在IKE协议的第二阶段将IKE的UDP500浮动到UDP4500端口。
三、进行ESP处理
做做实验吧,不然没意义。
首先我们先不做NAT,把IPSECVPN做通。
1.
2. R0:
3. cryptoisakmppolicy10
4. encr3des
5. authenticationpre-share
6. group2
7. cryptoisakmpkey6yeeloneaddress21.1.1.1255.255.255.0
8. !
9. !
10.cryptoipsectransform-setciscoesp-3des
11.!
12.cryptomapcisco10ipsec-isakmp
13. setpeer21.1.1.1
14. settransform-setcisco
15. matchaddress100
16.
17.interfaceLoopback0
18. ipaddress192.168.1.1255.255.255.0
19.!
20.interfaceSerial0/0
21. ipaddress20.1.1.20255.255.255.0
22. serialrestart-delay0
23. cryptomapcisco
24.
25.
26.routerospf100
27. network20.1.1.200.0.0.0area0
28. network192.168.1.10.0.0.0area0
29.!
30.i
31.access-list100permitip192.168.1.00.0.0.255172.16.1.00.0.0.255
1.
2. R1:
3. cryptoisakmppolicy10
4. encr3des
5. authenticationpre-share
6. group2
7. cryptoisakmpkey6yeeloneaddress20.1.1.20255.255.255.0
8. !
9. !
10.cryptoipsectransform-setciscoesp-3des
11.!
12.cryptomapcisco10ipsec-isakmp
13. setpeer20.1.1.20
14. settransform-setcisco
15. matchaddress100
16.
17.interfaceLoopback0
18. ipaddress172.16.1.1255.255.255.0
19.!
20.interfaceSerial0/0
21. ipaddress21.1.1.1255.255.255.0
22. serialrestart-delay0
23. cryptomapcisco
24.
25.
26.routerospf100
27. router-id1.1.1.1
28. log-adjacency-changes
29. network10.1.1.20.0.0.0area0
30. network12.1.1.10.0.0.0area0
31. network21.1.1.10.0.0.0area0
32. network172.16.1.10.0.0.0area0
33.
34.access-list100permitip172.16.1.00.0.0.255192.168.1.00.0.0.255
1. R2:
2. routerospf100
3. router-id2.2.2.2
4. log-adjacency-changes
5. network12.1.1.20.0.0.0area0
6. network20.1.1.20.0.0.0area0
7. network21.1.1.20.0.0.0area0
这个就是UDP报头,端口号是500.
下面我们开始做NAT转换。
先帖上我的配置
1. R1:
R1的配置基本没有任何改变。
2. cryptoisakmppolicy10
3. encr3des
4. authenticationpre-share
5. group2
6. cryptoisakmpkey6yeeloneaddress23.1.1.3255.255.255.0
7. !
8. !
9. cryptoipsectransform-setmysetesp-3desesp-md5-hmac
10.!
11.cryptomapcisco10ipsec-isakmp
12. setpeer23.1.1.3
13. settransform-setmyset
14. matchaddress100
15.
16.interfaceLoopback0
17. ipaddress192.168.1.1255.255.255.0
18.!
19.interfaceSerial0/0
20. ipaddress12.1.1.1255.255.255.0
21. ipnatinside
22. ipvirtual-reassembly
23. serialrestart-delay0
24. cryptomapcisco
25.!
26.interfaceSerial0/1
27. noipaddress
28. ipnatoutside
29. ipvirtual-reassembly
30. shutdown
31. serialrestart-delay0
32.!
33.routerospf100
34. log-adjacency-changes
35. network0.0.0.0255.255.255.255area0
36.
37.
38.access-list100permitip192.168.1.00.0.0.255172.16.1.00.0.0.255
1. R2:
nat配置
2.
3. interfaceSerial0/0
4. ipaddress12.1.1.2255.255.255.0
5. ipnatinside
6. ipvirtual-reassembly
7. serialrestart-delay0
8. !
9. interfaceSerial0/1
10. ipaddress23.1.1.2255.255.255.0
11. ipnatoutside
12. ipvirtual-reassembly
13. serialrestart-delay0
14.!
15.
16.routerospf100
17. log-adjacency-changes
18. network0.0.0.0255.255.255.255area0
19.!
20.iphttpserver
21.noiphttpsecure-server
22.!
23.!
24.ipnatinsidesourcelist100interfaceSerial0/1overload
25.ipnatinsidesourcestaticudp12.1.1.1500interfaceSerial0/1500
26.ipnatinsidesourcestaticudp12.1.1.14500interfaceSerial0/14500
27.ipnatinsidesourcestaticesp12.1.1.1interfaceSerial0/1
28.!
29.上面三条命令是建立vpn隧道的协商用的。
这在nat穿越中是关键。
30.access-list100permitip192.168.1.00.0.0.255any
31.
1. R3:
注意看R3的红色部分
2. cryptoisakmppolicy10
3. encr3des
4. authenticationpre-share
5. group2
6. cryptoisakmpkey6yeeloneaddress23.1.1.2255.255.255.0
7. !
8. !
9. cryptoipsectransform-setmysetesp-3desesp-md5-hmac
10.!
11.cryptomapcisco10ipsec-isakmp
12. setpeer23.1.1.2
13. settransform-setmyset
14. matchaddress100
15.!
16.!
17.!
18.!
19.interfaceLoopback0
20. ipaddress172.16.1.1255.255.255.0
21.!
22.interfaceSerial0/0
23. ipaddress23.1.1.3255.255.255.0
24. serialrestart-delay0
25. cryptomapcisco
26.!
27.
28.routerospf100
29. log-adjacency-changes
30. network0.0.0.0255.255.255.255area0
31.!
32.iphttpserver
33.noiphttpsecure-server
34.!
35.!
36.!
37.access-list100permitip172.16.1.00.0.0.255192.168.1.00.0.0.255
刚开始我没有注意到要将R3的peer对象改为23.1.1.2,害得我的实验失败了好几十次,一次一次的做,有时候做实验做到凌晨4点,仍然没做成,就是因为配错了peer。
我们要注意的是,配置的peer是nat转换后的地址,不能再使用内网地址。
再回顾一下:
NAT-T的操作步骤:
一、判断双方是否支持NAT-T,这是IKE协商的第一阶段,双方通过发送一个VENDORID来识别是否支持NAT-T,等一下做实验会看到这个。
二、判断通信链路上是否存在NAT设备,这一步是NAT发现,NAT发现的原理是判断通信方的IP地址和端口是否发生了改变,判断的方法是,使用IP地址和端口号进行HASH运算,送往对方进行校验。
一旦发现NAT,则立即进行端口浮动,也就是在IKE协议的第二阶段将IKE的UDP500浮动到UDP4500端口。
三、进行ESP处理
看一下抓包:
一、判断双方是否支持NAT-T,这是IKE协商的第一阶段,双方通过发送一个VENDORID来识别是否支持NAT-T:
:
:
上面第一个12.1.1.1就是第一步:
vendorid如上图所示。
第二步:
nat发现
然后下一个包马上进行端口浮动,表明存在nat设备。
端口已经浮动到4500.
这样子,ipsecvpnnat穿越的实验就已经完成了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IPSEC VPN 的NAT穿越详解 NAT 穿越 详解