EIGRP的默认缺省路由

EIGRP是思科创造的路由协议(思科在2013年将该协议公有化),这个协议的优点很多,但是给人最大的感触就是收敛速度真的很快,比常见的OSPF或者IS-IS协议都快的多,但是EIGRP本身并没有提供发布缺省路由的命令,只能通过其他的方式来实现缺省路由的注入,我总结了4种方法,可以在EIGRP中引入缺省的路由条目。

实验环境

EIGRP的默认缺省路由.png

三台路由器连接在一起,启用EIGRP,使用R1将缺省路由引入R2和R3的路由表,在R1上创建loopback接口,地址为1.1.1.1/32位,并且loopback接口不加入EIGRP,最终实现R2和R3能访问1.1.1.1

设备配置

R1的配置

1
2
3
4
5
6
7
8
9
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
ip address 192.168.12.1 255.255.255.0
!
router eigrp 100
network 192.168.12.0
no auto-summary

R2的配置

1
2
3
4
5
6
7
8
9
10
interface Ethernet0/0
ip address 192.168.12.2 255.255.255.0
!
interface Ethernet0/1
ip address 192.168.23.2 255.255.255.0
!
router eigrp 100
network 192.168.12.0
network 192.168.23.0
no auto-summary

R3的配置

1
2
3
4
5
6
interface Ethernet0/0
ip address 192.168.23.3 255.255.255.0
!
router eigrp 100
network 192.168.23.0
no auto-summary

方法一

使用静态路由在本地产生一个缺省的路由条目

1
R1(config)#ip route 0.0.0.0 0.0.0.0 null0    \\null0接口的作用就是丢弃所有数据包,我这边指向null0的意思是,反正也不用这个接口转发数据,只是纯粹产生路由而已。

查看路由表,确认条目已经产生

1
2
3
4
5
6
7
R1#show ip route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
C 192.168.12.0/24 is directly connected, Ethernet0/0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
D 192.168.23.0/24 [90/307200] via 192.168.12.2, 00:03:47, Ethernet0/0
S* 0.0.0.0/0 is directly connected, Null0

然后将该条目宣告进EIGRP

1
2
R1(config)#router eigrp 100
R1(config-router)#network 0.0.0.0

检查R2或者R3的路由表,确认缺省路由已经下发,也就是D*的条目

1
2
3
4
5
6
7
R3#sh ip route
Gateway of last resort is 192.168.23.2 to network 0.0.0.0
D 192.168.12.0/24 [90/307200] via 192.168.23.2, 00:05:29, Ethernet0/0
1.0.0.0/32 is subnetted, 1 subnets
D 1.1.1.1 [90/435200] via 192.168.23.2, 00:00:42, Ethernet0/0
C 192.168.23.0/24 is directly connected, Ethernet0/0
D* 0.0.0.0/0 [90/307200] via 192.168.23.2, 00:00:42, Ethernet0/0

确认R2或者R3可以正常访问1.1.1.1。

1
2
3
4
5
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/72/100 ms

缺点

缺点很明显,就是我们在R1上宣告0.0.0.0 0.0.0.0的时候,会直接把所有的接口都宣告进来,所以R2和R3本来是学习不到1.1.1.1的,但是被宣告后,就能学习到了。

方法二

使用静态路由在本地产生一个缺省的路由条目

1
R1(config)#ip route 0.0.0.0 0.0.0.0 null0

然后在EIGRP下面将静态路由重分布进来

1
2
R1(config)#router eigrp 100
R1(config-router)#redistribute static metric 10000 100 255 1 1500 \\注意,这个后面是可以套用一个route-map来过滤掉不必要的IP的。

查看R3的路由表

1
2
3
4
5
R3#sh ip route
Gateway of last resort is 192.168.23.2 to network 0.0.0.0
D 192.168.12.0/24 [90/307200] via 192.168.23.2, 00:13:04, Ethernet0/0
C 192.168.23.0/24 is directly connected, Ethernet0/0
D*EX 0.0.0.0/0 [170/2636800] via 192.168.23.2, 00:01:34, Ethernet0/0

可以看到,这边只增加了一个D*EX的条目,也就是缺省,EX表示是来自于EIGRP外部的条目。然后我们测试一下访问1.1.1.1

1
2
3
4
5
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 64/79/116 ms

明显也是可以的。

缺点

硬要说缺点的话,我觉得可能相对于别的方法而言,命令可能有点多,因为你可能还需要一个access-list去匹配地址,还需要一个route-map去过滤。

方法三

换个思路,EIGRP是有手工汇总功能的,手工汇总说白了,就是抑制掉相应路由的转发,然后本地产生汇总条目,然后发出去,我们尝试是否可以汇总出一条缺省来。

1
2
R1(config)#int e0/0
R1(config-if)#ip summary-address eigrp 100 0.0.0.0 0.0.0.0

查看R3的路由表

1
2
3
4
5
R3#sh ip route
Gateway of last resort is 192.168.23.2 to network 0.0.0.0
D 192.168.12.0/24 [90/307200] via 192.168.23.2, 00:20:00, Ethernet0/0
C 192.168.23.0/24 is directly connected, Ethernet0/0
D* 0.0.0.0/0 [90/332800] via 192.168.23.2, 00:00:29, Ethernet0/0

我们发现缺省成功的产生了,而且是来自于内部的D*条目。下面查看R3能否访问1.1.1.1

1
2
3
4
5
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/71/100 ms

是可以访问的。

方法四

在Cisco IOS上有一条产生缺省的方法,命令是ip default-network。但是满足这条命令的前提条件是,这个network的条目要事先存在于路由表中。所以我们这边随便产生一个不存在的条目。

1
R1(config)#ip route 10.0.0.0 255.0.0.0 null0

查看R1的路由表

1
2
3
4
5
6
7
R1#sh ip route
Gateway of last resort is not set
C 192.168.12.0/24 is directly connected, Ethernet0/0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
S 10.0.0.0/8 is directly connected, Null0
D 192.168.23.0/24 [90/307200] via 192.168.12.2, 00:24:54, Ethernet0/0

产生了10.0.0.0/8的静态路由后,我们可以使用ip default-network命令,将这条路由变成缺省。

1
R1(config)#ip default-network 10.0.0.0    \\这边请注意,这个default-network后面的地址,只能是主类,不支持VLSM或者CIDR

再次查看R1的路由表,确认那条静态路由已经变成了缺省路由。

1
2
3
4
5
6
7
R1#sh ip route
Gateway of last resort is not set
C 192.168.12.0/24 is directly connected, Ethernet0/0
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
S* 10.0.0.0/8 is directly connected, Null0
D 192.168.23.0/24 [90/307200] via 192.168.12.2, 00:27:14, Ethernet0/0

然后我们去EIGRP里面,宣告这条10.0.0.0/8的路由条目

1
2
R1(config)#router eigrp 100
R1(config-router)#network 10.0.0.0

去R3上查看路由表

1
2
3
4
5
R3#sh ip route
Gateway of last resort is 192.168.23.2 to network 10.0.0.0
D 192.168.12.0/24 [90/307200] via 192.168.23.2, 00:29:06, Ethernet0/0
D* 10.0.0.0/8 [90/307200] via 192.168.23.2, 00:00:08, Ethernet0/0
C 192.168.23.0/24 is directly connected, Ethernet0/0

我们可以看到产生了这条缺省条目,并且不是0.0.0.0。下面我们测试一下R3是否能访问1.1.1.1

1
2
3
4
5
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/72/100 ms

最终是可以的

总结

4种EIGRP产生缺省的方法,大家按照实际的需求去自己判断,哪种更加符合需求。

评论
加载中,最新评论有1分钟缓存...