可能说的有点乱,也可以这么理解,R3自己认为去往2.2.2.0/24的路由下一跳是R1,那么,OSPF数据库同步机制,R4上对于这条路由的下一跳也应该是R1,这样的路由重分布导致了路由的混乱和环路,我们要通过路由的修剪来对网络进行优化和改善。
解决方案:
1:使用发布列表,列表中要写每条需要过滤的路由,比较麻烦,针对上述的环境,我这里通过发布列表的方法来实现路由的修剪,首先先定义访问控制列表,将中RIP的3条路由抓取出来:
R1(config)#ip access-list standard DenyFromO2R #在做访问控制列表的时候尽量使用基于命名的访问控制列表,在ACL多的时候,用名字比较好区分,这里这个名字意识是阻止从OSPF到RIP的条目
R1(config-std-nacl)#deny 12.0.0.0 0.0.0.255
R1(config-std-nacl)#deny 23.0.0.0 0.0.0.255
R1(config-std-nacl)#deny 2.2.2.0 0.0.0.255
R1(config-std-nacl)#permit any
然后进入到OSPF中
R1(config)#router rip
R1(config-router)#distribute-list DenyFromO2R in fastEthernet 0/0 #上述中的原因在这里,这条命令定义了在OSPF下重发布修剪的规则,将ACL定义的3条路由阻止从OSPF重发布出去。这里要注意的是:在OSPF中使用发布列表的话,是不允许使用OUT,只能使用in。
在R3中同样做好这样的配置
R3(config)#ip access-list standard DenyFromO2R
R3(config-std-nacl)#deny 12.0.0.0 0.0.0.255
R3(config-std-nacl)#deny 23.0.0.0 0.0.0.255
R3(config-std-nacl)#deny 2.2.2.0 0.0.0.255
R3(config-std-nacl)#permit any
R3(config)#router rip
R3(config-router)#distribute-list DenyFromR2O in fastEthernet 0/0
OK
再来看看路由表的情况
R1的路由表
R2的路由表
R3的路由表
R4的路由表
可以看到,现在的路由是正常了,而且R1去往124.0.0.0/24的路由和R4去往2.2.2.0/24的路由也实现了负载均衡
2:使用管理距离来解决
我们可以看到,之前之所以会产生路由的混乱,是因为通过RIP学到的路由在重发布进OSPF中后,OSPF又重新发布进了RIP,而在R1和R3上由2种不同的协议学到了相同的路由,选择了那个管理距离小的(即OSPF)的路由。
解决方法是,将从RIP重发布到OSPF的路由,即OSPF的外部路由的管理距离设置为比RIP大一点。首先来看下常用几个路由协议的管理距离:
EIGRP:90 EIGRP外部路由:170
RIP:120
OSPF内部和外部都是110
我们先定义好OSPF的外部路由(通过ACL),在OSPF中将这部分的外部路由的管理距离配置为121
首先先定义OSPF的外部路由。
R1(config)#ip access-list standard FromR3 #在R1上定义从R3上学到的OSPF外部路由
R1(config-std-nacl)#permit 12.0.0.0 0.0.0.255
R1(config-std-nacl)#permit 23.0.0.0 0.0.0.255
R1(config-std-nacl)#permit 2.2.2.0 0.0.0.255
R3(config)#ip access-list standard FromR1 #在R3上定义从R1上学习到的OSPF外部路由
R3(config-std-nacl)#permit 12.0.0.0 0.0.0.255
R3(config-std-nacl)#permit 23.0.0.0 0.0.0.255
R3(config-std-nacl)#permit 2.2.2.0 0.0.0.255
R1(config)#router ospf 1
R1(config-router)#distance 121 3.3.3.3 0.0.0.0 FromR3 #这条的意思是:从Router-id为3.3.3.3学习到的路由中,符合列表中的路由的管理距离设置为121
R3(config)#router ospf 1
R3(config-router)#distance 121 1.1.1.1 0.0.0.0 FromR1
查看下R3的路由表
这里显示2.2.2.0/24和12.0.0.0/24的路由都是从RIP中学习到的了
再查看下OSPF的外部路由数据库
发现数据库里还是含有2.2.2.0/24和12.0.0.0/24的数据信息,但是由于已经将这些路由的管理距离设置的比RIP还要大了,所以在路由表里选择了RIP协议,R1也是同样的,而在R4中,查看下路由表
可以看到12,23,2这3个网段的完整路由,这里列举了2中解决方案,还有诸如使用route-map之类的工具可以可以在路由重发布的时候对路由条目进行修剪,只要知道整个路由传递的原理和机制,这些方法也只是你所选择的工具而已。
出处:http://lustlost.blog.51cto.com/2600869/889890。