在做GRE over IPSEC时要注意递归路由的设置,设置不好的话就会引起循环封装,而导致数据包不能路由到正确的地址。
做了不少over的实验,从很早知道有这个问题,但一直没太在意,配置的时候也没有过多的想着方面的问题,结果昨天在做双接入链路单IKE身份测试的时候就遇到了这个问题,报错如下
%TUN-5-RECURDOWN: Tunnel0 temporarily disabled due to recursive routing
在cisco网站上查了一下,找到了gre_flap.pdf这个文档。常见的问题啊!所以就花了一些时间来把这个东西弄清楚。以下分三部分来说明这个问题如何解决:
1、 解释cisco文档(有附件)
2、 解释vpn设计一书中的例子
3、 解释我做的实验
这三个问题其实都是一个问题,都是解决递归路由设置错误的问题。觉得烦的话看一个就可以了。
1、 cisco文档中的例子
cisco给出了问题的产生原因及解决方法,我就不翻译了,只是简要的叙述一下过程:
Now, observe the routing table after the tunnel interface goes up, shown below.
R1# show ip route
Codes: C − connected, S − static, I − IGRP, R − RIP, M − mobile, B − BGP
D − EIGRP, EX − EIGRP external, O − OSPF, IA − OSPF inter area
N1 − OSPF NSSA external type 1, N2 − OSPF NSSA external type 2
E1 − OSPF external type 1, E2 − OSPF external type 2, E − EGP
i − IS−IS, L1 − IS−IS level−1, L2 − IS−IS level−2, ia − IS−IS inter area
* − candidate default, U − per−user static route, o − ODR
P − periodic downloaded static route
Gateway of last resort is 172.16.15.2 to network 0.0.0.0
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
D 172.16.25.0/24 [90/297756416] via 192.168.1.3, 00:00:00, Tunnel0
C 172.16.15.2/32 is directly connected, Serial0
C 172.16.15.0/24 is directly connected, Serial0
10.0.0.0/24 is subnetted, 2 subnets
D 10.3.3.0 [90/297372416] via 192.168.1.3, 00:00:00, Tunnel0
C 10.1.1.0 is directly connected, Loopback0
C 192.168.1.0/24 is directly connected, Tunnel0
S* 0.0.0.0/0 [1/0] via 172.16.15.2
此时如果路由器收到要到达10.3.3.0网络的数据包,他将包路由到tunnel0,然后排队,并进行GRE的封装,R1上:
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
tunnel source Loopback0
tunnel destination 10.3.3.3
路由器查找到10.3.3.3的的路由,还是发现D 10.3.3.0 [90/297372416] via 192.168.1.3, 00:00:00, Tunnel0
这个包根本路由不出去。所以出现了递归路由错误。
解决方法是R1(config)# ip route 10.3.3.3 255.255.255.255 serial 0
2、 vpn设计一书中的例子
spoke路由器的设置:
hostname spoke-2-west
interface Ethernet0
ip address 10.0.65.1 255.255.255.0
!
interface Tunnel0
ip unnumbered Ethernet0
tunnel source 9.1.1.134
tunnel destination 9.1.1.22
!
interface Serial0
ip address 9.1.1.134 255.255.255.252
crypto map vpn
!
router eigrp 100
network 10.0.65.0 0.0.0.255
!
spoke-2-west# show ip route
9.0.0.0/30 is subnetted, 6 subnets
S 9.1.1.20 [1/0] via 9.1.1.133
C 9.1.1.132 is directly connected, Serial0
10.0.0.0/8 is subnetted, 4 subnets
D 10.1.0.0 [90/284472576] via 10.1.0.1, 00:00:05, Tunnel0
D 10.0.64.0 [90/297272576] via 10.1.0.1, 00:48:22, Tunnel0
C 10.0.65.0 is directly connected, Ethernet0
对于到10.0.64.0网络的数据包,需要经过tunnel0,路由器将包封装,加上9.1.1.22和9.1.1.134的目的地址和源地址。之后路由器找到9.1.1.20网络需要的下一跳为9.1.1.133,又找到9.1.1.132是经过serial0口,随后,它将包路由出serial0口。如果没有配置9.1.1.20这条静态路由,那数据包肯定就发不出去了。
3、 双链路单IKE身份实验
拓扑见附件
需要在R3和R5之间建立ipsec连接,R5和R3的loop接口建立peer关系,这样,如果在R3连接的两条链路有一条断了则会自动切换到另外一条链路,切换时间很短,和路由协议收敛的时间是一样的。
R3的配置
r3#sho run
Building configuration...
Current co
做了不少over的实验,从很早知道有这个问题,但一直没太在意,配置的时候也没有过多的想着方面的问题,结果昨天在做双接入链路单IKE身份测试的时候就遇到了这个问题,报错如下
%TUN-5-RECURDOWN: Tunnel0 temporarily disabled due to recursive routing
在cisco网站上查了一下,找到了gre_flap.pdf这个文档。常见的问题啊!所以就花了一些时间来把这个东西弄清楚。以下分三部分来说明这个问题如何解决:
1、 解释cisco文档(有附件)
2、 解释vpn设计一书中的例子
3、 解释我做的实验
这三个问题其实都是一个问题,都是解决递归路由设置错误的问题。觉得烦的话看一个就可以了。
1、 cisco文档中的例子
cisco给出了问题的产生原因及解决方法,我就不翻译了,只是简要的叙述一下过程:
Now, observe the routing table after the tunnel interface goes up, shown below.
R1# show ip route
Codes: C − connected, S − static, I − IGRP, R − RIP, M − mobile, B − BGP
D − EIGRP, EX − EIGRP external, O − OSPF, IA − OSPF inter area
N1 − OSPF NSSA external type 1, N2 − OSPF NSSA external type 2
E1 − OSPF external type 1, E2 − OSPF external type 2, E − EGP
i − IS−IS, L1 − IS−IS level−1, L2 − IS−IS level−2, ia − IS−IS inter area
* − candidate default, U − per−user static route, o − ODR
P − periodic downloaded static route
Gateway of last resort is 172.16.15.2 to network 0.0.0.0
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
D 172.16.25.0/24 [90/297756416] via 192.168.1.3, 00:00:00, Tunnel0
C 172.16.15.2/32 is directly connected, Serial0
C 172.16.15.0/24 is directly connected, Serial0
10.0.0.0/24 is subnetted, 2 subnets
D 10.3.3.0 [90/297372416] via 192.168.1.3, 00:00:00, Tunnel0
C 10.1.1.0 is directly connected, Loopback0
C 192.168.1.0/24 is directly connected, Tunnel0
S* 0.0.0.0/0 [1/0] via 172.16.15.2
此时如果路由器收到要到达10.3.3.0网络的数据包,他将包路由到tunnel0,然后排队,并进行GRE的封装,R1上:
interface Tunnel0
ip address 192.168.1.1 255.255.255.0
tunnel source Loopback0
tunnel destination 10.3.3.3
路由器查找到10.3.3.3的的路由,还是发现D 10.3.3.0 [90/297372416] via 192.168.1.3, 00:00:00, Tunnel0
这个包根本路由不出去。所以出现了递归路由错误。
解决方法是R1(config)# ip route 10.3.3.3 255.255.255.255 serial 0
2、 vpn设计一书中的例子
spoke路由器的设置:
hostname spoke-2-west
interface Ethernet0
ip address 10.0.65.1 255.255.255.0
!
interface Tunnel0
ip unnumbered Ethernet0
tunnel source 9.1.1.134
tunnel destination 9.1.1.22
!
interface Serial0
ip address 9.1.1.134 255.255.255.252
crypto map vpn
!
router eigrp 100
network 10.0.65.0 0.0.0.255
!
spoke-2-west# show ip route
9.0.0.0/30 is subnetted, 6 subnets
S 9.1.1.20 [1/0] via 9.1.1.133
C 9.1.1.132 is directly connected, Serial0
10.0.0.0/8 is subnetted, 4 subnets
D 10.1.0.0 [90/284472576] via 10.1.0.1, 00:00:05, Tunnel0
D 10.0.64.0 [90/297272576] via 10.1.0.1, 00:48:22, Tunnel0
C 10.0.65.0 is directly connected, Ethernet0
对于到10.0.64.0网络的数据包,需要经过tunnel0,路由器将包封装,加上9.1.1.22和9.1.1.134的目的地址和源地址。之后路由器找到9.1.1.20网络需要的下一跳为9.1.1.133,又找到9.1.1.132是经过serial0口,随后,它将包路由出serial0口。如果没有配置9.1.1.20这条静态路由,那数据包肯定就发不出去了。
3、 双链路单IKE身份实验
拓扑见附件
需要在R3和R5之间建立ipsec连接,R5和R3的loop接口建立peer关系,这样,如果在R3连接的两条链路有一条断了则会自动切换到另外一条链路,切换时间很短,和路由协议收敛的时间是一样的。
R3的配置
r3#sho run
Building configuration...
Current co