ARTICLE DETAIL

资讯详情

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

RIP实验全攻略:从路由协议原理到配置与排错的完整实践

RIP实验全攻略:从路由协议原理到配置与排错的完整实践 做RIP实验前先把脑子里那些“路由协议是高科技”的滤镜卸掉。在计算机网络这个语境里RIP全称Routing Information Protocol中文叫路由信息协议也是最经典的动态路由协议之一。我最近又完整跑了一遍这个实验不是为了怀旧而是因为RIP是我认为最适合新手入门的协议配置命令不到十条工作原理一句话能讲清楚但路由协议最核心的选路、通告、收敛、防环机制它一个都不缺。这篇内容把我做实验的完整过程记录下来从拓扑设计、IP规划、配置命令到验证方法和常见翻车点全部基于实际敲过的命令和踩过的坑适合正在做课程实验的网工学生也适合想快速建立动态路由理解的工程师直接照着操作。1. 为什么要做RIP实验它在真实网络里的“过气但不过时”价值1.1 RIP在解决什么问题一台传话游戏没有动态路由协议的网络里路由器要转发数据只能靠管理员手工一条条写静态路由。两三台设备的小网络还好一旦设备超过五台、链路经常变动手工维护就是灾难某条线路一断管理员得逐台设备去改路由表改漏一条全网就出故障。RIP的出现就是为了解决这个问题它让路由器之间自动交换路由信息每台设备只负责把自己知道的路由告诉邻居同时从邻居那里学习别人的路由。这个过程可以理解为一场传话游戏每个人把自己听到的路由信息再叠加一跳继续传给下一个邻居直到全网所有路由器都拿到全部网段的路由。这个思路在数学上叫距离向量算法核心公式可以简化成一句话到达目标网络的距离等于我到达某个邻居的距离加上这个邻居到达目标网络的距离所有邻居里取最小。RIP实验里观察到的每一条路由变化本质上都在执行这个计算理解了这一点后面看debug输出时就不会一头雾水。1.2 实验课为什么偏爱这个“老古董”先说清楚RIP的硬性限制动手前心里有预期用跳数做度量值最大允许15跳16跳视为不可达只适合中小规模网络。每30秒周期性地把路由表整体发给邻居带宽开销不小。网络拓扑变化时收敛慢极端情况下路由恢复要等几十秒甚至更久。正因为这些限制现代生产网络里它基本被OSPF、BGP取代了。但实验课依然喜欢拿RIP开刀原因很简单它把路由协议的骨架暴露得最彻底。配置量小、字段少、抓包容易分析任何一步出错都能通过show命令快速定位。在RIP上学到的“network宣告的是什么”“度量值如何叠加”“路由表里R标识是什么意思”这套思维可以完全迁移到OSPF和BGP的学习里只是后者的复杂度成倍上升而已。1.3 给实验定目标学路由、看更新、看收敛做实验最忌讳上来就抄配置敲完发现通了就算完事。我给自己定的目标很明确让三台路由器组成一条链每台路由器背后都有一个模拟用户网段最终让任一台设备不写一条静态路由就能学到另外两台路由器背后的网段。同时还要观察RIP的周期性更新机制、路由信息的传递路径以及链路故障后的收敛行为。目标一旦清晰后面每一步配置都有了判断依据。比如配置完network命令后到底是检查路由表、检查更新定时器还是直接抓包看报文都由这个目标决定。2. 实验环境搭建三台路由器、一条主线、两张环回口2.1 拓扑设计与设备选型我用的是GNS3配合Cisco IOS镜像做实验用EVE-NG或者华为eNSP也可以命令语法稍有差异但思路完全一致。拓扑不复杂但我刻意只用了三台路由器没加交换机原因很简单三台才能体现“中间人传递路由”的完整过程。具体连线方式R1的GigabitEthernet0/0连接R2的GigabitEthernet0/0R2的GigabitEthernet0/1连接R3的GigabitEthernet0/0每台路由器各创建一个Loopback0环回接口模拟一个对外提供的用户网段模拟器选择上有一点经验GNS3里用路由器镜像时优先选自带接口较多的型号避免后面扩展实验时接口不够用。如果只有两个物理接口的设备也能通过子接口方式跑通但体验不如直接选三接口以上的型号。2.2 IP规划表与地址选取逻辑IP规划直接按下面这张表来每个互联链路占用一个/24网段环回口全部用/32。设备接口IP地址掩码对端设备R1GigabitEthernet0/012.1.1.1255.255.255.0R2 GigabitEthernet0/0R1Loopback01.1.1.1255.255.255.255—R2GigabitEthernet0/012.1.1.2255.255.255.0R1 GigabitEthernet0/0R2GigabitEthernet0/123.1.1.2255.255.255.0R3 GigabitEthernet0/0R2Loopback02.2.2.2255.255.255.255—R3GigabitEthernet0/023.1.1.3255.255.255.0R2 GigabitEthernet0/1R3Loopback03.3.3.3255.255.255.255—三个环回地址分别用1.1.1.1、2.2.2.2、3.3.3.3在实验里有很大的便利性查看路由表时一眼就能认出某条路由到底是从哪台设备学来的不需要逐条去翻邻居关系。地址段方面建议避开10.0.0.0和172.16.0.0这类容易触发自动汇总的私有地址段因为非连续子网问题在后面是个经典的坑最初实验时没必要把自己绕进去。2.3 基础配置与“先直连后非直连”验证原则先把所有物理接口配置好加上IP并开启接口。以R1为例进入接口配置模式后interface GigabitEthernet0/0 ip address 12.1.1.1 255.255.255.0 no shutdown ! interface Loopback0 ip address 1.1.1.1 255.255.255.255华为设备默认接口开启不需要no shutdown但Cisco设备这一步漏掉接口会一直处于down状态后面配再多RIP命令也不会生效。接口配完先别急着进路由协议做一轮直连连通性验证R1上ping 12.1.1.2R2上ping 23.1.1.3确保物理链路和封装没问题。这时候如果拿R1去ping 3.3.3.3一定是不通的因为R1要去往R3背后的网段需要一条中间路径这条路径正是留给RIP去解决的。先验证直连、再验证非直连这个顺序能帮你把“网络层路由问题”和“接口配置问题”迅速区分开。如果直连都不通直接先查物理连接和接口状态不要浪费时间在路由协议上。3. RIPv2配置全过程每一条命令都别白敲3.1 进入路由进程router rip与version 2三台路由器的RIP配置套路几乎一样区别只在于宣告的网段不同。以R2为例进入系统配置模式后router rip version 2第一行创建RIP进程并进入路由协议配置模式第二行指定协议版本为RIPv2。这里我的建议是直接学习v2而不是v1因为RIPv2支持无类路由、支持在路由更新中携带子网掩码、使用组播发送更新、还支持认证功能。现代实验环境没有任何理由再去接触v1那种纯广播、无掩码的老旧方式生产环境中遇到RIP的机会也基本只有v2。3.2 network到底宣告的是什么最容易理解错的一条命令接下来是RIP里最容易被误解的network命令。很多初学者以为这里的地址是“允许进入路由表的路由”实际上更准确的理解是network命令匹配的是设备上处于该网络范围内的接口凡是匹配到的接口都会参与RIP进程并把接口所在的网段通告给邻居。R2上的完整配置如下router rip version 2 no auto-summary network 12.1.1.1 network 23.1.1.2 network 2.2.2.2这里有个细节需要注意不同IOS版本的network写法有差异。老版本里一般写有类网络号比如network 12.0.0.0、network 23.0.0.0、network 2.0.0.0新版本支持直接写具体接口地址。写法不同匹配逻辑一致只要接口IP落在network声明的地址范围内这个接口就会启用RIP。R2上三块接口全部宣告进RIP一个都不能漏两个互联口负责与R1、R3交换路由Loopback0负责把本机的模拟用户网段传播出去。R1和R3同理把各自的物理接口与环回接口全部宣告进去三台配置完整后动态路由就开始在邻居之间传递了。3.3 关闭auto-summary一个需要养成习惯的动作继续看R2配置里的no auto-summary。Cisco历史上RIP默认开启了自动汇总功能路由跨有类网络边界时会被汇总成主类地址。在连续地址空间里问题不大但网络地址一旦是非连续子网自动汇总就会产生一条不精确的路由结果轻则丢路由重则形成路由黑洞。所以配置里我总会显式写上no auto-summary让每条子网路由连同掩码原样传递。这个习惯在实验里能省掉大量排错时间将来配置OSPF时也是一个类似的思维方式不要让协议擅自改变路由的精确性。3.4 验证路由表与度量值计算三台配置完成等十几秒让路由互相传播然后在R1上执行show ip route。正常情况下能看到类似下面的输出R 23.1.1.0/24 [120/1] via 12.1.1.2, 00:00:12, GigabitEthernet0/0 R 3.3.3.3/32 [120/2] via 12.1.1.2, 00:00:12, GigabitEthernet0/0每一行都值得拆开看。首字母R表示这条路由由RIP协议学到和直连路由C、静态路由S有明显区分。方括号里的120是RIP的管理距离表示路由协议的可信度后面的1和2是度量值也就是跳数。R1去往23.1.1.0/24需要经过R2所以是1跳去往3.3.3.3需要经过R2再到R3所以是2跳。这个度量值不是随便显示的它反映了RIP的核心计算逻辑R2把3.3.3.3/32通告给R1时会在自己到该网段距离1跳的基础上加1变成2跳R1再计算进入路由表。整个逻辑链清晰透明比OSPF的SPF算法直观得多。3.5 show ip protocols与debug ip rip的读法show ip protocols是另一个必看命令它直接列出当前路由进程的详细信息重点看以下字段路由协议版本是否为RIPv2已宣告的网络列表更新定时器默认30秒、无效定时器180秒、刷新定时器240秒正在运行RIP的接口列表如果发现宣告的网络没有出现在列表里说明network命令没匹配到对应接口这通常是漏写了或者地址段写错。想看路由更新过程的“现场”最直接的方法是开启debug ip rip然后观察控制台输出。你会看到R2周期性把路由发送给R1同时从R1接收更新并处理。对于初学者来说亲眼看到send和received两条日志交替出现比背十遍“RIP每30秒发送一次完整更新”都要有效。注意debug会占用CPU实验完毕记得用undebug all关掉。如果还想更严谨地验证RIPv2报文的细节可以在拓扑中串联一台交换机做端口镜像或者用GNS3自带的抓包工具。RIPv2的更新报文发往组播地址224.0.0.9源目端口都是UDP 520报文内部携带了每条路由的子网掩码这是RIPv2和RIPv1最本质的区别之一。4. 实验中绕不开的坑版本、汇总、环路4.1 版本混用的“半通不通”问题先说一个最隐蔽的实验坑某台路由器配了version 1另一台配了version 2结果R1学不到R3的路由但R2自己学得到整体状态看起来“部分通”。原因在于RIPv1使用广播地址255.255.255.255发送更新RIPv2使用组播地址224.0.0.9两者默认不会互相监听。R1发广播R2只监听组播自然收不到。遇到这类问题逐台执行show ip protocols检查版本字段是最快的定位方式。我的做法是配置阶段就把所有设备统一成version 2不要存在侥幸心理更不要以为“反正都是RIP版本差不多就行”。路由协议之间的兼容性问题远比普通人以为的敏感。4.2 auto-summary引发的“路由黑洞”还有一类问题比完全学不到路由更隐蔽路由学得到但数据包丢。举个例子R1背后是10.1.0.0/16R3背后是10.2.0.0/16R2作为中间路由器。如果R2没有关闭auto-summary它向R1通告路由时可能把10.2.0.0/16汇总成10.0.0.0/8。R1收到这条汇总路由后以为整个10网段都从R2方向走结果真正要去往R3背后的10.2.0.0/16时数据包被错误地送回R2形成黑洞。这个坑在实验里特别容易出现在RIP路由跨主类网络边界时。排查时优先怀疑auto-summary检查命令还是show ip protocols看输出中是否提示自动汇总处于开启状态。解决方案就是前面强调的no auto-summary配置完成后建议在R1上再次验证路由表里是否同时存在两个精确的10.x子网条目。4.3 断链实测看一次毒性反转与收敛实验做到这里我建议做一次破坏性测试把R1与R2之间的链路shutdown。此时R1上原来经由R2学习到的所有RIP路由会逐渐失效路由表里对应条目的计时器不断增长直到超过无效计时器后路由被移除或者在等待过程中收到来自其他路径的替代路由。更值得观察的是R2的表现。当R1-R2链路断开后R2会检测到邻居不可达将原本经由R1接口学到的路由标记为不可达也就是把度量值改为16并主动通告给R3。这个动作在RIP机制里叫毒性反转目的很明确快速告诉其它路由器“我这边的某条路径已经废了别再把流量往我这儿送了”。做这个实验时配合debug ip rip观察输出记录链路down之后的时间点再对比路由表完全收敛的耗时你会直观感受到RIP为什么不适合大型网络。在很多拓扑里整个收敛过程可能持续几十秒甚至更久这对现代高可用网络来说是不可接受的但在学习阶段慢反而成了优点——每一步都看得清。4.4 新手必翻的几个小跟头再列几个我带人做实验时反复看到的问题每个都真实发生过忘记no shutdown接口一直处于down状态RIP进程根本不会在该接口上运行。排查时先看接口状态别一上来就查路由协议。环回接口没有宣告进RIP全网其它路由器永远学不到这个模拟用户网段。network列表一定要覆盖环回口。接口上误开了被动接口模式导致该接口不再发送RIP更新所有邻居都学不到路由。常见于抄了网上的模板但没理解参数含义。用ping测试时目标地址本身没有宣告到任何路由协议中结果一直Ping不通误以为RIP配置失败。这几个问题都很基础但恰恰是实验报告里最常出现的“排查方向跑偏”的原因。建议在配置前先导出一份初始配置备份配置完成后一旦出问题直接和基线对比能节省大量时间。4.5 一次完整的排错链路演示最后用一个完整场景把上面的知识点串起来。假设R1上学不到R3的3.3.3.3/32但R2上明明有这条路由。第一步从需求反推。R1要学到3.3.3.3唯一的途径是R2把这条路由通告过来。所以在R2上看它是否具备这条路由以及是否向R1发送了更新。执行show ip route发现R2路由表里确实有3.3.3.3/32问题就进一步缩小到“R2为什么不向R1发送”。第二步在R2上执行show ip protocols检查发送接口列表。发现连接到R1的GigabitEthernet0/0在列表中说明接口参与了RIP排除接口未启用的可能。继续检查是不是配置了passive-interface命令输出中如果有该接口的被动标记基本就找到了原因。第三步在R2上执行debug ip rip观察发送的更新内容确认更新报文中是否包含3.3.3.3/32。如果确实发送了但R1还是学不到问题就可能在R1的接收方向比如R1上配置了RIP版本冲突或者接口过滤。如果更新报文里压根没有3.3.3.3条目问题根源反而在R2的宣告列表回到network 2.2.2.2是否配置正确。这个链路看起来简单但它体现了一个重要原则排错不是从路由器上随机敲命令碰运气而是先定位故障在哪一段再决定用什么命令验证。有了这条清晰的思路RIP实验里百分之九十的问题都能在十分钟内解决。5. 把RIP实验做出实用价值三种延伸玩法5.1 用passive-interface做“静默接口”实验基本跑通后可以加一个安全性视角的扩展玩法在连接终端设备的接口上不应该让路由器主动发送RIP更新。原因有两个一是避免占用终端带宽并造成无意义的广播/组播流量二是避免向普通用户泄露内部网络拓扑。配置方式如下router rip passive-interface default no passive-interface GigabitEthernet0/0实际效果是默认所有接口都被动化然后只放行路由器与路由器之间的互联接口。这是一个很常见的真实网络配置实验里把这个命令跑一遍才能真正理解被动接口到底限制的是“发送”还是“接收”——注意被动接口只是不发送更新接收更新依然正常。5.2 注入默认路由让全网都能访问外部网络现实中RIP网络通常处于网络的出口边界为了让内部所有路由器都知道去往外部网络的路径可以在出口设备上把默认路由注入到RIP。操作很简单router rip default-information originate这条命令的作用是把0.0.0.0/0以默认路由形式通告给所有邻居。自此以后全网任意一台路由器即使不配置静态默认路由也能通过RIP学到去往出口的下一条路径。这个扩展实验特别有价值它把“默认路由”和“动态路由协议”两个概念很好地衔接起来。5.3 RIPv2认证从“能通”到“安全”RIPv2支持基于MD5的认证可以在实验里继续扩展。配置分两步先定义key chain再把认证方式绑定到具体接口key chain RIPKEY key 1 key-string cisco123 ! interface GigabitEthernet0/0 ip rip authentication key-chain RIPKEY ip rip authentication mode md5两端配置一致才能正常交换路由有一端密钥不匹配路由就会静默消失这种表现比接口down还容易让人迷惑。做这个实验能帮你理解路由协议本身也需要安全设计同时强化key chain相关的命令记忆。5.4 横向对比扩展再跑一遍OSPF如果时间允许强烈建议在同一个拓扑上再做一次OSPF对比实验。RIP是距离矢量协议只告诉邻居“我有一条路由距离是几跳”邻居无从知晓整网拓扑而OSPF是链路状态协议每台路由器都要收集全网的链路状态信息再独立计算最短路径。做对比实验时重点看两台设备在链路中断后的反应时间。RIP可能要好几十秒才能收敛完成OSPF通常在秒级甚至毫秒级完成切换体验远比理论描述有冲击力。这种对比还能帮助你理解一个问题为什么在真实网络中路由协议的选择往往就是收敛速度和运维复杂度的权衡。我自己带新人时有一个强烈的建议做RIP实验时把目标定成“观察路由协议行为的最小实验台”而不是“学会敲RIP命令”。命令本身半天就能背完真正值钱的是对更新周期、计时器、度量值、防环机制这些微观行为的敏感度这种敏感度在后面学OSPF、学BGP时会一直有效。最后分享一个小技巧实验收尾阶段把show ip route、show ip protocols、debug ip rip三类输出各自截取一段完整的保存下来再用抓包软件捞一段RIPv2组播报文看一眼携带的子网掩码字段几个动作加起来你的实验收获会明显比只敲完命令就跑的同学多出一个层级。
返回列表