实验图
这里R5去往R2有两条路径,我们要让RIP优先选择从R1去往R2的这条路径
首先有两种办法
1.减小上面路径的管理距离
2.减小上面路径的度量值或增大下面路径的度量值
同厂商设备对于不同路由选择协议的默认管理距离设置不一样
R1
R1>en
R1#conf t
R1(config)#int e0/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/1
R1(config-if)#ip add 13.1.1.1 255.255.255.0
R1(config-if)#no sh
R2
R2>en
R2#conf t
R2(config)#int e0/0
R2(config-if)#ip add 172.16.3.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ip add 172.16.2.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int e0/2
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no sh
R2(config)#int e0/3
R2(config-if)#ip add 23.1.1.2 255.255.255.0
R2(config-if)#no sh
R3
R3>en
R3#conf t
R3(config)#int e0/0
R3(config-if)#ip add 13.1.1.2 255.255.255.0
R3(config-if)#no sh
R3(config-if)#int e0/1
R3(config-if)#ip add 35.1.1.2 255.255.255.0
R3(config-if)#no sh
R3(config-if)#int e0/2
R3(config-if)#ip add 23.1.1.3 255.255.255.0
R3(config-if)#no sh
R4
R4>en
R4#conf t
R4(config)#no ip routing
R4(config)#int e0/0
R4(config-if)#ip add dhcp
R4(config-if)#no sh
R5
R5>en
R5#conf t
R5(config)#no ip routing
R5(config)#int e0/0
R5(config-if)#ip add 35.1.1.1 255.255.255.0
R5(config-if)#no sh
R5(config-if)#exit
R5(config)#ip default-gateway 35.1.1.2
R6
R6>en
R6#conf t
R6(config)#no ip routing
R6(config)#int e0/0
R6(config-if)#ip add dhcp
R6(config-if)#no sh
配置RIP
R1
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 12.0.0.0
R1(config-router)#network 13.0.0.0
R2
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 12.0.0.0
R2(config-router)#network 23.0.0.0
R2(config-router)#network 172.16.0.0
R3
R3(config)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 13.0.0.0
R3(config-router)#network 23.0.0.0
R3(config-router)#network 35.0.0.0
R5
R5(config)#service dhcp
R5(config)#ip dhcp pool server
R5(dhcp-config)#network 172.16.2.0 255.255.255.0
R5(dhcp-config)#default-router 172.16.2.1
R5(dhcp-config)#dns-server 172.16.2.1
R5(dhcp-config)#domain-name cisco.com
R5(dhcp-config)#exit
R5(config)#service dhcp
R5(config)#ip dhcp pool server1
R5(dhcp-config)#network 172.16.3.0 255.255.255.0
R5(dhcp-config)#default-router 172.16.3.1
R5(dhcp-config)#dns-server 172.16.3.1
R5(dhcp-config)#domain-name cisco.com
R2
R2(config)#int e0/0
R2(config-if)#ip helper-address 35.1.1.1
R2(config-if)#int e0/1
R2(config-if)#ip helper-address 35.1.1.1
可以看到R4和R6都已经成功获取到地址,查看一下R2的路由表
R6去往R5的路径是R6-->R2-->R3-->R5,现在我们将其改为R6-->R2-->R1-->R3-->R5
一、修改管理距离实现(不推荐)
在R2上使用ACL匹配R3和R5的路由
R2#conf t
R2(config)#access-list 10 permit 35.1.1.0 //创建一个访问控制列表,名字为10,35.1.1.0为R3和R5直接的网段
R2(config)#router rip
R2(config-router)#distance 119 12.1.1.1 0.0.0.0 10 //修改管理距离为119(小于120就行),12.1.1.1为R1的e0/0接口IP地址,意思是当R1的e0/0接收到能被ACL10所匹配到的路由条目时,先修改管理距离为119再添加
R2(config-router)#end
R2#clear ip route *
再次查看R2的路由表
已经修改了路径,查看R3的路由表发现R3去往R6还是选择下面的路径,因为我们只在R2上启用了ACL
我们也可以在R5和R6上互相traceroute一下,可见路径已经修改
二、使用偏移列表(适用于所有的动态路由选择协议,修改度量值,只能改大,要么修改大再接收,要么先修改大再转发)
取消管理距离的修改
R2
R2#conf t
R2(config)#router rip
R2(config-router)#no distance 119 12.1.1.1 0.0.0.0 10
R2(config-router)#end
R2#show run | section router rip //筛选出rip的配置信息
R2#clear ip route * //清理路由表
查看R2的路由表发现路径又变回默认的了
R2
R2#conf t
R2(config)#router rip
R2(config-router)#offset-list 10 in 2 e0/3 //R2通过e0/3接收路由条目的时候先将度量值增加2再添加
查看路由表
可以看到修改成功,同时可以看到R2去往13.0.0.0存在ECMP(等价负载均衡),但是还是存在优先级别,查看路由条目的明细
发现会优先选择下面的路径,因为R2是优先通过R3学到的路由条目,若想将其改为上面的路径优先,可以先down掉R2连接R3的e0/3接口,然后清理路由表,再开启接口,由于此时会优先通过R1学到路由,因此等价负载均衡也会优先选择R1
配置RIP认证
基于钥匙链的认证只要两台路由器之间有一把相同的钥匙就可以认证成功,相同的钥匙必须ID和值都相同
R1
R1(config)#key chain R1 //创建一个钥匙链,每个钥匙链至少包含一把钥匙,每把钥匙都有一个ID,R1为钥匙链的名字
R1(config-keychain)#key 1 //1为钥匙的ID
R1(config-keychain-key)#key-string cisco //cisco为钥匙的值
R2
R2(config)#key chain R2
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string cisco
R3
R3(config)#key chain R3
R3(config-keychain)#key 1
R3(config-keychain-key)#key-string cisco
在发送路由的接口启用认证
R1和R2之间使用明文认证
R1
R1(config)#int e0/0
R1(config-if)#ip rip authentication key-chain R1 //在此接口使用R2中的钥匙进行认证
R1(config-if)#ip rip authentication mode text //启用认证(明文)
R2
R2(config)#int e0/2
R2(config-if)#ip rip authentication key-chain R2
R2(config-if)#ip rip authentication mode text
R2和R3之间使用密文认证
R2
R2(config)#int e0/3
R2(config-if)#ip rip authentication key-chain R2
R2(config-if)#ip rip authentication mode md5
R3
R3(config)#int e0/2
R3(config-if)#ip rip authentication key-chain R3
R3(config-if)#ip rip authentication mode md5
明文认证可以通过在接口抓取RIP发送的路由更新数据包查看到密码
RIPv2既支持组播也支持广播,广播不仅浪费带宽,同时PC需要去拆包会浪费PC的CPU资源。而使用组播,发往PC的数据包会被直接丢弃,但是还是会浪费带宽资源
优化一
对于路由器连接PC的接口不宣告进RIP,使用重分发(也叫路由引入,发送更新时本来不该携带的路由条目被强行加入)的方式来将PC所在网段的路由发送出去
R2
R2>en
R2#conf t
R2(config)#router rip
R2(config-router)#no network 172.16.0.0
R3
R3>en
R3#conf t
R3(config)#router rip
R3(config-router)#no network 35.0.0.0
可以看到R1的路由表已经发生了变化
R2
R2(config)#route-map R2 permit 10
R2(config-route-map)#match interface e0/0 e0/1
R2(config-route-map)#exit
R2(config)#router rip
R2(config-router)#redistribute connected route-map R2
R3
R3(config)#route-map R3 permit 10
R3(config-route-map)#match interface e0/1
R3(config-route-map)#exit
R3(config)#router rip
R3(config-router)#redistribute connected route-map R3
查看R1的路由表发现又有了路由条目
这样就不会向PC发送RIP更新数据包,节省了带宽
优化二
被动接口
先取消重分发
R2
R2#conf t
R2(config)#router rip
R2(config-router)#no redistribute connected
R2(config-router)#network 172.16.0.0
R3
R3(config)#router rip
R3(config-router)#no redistribute connected
R3(config-router)#network 35.0.0.0
将R2上连接PC的接口设置为被动接口
R2
R2(config)#router rip
R2(config-router)#passive-interface e0/0
R2(config-router)#passive-interface e0/1
R3
R3(config)#router rip
R3(config-router)#passive-interface e0/1