RIP(Routing Information Protocol):路由信息协议
- 管理距离:120
RIP的三个版本
- 默认情况下,RIP的版本不是V1,V2,而是V1和V2一些融合性的特性
RIPV1的特性
- 支持最大6条等价路径的负载均衡,默认是4条
- 以跳数作为metric标准,最大15跳(每经过一路由为一跳)
- 每30s周期性广播路由更新(V1和V2都一样)
- [[无类路由协议和有类路由协议#2 有类路由协议 |有类路由]],不支持VLSM和CIDR
- 不支持认证
RIPV2的特性(RIPV2比RIPV1增强的特性)
- 基于无类路由和有类路由的路由协议
- 支持VLSM和CIDR(不支持CIDR汇总,但是能传递CIDR汇总)
- 可以人工设定是否进行路由汇总
- 使用组播来代替RIPV1中的广播,RIPV2是使用组播224.0.0.9来更新路由信息
- 支持明文或MD5加密认证
RIPng
- 基于IPV6的RIP版本,这个版本的RIP可以起进程号
RIP路由汇总
RIP自动汇总
- RIP协议中:默认情况下,路由汇总是自动打开的
- 自动汇总:根据主类路由进行汇总
- 关闭自动汇总
en
conf ter
router rip
no auto-summary //关闭自动汇总
RIPV2手动汇总
- 手动汇总目的:减少路由表大小,加快查询的转发速度
手动汇总配置
- 配置案例:把172开头的条目汇总成B类网段
//R1
en
conf ter
router rip
version 2
no auto-summary
net 192.168.1.0
net 172.16.1.0
net 172.16.2.0
net 172.16.2.0
exit
//配置手动汇总
int e0/0 //在连接对端的接口上
ip summary-address rip 172.16.0.0 255.255.0.0
end
//R2
en
conf ter
router rip
version 2
no auto-summary
net 192.168.1.0
end
//R2
show ip route
手动汇总注意事项
- 若R1和R2中间有台交换机,不能在交换机接口上做汇总,因为交换机上不能够运行RIP协议
- 若R1和R2中间有台路由器R3,可以在R3的接口上做汇总
RIPV2明文认证和密文认证
RIPV2明文认证
- 只有两台设备运行了RIP协议,且设置的密钥相同,才会传递路由条目
- 钥匙串配置
//R1
en
conf ter
//配置钥匙串
key chain R1 //给钥匙串命名
key 1 //定义一把钥匙,“1”是编号
key-string cisco //配置钥匙的密码(可以定义多个,先使用号码低的,低的失效后使用号码高的)
end
//挂接接口
conf ter
int e0/0
ip rip authentication key-chain R1 //在接口上挂接钥匙串(一个接口只能挂接一把钥匙串)
end
//R2
en
conf ter
key chain R2
key 1
key-string cisco
end
conf ter
int e0/0
ip rip authentication key-chain R2
end
明文认证进行抓包可以直接看到密码
RIP密文认证
在4.1RIPV2明文认证的配置的基础上
//R1
en
conf ter
int e0/0
ip rip authentication mode md5 //启用MD5给密钥加密
ip rip authentication key-chain R1
//R2
en
conf ter
int e0/0
ip rip authentication mode md5
ip rip authentication key-chain R2
RIP的debug使用
- 若工作时,密钥不一样,该如何排查
en
debug ip packet //只要有包,就会检测到(只在测试环境上使用,工作中不能用)
undebug all //关闭所有debug信息
en
debug ip rip events //检测RIP里的事件
- 参数详解:
- ignored //丢弃
- invalid authentication //无效认证
加密和哈希值的区别
加密
- 加密:通过各种算法进行加密(例:AES算法,3DES算法)
哈希
- 哈希:是一个定长输出,把一个固定密码进行一个MD5的演变
- 在线hash的反向查询网站:(www.cmd5.com)
MD5是如何在两台设备相传的呢? - 典型案例:
- R1会把三个路由条目打个包,并加上密钥再打个包,并再做上一个MD5的哈希,连同算出的哈希值再打包发给R2
- R2会把这个包中的路由条目和密钥这个包取出来,接下来把里面的密钥做一个替换,替换成自己的密钥,然后再把这个整体做一个MD5的哈希,计算出哈希值后去对比R1之前发过来这个包的哈希值对比是否一样
- 若哈希值不一样,有两种可能
- 传输时,条目被修改了
- 两台设备的密钥不一样
- 这种方法:不止核对了密码,也防止了数据中间被篡改
RIP版本兼容配置
RIP版本操作命令
en
conf ter
int e0/0
ip rip <send/receive> version <1/2/12> //选择进行发送/接收的版本1/2/1和2
- 用来定义接口接收的RIP更新的版本
- 典型案例:假设R1是运行的RIPV1,R2运行的RIPV2
//R1
en
conf ter
router rip
version 1
no auto-summary
net 192.168.1.0
net 1.1.1.1
end
//R2
ne
conf ter
router rip
version 2
no auto-summary
net 192.168.1.0
net 2.2.2.2
exit
int e0/0
ip rip receive version 1 //设置此端口接收RIPV1的更新
ip rip send version 1 //设置此端口发送RIPV1的更新
end
//R2
show run interface e0/0 //查看端口的配置
两台RIP路由协议通信过程
- 当一台路由器运行RIP的时候,它将再运行的RIP的接口上分别发送request(请求)和response(回复)信息,request只发送一次,response信息是每个30s发送一次,里面包含着路由更新条目,这是属于周期更新的,他们都要发送到组播地址224.0.0.9
- 但是当一台RIP路由器收到了一条request信息的时候,它将以单播发送路由更新给对方(记住:这里是单播,经抓包测试)
RIP的偏移列表
- 偏移列表:offset-list(修改RIP中传递路由条目的跳数)
- 所有修改路由条目中的属性值,都是为了影响路由选路
- 典型案例:三台设备运行RIPV2
//R2
show ip route
-
R2在收到两个相同条目以后会负载均衡
-
路由选路规则
- 最长掩码匹配原则:两个相同的条目,看掩码谁长选谁
- 管理距离:一台路由器从两个方向接收到相同的路由条目,但来自不同协议,这时比较管理距离
- 度量值(metric):一台路由器从两个方向收到相同路由条目,且来自相同协议,比较度量值
-
RIP协议的跳数问题修改:偏移列表只能增加跳数
-
RIP的度量值:跳数
若此时当R2去往123.1.1.1的时候下一跳为R1的10.1.1.1
- 增大R2到R3的跳数来实现选路
//R2
en
conf ter
router rip
version 2
no auto-summary
net 10.1.1.0
net 10.1.2.0
exit
//偏移列表配置
access-list 1 permit 123.1.1.0 //匹配出来具体你要操作的路由前缀(路由前缀:抓取的前缀和路由表显示的条目要一致)
router rip
offset-list 1 in 3 e0/0 //“1”表示匹配的ACL,“in”表示数据进来时修改,“3”为增加的跳数(范围0-16)“e0/0”表示数据进来的接口(此时这里的配置时变为4跳)
end
- 此时查看R2的路由表
//R2
show ip route
若此时R1不想让R2去往123.1.1.1下一跳为10.1.1.1
- 增大R2去往R1的跳数
//R1
en
conf ter
router rip
version 2
no auto-summary
net 10.1.1.0
net 123.1.1.0
exit
//偏移列表配置
access-list 1 permit 123.1.1.0 //匹配出来具体你要操作的路由前缀
router rip
offset-list 1 out 5 e0/0 //"out"表示数据出去时修改,“e0/0”表示数据出去的接口
end
//R2
show ip route
RIP的单播路由
-
典型案例:都运行RIP协议,让R1只给R3发送路由更新,不给R2发送路由更新
-
R1上的1.1.1.0路由更新传给R2
- 源地址:192.168.1.1
- 目的地址:224.0.0.9
-
错误的两种做法:
- 用认证来做(它对端依然可以收到,但不放在路由表中)
- 用ACL来做(这个只是数据层面的过滤)
//R2
en
conf ter
access-list 1 deny 1.1.1.0
access-list 1 permit any
int e0/0
ip access-group 1 in
end
- 正确的做法:在R1上把连接交换机上的组播更新给关闭了(自己监听,对外不发送组播更新),之后再给想法的设备进行单播发送
//R1
en
conf ter
router rip
passive-interface e0/0 //把这个接口设备为被动接口(只收不发)
neighbor 10.1.1.3 //单独给R3发送(RIP没有邻居的概念,这个只是单播发送)
//R2
show ip route
//R3
show ip route
- R3的e0/0端口的抓包信息
- 从抓包信息可以看到,R1是单独给R3发送组播更新的
RIP的默认路由
运用的场景
-
假设全网路由总共有70W跳,不可能内部的三层交换机需要知道所有外网的路由,当内网设备多的时候一条一条的写默认路由太过于麻烦了,所以有了自动下发默认路由
-
此时让G1和G2都给下方三层SW下发默认路由(L3-SW1一条GW1,一条GW2)
-
若GW1下发下来的为1跳,GW2下发下来的为2跳,那么L3-SW1优先走GW1那条默认
-
当有一条线路出现问题。GW1下发下来的线路会随着倒计时失效(240s失效时间),自动切换为另外一条
RIP默认路由配置
- 配置案例:让R1给R2和R3下发默认路由
en
conf ter
router rip
default-information originate //下发默认路由(让R2,R3指向R1)
//R2
show ip route
RIP协议设置管理距离
en
conf ter
router rip
ver 2
no au
distance 2 //修改RIP协议收到的条目管理距离都为2
end