
提到rip实验搞网络的人第一反应多半是RIP——Routing Information Protocol路由信息协议。这个实验几乎是每个网络工程师入行时第一个正经的动态路由协议实验。别看协议本身简单把RIP跑起来容易真正跑明白了需要理解的东西一点都不少。这篇东西就围绕RIP实验的完整过程来写从环境搭到配置验证从debug抓包到排错复盘最后再聊几个扩展玩法。适合正在学路由交换的初学者也适合带实验课的老师参考。我自己做的次数够多踩过的坑也够多写下来给你一份可以直接照着做的记录。1. 实验到底在验证什么RIP协议的运行逻辑1.1 先说清楚RIP是什么RIP全称Routing Information Protocol1988年随RFC 1058发布是距离矢量路由协议里最有代表性的一个。它选路的标准只有一个跳数。一台路由器到目标网络经过多少跳数字越小越优先。最大跳数15跳数到16就判定为不可达。这个看似简陋的设计背后是分布式Bellman-Ford算法的思想每台路由器不需要知道全网拓扑只需要相信邻居告诉我的路由信息再结合自身接口算出一个最优下一跳。这个邻居之间交换整张路由表的动作是RIP实验最核心的观察对象。和OSPF这种链路状态协议不同RIP路由器之间传递的是路由条目本身不是网络拓扑地图。打个比方你问路RIP的做法是前面那个路口右转的人告诉我再走两个路口就到了至于中间有没有修路、有没有更近的小路它不关心OSPF的做法是给你发一张完整地图你自己算最短路径。距离矢量协议后来被诟病的收敛慢、环路问题从这种信息交换逻辑里就能看出来。放到实际场景里RIP现在很少用来当骨干网路由协议但在小型网络、教学实验、认证考试中依然是高频考点。它最大的价值不是能用在生产环境而是它能用最少的配置和命令把动态路由的三个基础动作——学习、通告、收敛——完整地演示出来。做完RIP实验再去看OSPF、BGP你会发现理解成本低了一大截。1.2 一个RIP实验需要回答的三个问题我做RIP实验时不会急着让路由表跑起来而是先带着三个问题去设计实验第一个问题直连路由怎么变成全网路由三台路由器各自只有自己和直连网段的路由RIP配置完成后大家是怎么互相学到对方的网段的这个问题的答案藏在30秒周期的路由更新报文里。第二个问题多条路径时怎么选如果目标网段能从两个方向到达RIP会不会两条都放进路由表这里涉及等价负载均衡和度量值的比较逻辑。第三个问题链路断了会怎样断掉一条链路后路由表要多久才能更新为什么有时候会看到possibly down这种奇怪的标记这个问题直接指向RIP的抑制计时器和收敛机制。带着这三个问题做实验和照着命令抄一遍收获完全不是一个量级。我建议你实际操作前先把这个实验的预期结果写在纸上再去看实际输出差别越大学到的东西越多。2. 实验环境与拓扑设计2.1 模拟器选型真机、GNS3、EVE-NG还是Packet TracerRIP实验不挑环境但不同环境能观察到的深度不一样。我主推GNS3核心原因是它能跑完整的IOS镜像debug ip rip、show ip protocols这些命令都能用而且自带Wireshark抓包能直接看到UDP 520端口上的RIPv2路由更新报文。这对理解协议本质太重要了——光看路由表结果你永远不知道协议是怎么说话的。如果刚入门Cisco Packet Tracer也可以做图形化拖拽拓扑很方便基础配置命令都能跑。但它的局限很明显对RIPv2认证支持有限debug命令基本不可用抓包功能也不完整。适合体验流程不适合深挖协议行为。至于真机有条件当然好接口up/down的真实体验和模拟器完全不同。但对多数学习者来说凑三台路由器不是件容易的事。真机的价值在故障排查不在协议学习。所以我个人的建议是GNS3为主EVE-NG也可以Packet Tracer用来速通流程。华为方向的同学用eNSP同样能完成命令风格不同原理一致后面有一节我会专门给华为对照。2.2 拓扑设计思路RIP实验的经典拓扑是三台路由器组成一个环每台路由器下挂一个终端网段。我习惯用环而不是纯链式的拓扑原因是环能同时观察到两个关键现象一是R1到R3之间有两条路径可以演示等价负载均衡二是环的存在让水平分割、路由环路这些机制有发挥空间方便后续深入验证。具体设计如下设备接口地址对端设备/接口用途R1G0/0192.168.1.254/24PC1终端网段R1G0/110.1.1.1/30R2 G0/1互联链路R1G0/210.1.3.1/30R3 G0/2互联链路R2G0/0192.168.2.254/24PC2终端网段R2G0/110.1.1.2/30R1 G0/1互联链路R2G0/210.1.2.2/30R3 G0/1互联链路R3G0/0192.168.3.254/24PC3终端网段R3G0/110.1.2.3/30R2 G0/2互联链路R3G0/210.1.3.3/30R1 G0/2互联链路地址规划上有两个细节值得说。第一互联链路全部用/30掩码每段只用两个可用地址这种规划方式在后来的OSPF实验里也通用。第二终端网段用192.168.x.0/24和互联网段的10.x.x.x区分开方便看路由表时一眼判断条目类型。R2多挂一个PC2不是必须的但你会发现测试目标网络多一个实验的验证点就丰富一些。2.3 配置RIP之前先把连通性测一遍很多同学配置完RIP发现路由不通最后排查半天发现是接口没起来或者IP配错了。为了避免这种低级问题我在配置RIP之前一定会先做一步把三台路由器所有接口的IP地址配好然后逐条ping验证直连链路。具体来说在R1上ping 10.1.1.2验证R1到R2的链路ping 10.1.3.3验证R1到R3的链路。在R2上ping 10.1.2.3验证R2到R3的链路。PC1到R1网关能通PC3到R3网关能通。这一步做完底层的连通性就有了基线。注意这时候PC1到PC3肯定是ping不通的因为中间路由器上没有通往对端网段的路由——这是正常现象不代表配置有问题。先把这一步基线测好后面排错就能直接排除接口和地址的问题把注意力放在RIP协议本身。3. 三步跑通RIP配置、验证、抓包3.1 RIP基础配置network命令里那个坑配置RIP本身只有三行核心命令以R1为例R1#configure terminal R1(config)#router rip R1(config-router)#version 2 R1(config-router)#network 10.0.0.0 R1(config-router)#network 192.168.1.0 R1(config-router)#no auto-summary R1(config-router)#endR2和R3的配置结构一致区别只在network 192.168.2.0和network 192.168.3.0。这里有几个关键点必须解释清楚。第一network命令后面只能跟有类网络地址不能精确到子网。在Cisco IOS里network 10.1.1.0这种写法是不被接受的必须写成network 10.0.0.0。这条命令的实际含义是把设备上所有属于10.0.0.0这个A类网络的接口全部纳入RIP进程。所以三台路由器的互联接口都在10.x.x.x里打一条network 10.0.0.0就够了。第二version 2必须显式配置。思科IOS里RIP默认运行版本1RIPv1不携带子网掩码无法在我们的网络里正确传递/30这条掩码信息会直接导致路由表出现错误条目。RIPv2用组播地址224.0.0.9发送更新RIPv1用广播255.255.255.255两者默认不互通。第三no auto-summary是最容易被忽略的一行。RIP在有类网络边界会自动汇总如果不关闭R2会把自己学到的10.1.2.0/30汇总成10.0.0.0/8再通告出去。结果就是R1和R3都只看到一条10.0.0.0/8下一跳指向R2整个网络的路由瞬间乱套。我见过太多实验看起来通了但traceroute路径不对十有八九是没关自动汇总。配置完所有路由器后等几秒钟RIP更新周期最长30秒路由表就应当自动收敛。如果没看到检查顺序从接口状态开始后面排错环节细说。3.2 用show命令验证路由表配置完成后在每台路由器上执行show ip route重点看RIP学到的路由条目。以R2为例正常情况应该类似这样R2#show ip route ... 10.0.0.0/8 is variably subnetted, 5 subnets, 3 masks C 10.1.1.0/30 is directly connected, GigabitEthernet0/1 C 10.1.2.0/30 is directly connected, GigabitEthernet0/2 R 10.1.3.0/30 [120/1] via 10.1.3.1, 00:00:12, GigabitEthernet0/1 R 10.1.3.0/30 [120/1] via 10.1.3.3, 00:00:08, GigabitEthernet0/2 R 192.168.1.0/24 [120/1] via 10.1.1.1, 00:00:12, GigabitEthernet0/1 R 192.168.3.0/24 [120/1] via 10.1.2.3, 00:00:08, GigabitEthernet0/2 C 192.168.2.0/24 is directly connected, GigabitEthernet0/0这段输出里信息量很大。[120/1]中的120是RIP的管理距离1是跳数。管理距离表示路由来源的可信度直连路由是0RIP是120OSPF是110静态路由默认是1。数字越小越可信。这个机制解释了为什么有时候你配了静态路由RIP学到的同一条路由却无法进入路由表——因为静态路由的管理距离更小被优先选择了。再看10.1.3.0/30这行R2同时出现了两条等价路由一条下一跳指向R1的10.1.3.1准确说是10.1.1.1注意我在这里要修整一下一条指向R3。这是RIP等价负载均衡的直接体现。RIP不关心链路带宽只看跳数只要跳数相等就都会放进路由表。这个特点在实际网络里有局限性但在实验里是一个必须观察到的现象。另外几个命令也建议逐条试一下。show ip route rip只看RIP学到的路由show ip protocols看RIP进程的详细信息包括版本、计时器、宣告的网络、邻居状态。show ip protocols输出里的Distance: (default is 120)能帮你确认管理距离设置。这些命令集合起来是排查一切动态路由问题的基本功。3.3 用debug和抓包看协议开口说话路由表正确只能说明配置没写错不能说明你理解了RIP。理解协议行为最直接的方法是debug ip rip。执行之后路由器会把RIP更新报文的发送和接收过程实时打印到consoleR2#debug ip rip RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/1 (10.1.1.2) RIP: build update entries 10.1.2.0/30 via 0.0.0.0 metric 1 192.168.2.0/24 via 0.0.0.0 metric 1 RIP: received v2 update from 10.1.1.1 on GigabitEthernet0/1 10.1.3.0/30 via 0.0.0.0 metric 1 192.168.1.0/24 via 0.0.0.0 metric 1看到这些日志你才算真正看见协议在工作它周期性向组播地址224.0.0.9的520端口发送整张路由表同时也周期性接收邻居的路由表。注意metric 1的含义直连路由的metric是0通告出去时变成1接收方收到后直接使用这个值作为到目标网络的开销。这在Cisco实现里是发送时加1、接收时不再加1的处理方式。不同厂商可能有细微差异但原理都是逐跳累加距离。比debug更直观的是抓包。在GNS3里右键任意互联链路选择Start captureWireshark过滤表达式填udp.port 520就能看到完整的RIPv2报文。报文的各个字段——地址族标识、路由条目、子网掩码、下一跳、metric——都清晰可读配合30秒的发送周期你能直观感受到RIP的周期性整表更新行为。这种底层视角对理解RIP为什么收敛慢、为什么容易出环路特别有帮助。强烈建议在抓包时把R2和R3之间的链路断开再抓一次。你会看到RIP照样每30秒发送但路由条目里不再包含断连那个网段或者被标记为metric 16不可达。这个观察比看十遍教科书都管用。3.4 把收敛过程慢动作重放计时器调优RIP默认四个计时器分别是更新计时器30秒、失效计时器180秒、抑制计时器180秒、刷新计时器240秒。这意味着一条路由失效后最长要4分钟才会从路由表里彻底消失。做实验时等4分钟确实煎熬所以我会先把计时器调快把收敛过程压缩到几十秒内完成。在RIP进程下执行R2(config-router)#timers basic 5 15 15 30这条命令的四个参数依次是更新周期、失效时间、抑制时间、刷新时间。配完之后路由更新每5秒一次15秒未收到更新就标记失效30秒后从路由表删除。收敛速度直接提高了将近十倍非常适合上课演示或者自己观察状态变化。调试完记得用show ip protocols查看计时器确认修改生效。另外要提醒一句实验环境怎么调都行生产设备千万别随便改RIP计时器。把更新周期改短到5秒等于让所有运行RIP的设备每5秒就互相刷一遍整张路由表小网络能扛住大网络的带宽和CPU都会吃不消而且更新过于频繁还容易诱发路由振荡。实验归实验生产归生产。4. 排错实录RIP实验最常见的坑4.1 路由表里学不到远程网段这个现象在实验里出现频率最高排查思路其实很固定。第一步先看接口状态show ip interface brief确认互联接口都是up。接口down的话什么路由协议都救不了。第二步看RIP进程里宣告了哪些网络show ip protocols会把Routing for Networks列表打出来漏了互联网段是最常见的原因。比如只宣告了network 192.168.1.0忘了写network 10.0.0.0RIP就只能和同网段的邻居说话路由信息根本传不出去。第三步看版本。R1配了version 2R2没配R2还在用版本1那么R1发组播224.0.0.9R2发广播255.255.255.255两边都听不懂对方说什么路由表自然一片空白。排查版本问题最直接的办法还是debug如果debug里只见send不见receive优先怀疑版本或ACL。组播地址224.0.0.9在某些旧设备或特定VLAN配置下可能被过滤但GNS3里基本不会遇到真机上倒是有可能。还要提一个被很多人忽略的地方RIP的更新是双向的如果A能收到B的路由但B收不到A的问题大概率出在B的配置而不是双向都出问题。排错时盯着一台设备看debug输出比来回切换设备乱猜高效得多。4.2 跳数到16possibly down到底怎么回事RIP的跳数上限是1516代表不可达。当一条链路断开RIP不会像OSPF那样立刻重新计算并广播拓扑变化而是先等失效计时器。在从收到更新到确认失效这段时间里路由表里会看到一条状态可疑的条目R 10.1.2.0/30 is possibly down, routing via 10.1.1.1, GigabitEthernet0/1看到possibly down别慌这正是RIP抑制计时器holddown timer在起作用。抑制机制的设计意图是防止路由在拓扑不稳时频繁震荡路由被标记为不可达后180秒内即使收到跳数更小的更新也不会立即接受。这个机制能减少环路风险代价就是收敛速度慢。实验里为了直观看到这个过程建议把计时器调成timers basic 5 15 15 30之后在R2上断开和R3之间的链路然后每隔几秒执行一次show ip route观察10.1.3.0/30这条路由是怎么从正常变成possibly down再到彻底消失的。整个过程30秒内就能走完比干等4分钟高效太多。看完这个流程你对RIP为什么收敛慢的理解会从抽象概念变成亲眼所见的事实。4.3 排错速查表把RIP实验里常见的症状和排查方向整理成一张表遇到问题先对号入座症状可能原因排查命令路由表没有任何R条目network漏宣告、接口down、版本不匹配show ip interface brief、show ip protocols、debug ip ripdebug只发送不接收版本不匹配、组播被ACL过滤debug ip rip、抓包看目的地址学到的路由是10.0.0.0/8没配no auto-summaryshow run、show ip protocols路由表有路由但ping不通PC网关没配、ACL拦截、终端网段地址有误PC上ping网关、traceroute逐跳检查等价路由只有一条两条路径跳数不相等、一台设备没宣告对应网段show ip route、show ip protocols这张表覆盖了我带实验时遇到过的绝大多数问题。排错的顺序也有讲究从底层到上层接口状态看一遍直连ping一遍再上路由协议的调试手段。跳着排查容易把简单问题搞复杂。4.4 我自己的几个实验习惯第一每台设备配完后第一件事就是show ip interface brief确认所有接口up。这个命令我几乎每两分钟敲一次已经成为肌肉记忆。第二做实验前先把直连链路全部ping通这样后续任何问题都能快速定界直连通了问题在路由协议直连不通别碰路由配置先查物理链路。第三所有配置命令打全不用缩写比如no auto-summary一定打全打no aut万一Tab补全错了都不知道。实验记录做好复盘才有依据。还有一个容易被忽略的经验RIP实验经常出现路由表看起来对实际流量路径和预期不一致的情况。这种问题往往不是RIP本身错了而是某个网段同时被宣告到了两个RIP进程中或者残留了没删干净的静态路由。怀疑路由来源时show ip route里条目前面的字母很关键C是直连S是静态R是RIPO是OSPF。看到S开头先想想静态路由是不是多余的。5. 实验收尾的扩展玩法5.1 验证等价负载均衡的真实行为RIP的路由表里同时存在两条等价路由是一回事实际流量怎么走是另一回事。在R2上ping 192.168.3.10连续发几十个包然后到R2上看接口的计数器或者直接抓包观察从R1方向和R3方向各收到多少流量。RIP的负载均衡粒度和你想象的可能不太一样它不是逐包轮流切换而是基于目标网络的。也就是说R2去往192.168.3.0/24这个网段的所有流量会在这两条等价路径之间分摊但具体怎么摊不同IOS版本行为可能不同。实验时可以顺手做一个对比实验把R1和R3之间那条链路的跳数人为抬高比如在RIP里用offset-list命令把某条路由的metric加几看看R2是不是立刻改成只用一条路径。这个操作虽然简单却能很直观地展示度量值决定选路这个核心概念。有兴趣的话可以试试offset-list它也是RIP实验里被低估的一个知识点。5.2 给RIPv2加认证体验路由协议防欺骗RIPv2支持明文和MD5两种认证方式。给互联接口配置MD5认证的完整步骤如下R1(config)#key chain RIPKEY R1(config-keychain)#key 1 R1(config-keychain-key)#key-string cisco123 R1(config)#interface G0/1 R1(config-if)#ip rip authentication mode md5 R1(config-if)#ip rip authentication key-chain RIPKEY同样的配置要在R2的对应接口上也做一遍密钥必须一致。配完你会发现一切正常因为认证成功。然后把R2上的密钥改一个字符等一个更新周期R2的路由表里R1发来的路由会全部消失debug里也能看到认证失败的日志。这个实验虽然简单但它把路由协议安全这个概念的直观感拉满了。RIP默认没有任何认证任何设备加入链路就能接收并注入路由更新这在生产网络里是很大的安全隐患。做完认证实验你会对网络上各种欺骗攻击有更具体的想象。5.3 华为/H3C设备上的对应操作很多读者用的是华为eNSP配置风格完全不同。华为AR路由器的RIP配置在系统视图下进行命令如下[R1] rip 1 [R1-rip-1] version 2 [R1-rip-1] network 10.0.0.0 [R1-rip-1] network 192.168.1.0 [R1-rip-1] undo summary和思科的命令逻辑几乎一一对应version 2对应RIPv2network宣告有类网络undo summary对应思科的no auto-summary。验证命令变成display rip 1 route和display ip routing-table protocol rip前者单独看RIP路由后者看路由表里RIP来源的条目。诊断调试用debugging rip 1 packet不加terminal monitor的话看不到输出这也是华为设备新手容易踩的坑。建议有条件的话两套环境都跑一遍。RIP协议本身是跨厂商的用两套命令实现同一个协议你对路由协议是标准厂商命令只是实现方式这个理念会有更深的体会。做了这么多次RIP实验我个人最大的体会是RIP就像一个动态路由协议的最小可运行样例它够简单简单到你能看清每一条路由条目的来龙去脉它又够完整完整的路由学习、通告、收敛、防环机制全都有。把RIP彻底跑通之后再学OSPF你会发现OSPF里大部分设计的初衷——无环路、快速收敛、分层结构——都是在解决RIP时代留下的痛点。最后一个小建议这个实验环境别急着拆后面学ACL、NAT、策略路由时还能反复用三台路由器的拓扑足以支撑你之后大半的进阶实验。