ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RIP综合练习全解析:从协议原理到抓包排障

RIP综合练习全解析:从协议原理到抓包排障 看到“rip综合练习”这个题目我第一反应不是“又是个老掉牙的协议”而是想起自己当年蹲在GNS3前面一遍遍敲show ip route、盯着RIP更新报文发呆的日子。如果你正准备做这个练习或者已经被老师/考题架上去了那我先给你交个底RIP是理解所有动态路由协议的敲门砖把rip综合练习做扎实了后面学OSPF、IS-IS会顺滑非常多因为你真正搞懂的不是命令而是“路由到底是怎么被学来的”。这篇内容就是把你可能遇到的原理、配置、抓包、排障一次讲透不管你是刚接触路由的初学者还是想快速补一遍RIP细节的运维老哥都能直接照着练。1. 为什么要把“RIP综合练习”当作第一课1.1 RIP在路由协议家族中的位置先说结论RIP属于距离矢量协议。它和OSPF链路状态走的是两条完全不同的技术路线。距离矢量协议的核心逻辑非常朴素——“我不认识全网我只听邻居说并且完全相信邻居”。每台路由器定期把自己知道的路由信息原封不动地告诉直连邻居邻居再加上自己的跳数继续转发。这种“口口相传”的模式就是RIP的老底子。你可能会问现在生产环境里哪儿还有RIP的身影确实大型网络基本都是OSPF、IS-IS、BGP的天下RIP只存在于某些小型网络或者老旧设备上。但经典之所以经典就在于它用最少的机制讲清楚了路由协议必须面对的所有核心问题度量值怎么选、更新频率怎么定、环路怎么防、收敛怎么做。把这些一次性弄明白再看OSPF的DR/BDR、LSA泛洪、SPF计算你的理解会完全是另一个深度。1.2 做完这套练习你该带走什么能力我见过很多学生做完RIP练习只说得出“配了几条命令、show了一下路由表”这就是练了个寂寞。一套合格的RIP综合练习做完你至少该带走四样东西第一能徒手画出RIP的报文交互过程。知道更新是从UDP 520端口发出的RIPv1用广播255.255.255.255RIPv2用组播224.0.0.9一个响应包里最多塞25条路由多了就分多个包发。第二能解释清楚度量值。RIP不看带宽不看延迟就看跳数最大有效跳数是1516就是不可达。第三能说出四种防环机制的原理。水平分割、毒性逆转、触发更新、抑制计时器缺一个就是环路的温床。第四也是最重要的能独立排障。路由学不到、路由环路、路由黑洞给你一台路由器你能用命令和抓包定位问题。如果你练完这四样都能做到那这个“综合练习”才算在脑子里真的扎了根。1.3 练习环境怎么选GNS3、eNSP还是Packet Tracer环境选不好练习体验会差一大截。先说不推荐的Packet Tracer。它做入门理解还行但协议实现太简化很多RIP的细节行为比如触发更新、抑制计时器的实际表现在PT里根本看不到你要想抓包、看debug输出就会被它憋死。我个人更推荐GNS3配合思科IOS或IOL镜像。它的优势是协议实现完整、支持Wireshark直接抓接口的包、能模拟真实故障场景。如果你手头只有华为环境那eNSP也完全够用华为AR路由器的RIP实现也很规范命令风格和思科略有差异华为是rip 1进入进程思科是router rip但只要原理通了换命令只是查一下语法的事。另外提醒一句不管用哪个模拟器请务必在练习前把拓扑保存成一个工程文件命名带上日期和实验目的。这种习惯看似不起眼但等你做“RIPv1对比RIPv2”、“关闭自动汇总前后对比”这种多轮实验时能少走无数弯路。2. RIP协议的核心机制先懂原理再动手敲命令2.1 距离矢量算法与RIP的度量RIP的算法名字叫Bellman-Ford本质就是一个动态规划的分布式版本。每台路由器维护一张路由表表里每一项包含目的网段、下一跳、出接口和度量值。启动后路由器给邻居发更新邻居检查收到的条目如果这个目的网段我没见过直接加进来度量值加1如果我知道一条更优的路径就替换如果收到的路径不如现有路由但它是从当前最优的下一跳发来的那就说明拓扑可能有变化还是得认。RIP把“距离”简化成了跳数这是它所有优点和缺点的根源。优点是实现简单、CPU和带宽开销小缺点也很明显——它完全不考虑带宽和延迟。两台路由器之间哪怕一个是百兆光纤一个是拨号调制解调器只要跳数一样RIP就认为它们一样好。这就是为什么RIP在现代复杂网络里会被淘汰。你在练习中必须亲手感受这个局限性以后才不会天真地认为“路由协议都是智能的”。这里还要记住几个关键计时器。更新计时器Update默认30秒路由器每30秒周期性地向所有启用RIP的接口发送完整路由表。失效计时器Invalid180秒如果在180秒内没有收到某条路由的更新就标记为可能失效。垃圾收集计时器Flush240秒到时彻底从路由表删除。抑制计时器Holddown后面专门讲。这几个数字请你练到手熟排障时第一件事就是对它们。2.2 RIPv1与RIPv2哪些坑藏在版本差异里很多人做RIP练习第一步就踩了版本坑。在思科设备上如果只敲router rip不敲version 2进程默认跑的是RIPv1。RIPv1是有类协议更新报文里根本不带子网掩码也不支持VLSM和无类路由更不能关闭自动汇总。这意味着如果你的网络里用了/30这种子网划分RIPv1会把它们强行汇总成有类边界导致路由表混乱。RIPv2的无类特性解决了这个问题。它引入了一个关键能力更新报文中携带子网掩码和下一跳字段支持VLSM、CIDR并且默认开启自动汇总但可以手动关闭no auto-summary。RIPv2还支持明文和MD5认证以及路由标记这些在RIPv1里通通没有。我把两者差异整理成一张对照表你练习时可以贴在屏幕边上对比项RIPv1RIPv2报文类型有类无类更新目标地址广播255.255.255.255组播224.0.0.9是否携带子网掩码否是支持VLSM/CIDR不支持支持自动汇总强制开启默认开启可关闭认证支持不支持支持明文/MD5认证附带下一跳字段无有练习时我强烈建议你把同一套拓扑分别跑一遍RIPv1和RIPv2然后抓包对比。你会看到RIPv2的路由条目里清清楚楚带着掩码长度而RIPv1只能靠目的地址猜掩码。这个视觉冲击比你背十遍概念都有用。2.3 RIP的防环机制到底防了什么距离矢量协议最怕的就是环路。想象路由器A和B之间链路断了A发现路由不可达但B还在30秒后傻乎乎地告诉A“我能到那跳数是2”于是A把这条路由学回来跳数加1变成3A再回告BB再变成4……这就是计数到无穷。RIP用跳数16作为无穷大的标记让这个失控的循环在16跳处戛然而止但代价是收敛时间非常漫长。为了抑制环路RIP准备了四件套。第一件是水平分割从某个接口学来的路由永远不再从这个接口通告回去。逻辑很简单既然邻居告诉我这条路我再告诉邻居“你也走这条路”没有任何意义。第二件是毒性逆转比水平分割更猛烈它允许从某接口学到的路由反向通告但把度量值直接改成16等于明明白白告诉邻居“这条路已经烂了”。第三件是触发更新一旦检测到拓扑变化不等周期更新计时器立刻发出更新把变化告诉全网。第四件是抑制计时器Holddown当收到某条路由可能变坏的更新后路由器会启动一个180秒的抑制窗口在这段时间内即使收到更优的路径也不会轻易修改路由表防止路由在两条路径之间来回弹跳。你在综合练习里一定要人为制造一次链路down/up然后开debug ip rip外加抓包亲眼看看毒性逆转报文里的metric 16是怎么出现的触发更新是不是立竿见影的。对这四个机制的观察才算把RIP协议读懂了。3. 综合练习实操从零搭建拓扑到跑通全网路由3.1 练习拓扑设计与IP规划模拟器里做实验拓扑别搞太复杂但也不能简单到只是一条直连。我建议你搭一个经典的“三台路由器串联两台PC挂两端”的拓扑具体长这样R1的G0/0接R2的G0/0R2的G0/1接R3的G0/0R1的G0/1接PC1所在交换机R3的G0/1接PC2所在交换机。三台路由器之间的两条互联链路分别是10.0.1.0/30和10.0.2.0/30两个业务网段分别用192.168.1.0/24和192.168.2.0/24。这个设计的好处是R1和R3之间存在两跳距离RIP的跳数累加体现得清清楚楚两条互联链路都是/30掩码逼着你必须用RIPv2才能正确处理正好用来对比RIPv1的毛病。IP分配我也直接给你设备接口IP地址说明R1G0/010.0.1.1/30连接R2R1G0/1192.168.1.1/24连接PC1网段R2G0/010.0.1.2/30连接R1R2G0/110.0.2.1/30连接R3R3G0/010.0.2.2/30连接R2R3G0/1192.168.2.1/24连接PC2网段PC1网卡192.168.1.10/24网关192.168.1.1PC2网卡192.168.2.10/24网关192.168.2.1为什么要用/30而不是更省事的/24做互联因为/30最小子网恰好容纳两台路由器的两个IP用这种掩码才能逼出“RIP要正确处理无类路由”的需求同时也符合真实网络里互联链路的规划习惯。你把这两个/30写进RIPv1里试试就知道自动汇总有多坑了。3.2 基础配置步骤与命令详解环境搭好后先完成所有接口的基础配置。思科风格的命令如下我以R1为例Router enable Router# configure terminal Router(config)# hostname R1 R1(config)# interface GigabitEthernet0/0 R1(config-if)# ip address 10.0.1.1 255.255.255.252 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# interface GigabitEthernet0/1 R1(config-if)# ip address 192.168.1.1 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# exit注意接口视图下一定要敲no shutdown模拟器里很多接口初始就是管理性down的漏掉它你会半天查不出问题。R2和R3按表格依次配置即可PC的IP和网关在图形界面里填好就行。接口配置完开始配置RIP。R1的RIP配置命令如下R1(config)# router rip R1(config-router)# version 2 R1(config-router)# no auto-summary R1(config-router)# network 10.0.0.0 R1(config-router)# network 192.168.1.0 R1(config-router)# end这里要解释一个非常容易搞混的点network命令后面跟的不是接口IP而是你希望RIP宣告的直连网段。在思科IOS默认语法里它要求的是有类网络范围。比如你的接口是10.0.1.1那宣告network 10.0.0.0意味着所有10.x.x.x接口全部参与RIP如果你的接口是192.168.1.1宣告network 192.168.1.0正确你写192.168.1.1也会被自动处理成有类范围。华为设备语法略有不同但核心逻辑一样network后面同样是要宣告的网段。千万记得RIP只能宣告直连网段你不能宣告一条自己路由表里根本不存在的网络这是新手最容易犯的错。R2的配置同理它需要宣告10.0.0.0覆盖两个互联接口所在网段R3宣告10.0.0.0和192.168.2.0。3.3 验证路由学习过程与抓包分析配置完成后依次在R1、R2、R3上执行show ip route rip你会看到非直连路由开始出现。R1上应该能看到10.0.2.0/30和192.168.2.0/24两条RIP路由且192.168.2.0/24的度量值显示为[120/2]前面的120是RIP的管理距离后面的2是跳数。R3同理能看到10.0.1.0/30和192.168.1.0/24度量值是[120/2]。R2则是能看到两个业务网段度量值都是[120/1]。这一步先别急着庆祝我建议你立刻做两件事。第一在R1上执行show ip protocols确认RIP版本是2、自动汇总已关闭、network宣告的网段列表正确、四个计时器的数值是30/180/180/240思科默认holddown也是180。第二用Wireshark在R1和R2的互联链路上抓包过滤条件直接写udp.port 520。你会看到每30秒一次周期更新目标地址是224.0.0.9组播报文里能展开RIP条目看到192.168.2.0/24、255.255.255.0、metric 2这些字段。抓包这段是整套练习里最有价值的部分没有之一。你亲眼看到路由信息是怎么封装在UDP报文里的以后理解任何路由协议都不会再觉得是在背天书。我练习时还会顺手把RIPv1和RIPv2的报文各存一份pcap这个习惯后来帮了我大忙因为只要打开对比一下路由条目里有没有掩码字段就立刻能判断网络里跑的是哪个版本。4. 练习中高频踩坑与排查实录4.1 路由表里看不到邻居路由怎么查综合练习里最常见的翻车现场是三台路由器配置全敲完了show ip route ripple却学不到非直连路由。这种问题八成出在三个地方network宣告错误、接口没起来、被动接口或ACL挡路。先说network宣告。我见过太多人把network 10.0.0.0写成network 10.0.1.0。在思科IOS上这会导致RIP只匹配主类网络10.0.0.0的子集不对严格来说OS会把输入转换为主类号但如果你的设备开启了无类路由支持并且做了子网匹配很多时候反而会漏宣告。最稳的排查姿势是看show ip protocols里的Routing for Networks列表列表里每一行就是你宣告进去的网络。对照地址规划表一眼就能看出谁漏了。再说接口状态。如果你配置后等了一分钟还是学不到路由赶紧敲show ip interface brief看看路由器之间互联接口是不是shutdown状态。这个问题模拟器里极其常见而RIP对更新又没有ACK机制接口都没起谁给你发路由更新最后是ACL和被动接口。有的练习项目会在接口上配置了ip access-group或者做了passive-interface。被动接口就是只收不发——它可以接收邻居的更新但不会主动往该接口发更新。如果你R1的路由表里有邻居给的10.0.2.0但邻居学不到192.168.1.0那多半就是被动接口设错了方向。排障时用debug ip rip发一个全局观察谁在发、往哪儿发、发什么内容全部一目了然比瞎猜快得多。4.2 路由环路和收敛风暴的现场表现综合练习如果想上强度我推荐你人为制造一次路由环路来观察。最常用的手法是在R1上配置一条指向R2的静态缺省路由然后重分发进RIP同时R2上也配置一条指向R1的静态缺省路由。这时候RIP兴高采烈地把“缺省路由”相互通告如果链路又出现异常就会出现典型的环路症状。现场表现是怎样的路由器会突然开始收到从同一个邻居反复通告的同类路由metric越加越大第一条是1第二条变成2第三条变成3直到16跳不可达。此时debug ip rip的输出会非常热闹你会看到一台路由器的两条路由条目在报文中反复出现。网络里同时会有大量更新报文泛洪因为每个周期30秒大家都在互相通告更新版本收敛时间被拖得很长。防环机制的观察点就在这个场景里。你会看到一个接口收到的路由在回应报文中变成了metric 16这就是毒性逆转在起作用。如果你在路由器上配置了holddown计时器还能看到某条路由进入潜在失效状态后即使收到更优路径也不立即生效等待计时器倒计时。这套现象你亲手逮住一次比单纯背概念要牢靠一万倍。4.3 自动汇总引发的路由黑洞RIP还有一个经典坑叫“路由黑洞”尤其是在有类汇总参与的时候。假设你在R2上宣告了10.0.1.0/30和10.0.2.0/30如果RIPv2没有执行no auto-summaryR2向外通告时会把这两条汇总成一条10.0.0.0/8。这个汇总条目看起来没问题但如果你整个网络里10.0.0.0/8是分段的比如业务网段里还有10.2.0.0/24那么这条/8汇总就会把不该通的地方也吸进来导致数据包发过去后又找不到具体路由被默默扔掉。怎么排查看路由表时注意前缀长度。如果192.168.1.0/24旁边突然出现一条192.168.0.0/16这就是自动汇总干的好事。解决方法在RIPv2下就一行命令no auto-summary每条路由器上都要敲。如果是RIPv1对不起它压根就不能关这也是为什么现代网络必须淘汰RIPv1的核心原因之一。练到这里你再回头看1.2节的能力清单理解又会深一层。4.4 计时器与被动接口的连环坑最后一个坑是计时器不一致。如果你在R1上把更新计时器改成了60秒而R2、R3还保持默认30秒那么R1发出去的更新频率和R2不一致。短期内看不出问题但只要链路抖动一次R1的失效计时器过慢就会在故障期间继续保持“已过期”的旧路由通告把邻届带入认知混乱。我在自己的综合练习里故意这么干过一次然后把Wireshark打开对比报文时间戳你能清清楚楚看到R1的更新间隔是60秒而另两台是30秒。这种故障在现实中可能就是一次重大事故的温床但在练习里是最好的教材。统一做法是让全网RIP计时器保持一致或者干脆都用默认值。顺便说一句被动接口如果和ACL叠加使用还能折腾出“能学到但学不全”的奇葩现象这种组合问题等你把基础排干净了再去挑战。练到这里整套rip综合练习已经远远超出了“配几条命令”的范围。我个人强烈建议你把RIPv1和RIPv2分别完整跑一遍再用Wireshark把两种版本的更新报文存下来对比你会发现路由协议演进背后的逻辑被一条条报文彻底照亮了。这个动作值回你所有的练习时间。
返回列表