查看文章 |
GRE OVER IPSEC VPN 配置
2009-04-21 09:46
PN
环境: 1:R4/R5/R6之间通过Static Route来建立联通性: 2:R4<-->R6之间建立GRE Tunnel 3:R4<-->R6之间建立IPSec VPN 需求:要求PC3 和 PC7能够互通 涉及技术点:GRE Tunnel的建立、IPSec 建立 、 分析数据包的流程 配置步骤: 1:R4/R5/R6之间通过Static Route来互通 2:内网之间的互通通过OSPF来建立:R4/R6的Loopback口通过OSPF学到 3:IPSec 的Peer互指对端Loopack(分析问题的原因) 4:测试GRE Over IPSec的特性: 5:解决方法: 在R4/R6之间指定Static路由到达对端的Loopback口 IPSec Peer指对端的物理接口,而不是Loopback口(推荐) ============================================== 如果对端Peer使用Loopback那么Tunnel和IPSec均将无法建立成功: 1:R4/R6配置静态路由:(互通) R4上的静态路由: ip route 1.1.56.0 255.255.255.0 1.1.45.5 R6上的静态路由: ip route 1.1.45.0 255.255.255.0 1.1.56.5 2:R4/R6之间建立GRE Tunnel: ==>R4的配置: interface Tunnel0 ip address 172.16.10.4 255.255.255.0 tunnel source 1.1.45.4 tunnel destination 1.1.56.6 ==>R6的配置: interface Tunnel0 ip address 172.16.10.6 255.255.255.0 tunnel source 1.1.56.6 tunnel destination 1.1.45.4 ==>查看GRE状态: R4#show ip int b Tunnel0 172.16.10.4 YES manual up up R6#show ip int b Tunnel0 172.16.10.6 YES manual up up 3:内网之间通过GRE建立OSPF连接: ==>R4的配置: router ospf 110 log-adjacency-changes network 4.4.4.4 0.0.0.0 area 0 network 172.16.10.0 0.0.0.255 area 0 network 192.168.1.0 0.0.0.255 area 0 ==>R6的配置: router ospf 110 network 6.6.6.6 0.0.0.0 area 0 network 172.16.10.0 0.0.0.255 area 0 network 172.16.1.0 0.0.0.255 area 0 ==>查看R4/R6的路由表:内网已经互通: R4#show ip route ospf O 6.6.6.6 [110/11112] via 172.16.10.6, 00:11:38, Tunnel0 O 172.16.1.0 [110/11112] via 172.16.10.6, 00:11:38, Tunnel0 R6#show ip route ospf O 4.4.4.4 [110/11112] via 172.16.10.4, 00:11:23, Tunnel0 O 192.168.1.0/24 [110/11112] via 172.16.10.4, 00:11:23, Tunnel0 R6# ==>R3测试: R3#traceroute 172.16.1.1 1 192.168.1.2 92 msec 136 msec 48 msec 2 172.16.10.6 136 msec 132 msec 140 msec :表明当前数据包是通过GRE Tunnel来转发的 3 172.16.1.1 148 msec * 168 msec R3# 4:R4/R6之间建立IPSec VPN : eer指向R4/R6的环回口:4.4.4.4/6.6.6.6==>R6上的配置修改: crypto isakmp key cisco address 4.4.4.4 crypto map MYMAP 10 ipsec-isakmp set peer 4.4.4.4 set transform-set TS match address 110 :指定感兴趣流量: crypto map MYMAP local-address Loopback1 :这里一定要指定更新源:类似BGP的更新源:否则发送数据包的将是本地的物理接口 ==>R4上的配置修改: crypto isakmp key cisco address 6.6.6.6 crypto map MYMAP 10 ipsec-isakmp set peer 6.6.6.6 set transform-set TS match address 110 crypto map MYMAP local-address Loopback1 5:由于是GRE over IPSec:于是在物理接口下调用感兴趣流量: interface FastEthernet0/0 ip address 1.1.1.1 255.255.255.0 no cdp log mismatch duplex crypto map MYMAP 此时如果指定感兴趣流量:access-list 110 permit host 1.1.1.1 host 2.2.2.3 :那么随后OSPF 邻居将Down: *Dec 11 23:13:56.355: %OSPF-5-ADJCHG: Process 110, Nbr 6.6.6.6 on Tunnel0 from FULL to DOWN, Neighbor Down: Dead timer expired 分析: 1:GRE Tunnel的可达性是通过静态路由来实现的:通过步骤一:可知目的1.1.56.0从F1/1走: 2:R4上的OSPF通过Tunnel学习到6.6.6.6的路由下一条指向Tunnel0 3:在IPSec VPN中指定Peer为6.6.6.6,此时下一条指向Tunnel0(如步骤三),封装GRE:【SIP:1.1.45.4 DIP:1.1.56.6】,R4查看路由表到达1.1.56.0需要经过F1/1(如步骤一),此时GRE数据包被扔到F1/1,刚好匹配该接口下调用的IPSec感兴趣流,于是封装ESP,并新增IP包头【ESP| SIP:4.4.4.4 DIP:6.6.6.6】 4:ESP数据包查看路由表, 发现到达6.6.6.6需要通过Tunnel 0 ,于是ESP又被转到Tunnel 0,并且又被封装【SIP:1.1.45.4 DIP:1.1.56.6】,以此在R4上的OSPF Hello包在Tunnel0和F1/1之间往复循环,而对端的OSPF在三个周期未收到Hello包,则提示Dead Time Expired。 *Mar 14:43:51.743: %OSPF-5-ADJCHG: Process 110, Nbr 192.168.2.10 on Tunnel0 from FULL to DOWN, Neighbor Down :OSPF邻居Down ========================================================================= ==>解决方法:(只要打破以上环路的任一环即可) 在R4/R6之间指定Static路由到达对端的Loopback口 IPSec Peer指对端的物理接口,而不是Loopback口(推荐) 修改方法1: 在R4/R6上配置Static Route 让到R4/R6对端Loopback口的数据包从物理接口走,而不是Tunnel 0: R4(config)#ip route 6.6.6.6 255.255.255.255 1.1.45.5 R6(config)#ip route 4.4.4.4 255.255.255.255 1.1.56.5 R5(config)#ip route 6.6.6.6 255.255.255.255 1.1.56.6 :R5上增加到R4/R6的路由: R5(config)#ip route 4.4.4.4 255.255.255.255 1.1.45.4 此时OSPF邻居就可以创建:而且IPSec VPN也是可以建立的: *Mar 14 15:21:36.395: %OSPF-5-ADJCHG: Process 110, Nbr 192.168.2.10 on Tunnel0 from LOADING to FULL, Loading Done R4# ================================================================================== 修改方法2 推荐做法)在R4/R6上配置IPSec VPN时,对端Peer指向物理接口,而不是Loopback口地址: ==>R4的配置: crypto isakmp policy 10 authentication pre-share crypto isakmp key cisco address 1.1.56.6 R3(config)#crypto ipsec transform-set TS esp-md5-hmac esp-null :Null不对数据包加密:用于分析数据用 crypto map MAY 10 ipsec-isakmp set peer 1.1.56.6 set transform-set TS match address GRE-VPN ip access-list extended GRE-VPN permit ip host 1.1.45.4 host 1.1.56.6 ==>R6的配置: crypto isakmp policy 10 authentication pre-share crypto isakmp key cisco address 1.1.45.4 R3(config)#crypto ipsec transform-set TS esp-md5-hmac esp-null crypto map MAY 10 ipsec-isakmp set peer 1.1.45.4 set transform-set TS match address GRE-VPN ip access-list extended GRE-VPN permit ip host 1.1.56.6 host 1.1.45.4 ==>测试:R3 ping R7: R3#ping 172.16.1.1 re 10 !!!!!!!!!! 抓取R5/R6之间的通信包:如图: 从中可以看出,PING先封装GRE然后再封装IPSec,确实实现了GRE over IPSec的功能: ==>OSPF的Hello包,是IPSec的感兴趣流量,也被加密: 0000 ca 00 0f 70 00 00 cc 00 07 18 f0 01 08 00 45 c0 0010 00 84 01 1f 00 00 fe 32 b4 62 01 01 01 01 02 02 32:50=ESP 0020 02 03 24 52 35 e7 00 00 00 02 45 c0 00 58 00 93 4:version 5:头长度=5*4=20 0030 00 00 ff 2f b4 1d 01 01 01 01 02 02 02 03 00 00 2f:47=GRE 0040 08 00 45 c0 00 40 01 1e 00 00 01 59 d1 7e 03 03 0x0800=IP 59:89=OSPF 0050 03 01 e0 00 00 05 02 02 00 20 06 06 06 06 00 00 224.0.0.5 6.6.6.6 0060 00 00 d0 f3 00 00 00 00 00 00 00 00 00 00 05 c4 ................ 0070 52 07 00 00 13 6c ff f6 00 03 00 01 00 04 00 00 R....l.......... 0080 00 01 01 02 02 04 20 03 a5 e4 2a 0c 23 7f 3d 87 ...... ...*.#.=. 0090 eb cc 分析:: 1:R3#ping 172.16.1.1 2:此时R4:查看路由表:得知要从Tunnel 0出去 看步骤1)3:数据一到Tunnel 0 就被封装GRE , 并产生个新的IP报头:SIP:1.1.45.4 DIP:1.1.56.6 此时数据包的帧格式为: DATA|SIP|DIP|GRE|SIP|DIP 1.1.45.4--->1.1.56.6 4:此时GRE再次查看RT , 发现到达1.1.56.6/24 , 必须走F1/1, 可F1/1中调用了加密MAP ,并且GRE数据包匹配感兴趣流量(access-list GRE-VPN) , 5:于是GRE就又被ESP封装 , 并产生一个新的报头:SIP:1.1.45.4 DIP:1.1.56.6 此时数据包的帧格式为: DATA|SIP|DIP|GRE|SIP|DIP|ESP|SIP|DIP :但是有没发现GRE的IP报头和ESP的IP报头是一样的. 192.168.1.1---->172.16.1.1 ESP:1.1.45.4--->1.1.56.6 GRE:1.1.45.4--->1.1.56.6 |
最近读者:
PN
eer指向R4/R6的环回口:4.4.4.4/6.6.6.6
推荐做法)