EIGRP的默认缺省路由


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

实验环境

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

设备配置

R1的配置

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的配置

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的配置

interface Ethernet0/0
 ip address 192.168.23.3 255.255.255.0
!
router eigrp 100
 network 192.168.23.0
 no auto-summary

方法一

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

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

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

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

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

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

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。

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的,但是被宣告后,就能学习到了。

方法二

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

R1(config)#ip route 0.0.0.0 0.0.0.0 null0

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

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

查看R3的路由表

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

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是有手工汇总功能的,手工汇总说白了,就是抑制掉相应路由的转发,然后本地产生汇总条目,然后发出去,我们尝试是否可以汇总出一条缺省来。

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

查看R3的路由表

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

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的条目要事先存在于路由表中。所以我们这边随便产生一个不存在的条目。

R1(config)#ip route 10.0.0.0 255.0.0.0 null0

查看R1的路由表

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命令,将这条路由变成缺省。

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

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

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的路由条目

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

去R3上查看路由表

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

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产生缺省的方法,大家按照实际的需求去自己判断,哪种更加符合需求。


文章作者: AaronXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AaronXu !
评论
 上一篇
OSPF抑制7类LSA的转发 OSPF抑制7类LSA的转发
OSPF有11种LSA,其中7类的LSA被用于特殊区域之中,OSPF属于链路状态协议,任何一台路由器都知道每一个LSA是始发于哪一台路由器,如果无法去往那台始发路由器,则会造成路由的不可用,本文就设计一个环境,用来探讨这个问题。
下一篇 
关于思科路由器工作在有类模式下的问题 关于思科路由器工作在有类模式下的问题
在Cisco IOS 10.0之后的版本里面,就出现了一条命令,ip classless命令,这条命令的作用是让路由器工作在无类模式下,也就是如果关闭这条命令,路由器就会工作在有类模式下,那有什么区别呢,本文将做一个探究。
  目录