ARTICLE DETAIL

资讯详情

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

RIP动态路由实验配置详解:从拓扑规划到排错实战

RIP动态路由实验配置详解:从拓扑规划到排错实战 先说一句大实话每次有人跑来问动态路由怎么配我第一反应都会先问一句——你说的是前端那个动态路由还是网络设备上的动态路由这两个东西在搜索词里天天撞车Vue Router那种根据权限动态挂路由表的玩法和我要讲的RIP协议完全是两个层级的事。RIPRouting Information Protocol是跑在三层设备上的路由协议解决的是数据包该从哪个接口送出去的问题。这篇文章我从实验拓扑、地址规划、配置命令到排错思路完整过一遍适合刚接触交换路由、想在模拟器里动手验证RIP行为的朋友。1. 先弄清RIP到底干什么从静态路由的痛点说起1.1 静态路由不好使的场景在学习RIP之前很多人对路由的认识是从静态路由开始的——在路由器上手动写一条ip route 目标网段 下一跳告诉设备去这个网段往那边走。这种做法在小网络里没毛病但网络一旦复杂问题就来了。想象一个三台路由器串联的网络每台设备两边各连着两个网段。你要让全网互通至少得给每台路由器写三四条静态路由而且每条都得手动核对下一跳地址。哪天拓扑调整了——比如中间加了一台设备、某个网段重新划分了——你得逐台登录设备把所有相关静态路由全部改一遍。更麻烦的是静态路由的正确性完全依赖管理员对全网的掌握。如果某条链路断了静态路由不会自动切换到备用路径它只会继续往那个黑洞里丢包。我帮朋友排障时见过太多因为静态路由指错方向导致的网络看起来通、实际通不了的诡异问题。1.2 RIP的核心机制距离向量算法和跳数度量RIP解决的就是让路由器自己学习路由的问题。它采用距离向量Distance Vector算法思路非常朴素每台路由器定期把自己的整张路由表告诉邻居邻居收到后对比自己已有的路由留下跳数更少的条目再传给自己的邻居。这样经过几轮口碑传播全网每台路由器就都能知道去往各个网段应该走哪个方向、跳数是多少。RIP用跳数Hop Count作为度量值每经过一台路由器跳数加1最大有效跳数是1516跳就视为不可达。它的数据包走UDP端口520RIPv1用广播方式发送RIPv2改用组播224.0.0.9发送同时支持了VLSM、路由认证等更实用的特性。初学RIP时会觉得这个协议有点笨——毕竟它不考虑带宽、延迟只看跳数。但它的价值恰恰在于简单配置极简、逻辑清晰、行为可预期非常适合用来理解动态路由这个概念到底是怎么运作的。这也是为什么几乎所有网络教材都把RIP作为路由协议教学的第一课。2. 实验拓扑与地址规划三台路由器串出RIP的可视化收敛过程2.1 拓扑设计与设备选型实验拓扑我建议用三台路由器串联左右两侧各接一台PC或者一个模拟用户网段。为什么是三台因为两台太简单体现不出经由中间设备传递路由信息的过程而三台正好能让你看到RIP的路由信息一步步从一端传到另一端的完整链路。这里我用思科设备做演示模拟器里选Router 2811或者3725都可以。如果你用的是GNS3需要准备一个思科IOS镜像如果用Packet Tracer直接用内置的路由器设备就行。EVE-NG也完全可以不过对初学者来说Packet Tracer的图形界面更友好GNS3的优势是能配合Wireshark抓包后面排错章节我细说。2.2 接口IP规划表与掩码思路规划地址是很多新手最容易翻车的环节。我按下面的方案来分配这也是我在实验环境里用着最舒服的一套规划设备接口IP地址对端设备/接口网段R1G0/0192.168.10.1/24PC1192.168.10.0/24R1S0/0/010.0.0.1/30R2 S0/0/010.0.0.0/30R2S0/0/010.0.0.2/30R1 S0/0/010.0.0.0/30R2S0/0/110.0.1.1/30R3 S0/0/010.0.1.0/30R3S0/0/010.0.1.2/30R2 S0/0/110.0.1.0/30R3G0/0192.168.20.1/24PC2192.168.20.0/24注意几个细节。第一路由器之间的互联地址网段用/30掩码一个网段正好分配两个可用IP不浪费地址。第二用户侧用/24网段方便记忆和后续扩展。第三R1和R2之间与R2和R3之间的互联网段都是10.0.x.0/30这里恰恰埋了一个坑——RIP的network宣告和自动汇总行为会让10.0.0.0这个主类网络的所有子网都被卷入这一点我下一章详细讲你先记住这个规划。2.3 模拟器选型建议Packet Tracer、GNS3还是eNSP选模拟器这事很多初学者纠结半天。我的建议是如果你手里有思科IOS镜像直接用GNS3它能调用真实IOS行为和真机几乎一致还能一键抓包如果只是想把命令跑通、看看路由表效果Packet Tracer完全够用还不用折腾镜像。国内读者如果用的是华为方向用eNSP也是同样的思路华为的命令体系和思科有差异但RIP的核心逻辑完全一致。命令差异我会在下一章单独对照写避免你用华为设备时照着思科配置一脸懵。3. 核心配置实操从router rip到network逐条拆解命令逻辑3.1 基础配置启动RIP进程并选择版本配置开始前先把物理链路弄通——各接口配置好IP地址并no shutdown这个基础不做后面所有协议配置都是白搭。然后进入RIP配置R1(config)# router rip R1(config-router)# version 2 R1(config-router)# network 192.168.10.0 R1(config-router)# network 10.0.0.0 R1(config-router)# no auto-summary第一行router rip启动RIP进程第二行version 2指定使用RIPv2。为什么必须指定version 2因为思科设备默认跑的是RIPv1RIPv1不支持变长子网掩码而且用广播发送更新报文和RIPv2的组播行为不兼容。如果两台路由器一个配了v1一个配了v2它们之间根本学不到路由。每个H2下我把三台设备的配置都写上。R1配完后R2和R3做同样的操作只是network宣告的网段不同R2要宣告10.0.0.0和10.0.1.0这两个互联网段R3要宣告10.0.1.0和192.168.20.0。3.2 network命令的真实含义宣告的不是网段是接口这是RIP配置里最容易误解的地方我必须单独拿出来讲。很多人以为network 192.168.10.0的意思是告诉邻居我的这个网段存在这个理解方向对了一半——它确实会把192.168.10.0/24这条直连路由放进RIP更新里但它更核心的作用是匹配本设备上所有属于该主类网络的接口让这些接口开始发送和接收RIP更新报文。换句话说network命令其实是在说哪些接口参与RIP。在思科IOS里network后面写的是主类网络Classful Network地址。比如R1上有两个接口的IP分别是10.0.0.1/30和10.0.1.1/30虽然这个例子中R1只有10.0.0.1/30但假设它连接了R2和另一台设备它们的直连网段都属于10.0.0.0这个A类主类网络。这时只要写一条network 10.0.0.0R1上所有属于10.0.0.0/8的接口就都会被激活。这一点在排错时很关键。如果你的路由器上有多个网段但只宣告了其中一个子网思科IOS也会把整个主类网络匹配上——这可能导致你以为只宣告了一个网段实际上其他接口也在发RIP更新。想要解决这种过度宣告的问题就得在RIPv2下配合no auto-summary关闭自动汇总行为。3.3 华为eNSP下的RIP配置对照很多读者用的是华为设备命令写法差得还挺多。同样配置R1华为eNSP里的命令是[Huawei] rip [Huawei-rip-1] version 2 [Huawei-rip-1] network 192.168.10.0 [Huawei-rip-1] network 10.0.0.0 [Huawei-rip-1] undo summary对比下来会发现华为省的只是最外层的router关键字进入rip进程后结构和思科基本一致。但有个细节不同在华为设备上network宣告支持精确到子网不会像思科那样自动匹配整个主类网络。所以如果你习惯思科的配置思维在华为上配置时反而要自己把需要宣告的每个子网都写全。华为默认也会启用自动汇总undo summary对应思科的no auto-summary。配置完后用display rip检查进程状态用display ip routing-table看路由表这是和思科show ip route相对的命令。3.4 可选进阶配置被动接口与路由过滤基础实验过程中我还建议你做两件多一点的操作。第一在连接PC的G0/0接口上启用passive-interface让这个接口不发送RIP更新——PC根本不需要运行RIP何必让它收到一堆路由协议报文。第二如果你想让某些网段不被通告给特定邻居可以用distribute-list做路由过滤这比直接删network宣告更灵活。被动接口的配置很简单R1(config)# router rip R1(config-router)# passive-interface g0/0注意在RIP里被动接口不仅不发送更新也不接收更新这点和OSPF中被动接口的行为不一样别搞混了。4. 验证与排错顺着链路找到路由学不到的真正原因4.1 验证命令的正确打开方式配置完成后打开R2的终端运行show ip route应该能看到类似下面的输出10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks C 10.0.0.0/30 is directly connected, Serial0/0/0 C 10.0.1.0/30 is directly connected, Serial0/0/1 R 192.168.10.0/24 [120/1] via 10.0.0.1, 00:00:12, Serial0/0/0 R 192.168.20.0/24 [120/1] via 10.0.1.2, 00:00:18, Serial0/0/1其中R表示这条路由来自RIP[120/1]里的120是RIP的管理距离1是跳数后面跟着下一跳地址、路由最近一次更新的时间以及出接口。除了show ip route还有三个命令值得形成肌肉记忆show ip protocols查看启用的动态路由协议及其网络宣告范围show ip rip database查看RIP进程保存的、来自各邻居的路由条目debug ip rip实时查看RIP更新报文的收发细节。4.2 典型故障一两边的RIP版本不对齐做实验时我最常看到的问题就是一台设备用了RIPv2另一台忘了写version 2结果默认的RIPv1压根收不到组播报文。判断方法很简单debug ip rip看更新报文如果你看到received方向一直没有输出而sent方向正常先怀疑协议版本和更新报文类型是否对齐。RIPv1用的是广播255.255.255.255RIPv2用的是组播224.0.0.9。你可以用show ip rip database看进程状态也可以抓包看目标地址是广播还是组播。另外注意RIP的更新报文是UDP端口520如果设备之间有ACL别忘了放行UDP 520。4.3 典型故障二network宣告漏了某个网段第二种常见问题是某台设备的路由表里只有一部分路由。比如R1能学到192.168.20.0/24但R2学不到192.168.10.0/24这时候大概率是R1的network宣告里漏了192.168.10.0。排查思路很简单在R1上运行show ip protocols看Routing Information Sources下面列出的所有network宣告项。如果确实没宣告192.168.10.0把它加进去RIP更新报文会在下一个30秒周期自动带过去不需要重启进程。这里的原理是RIP每30秒广播一次完整路由表所以一旦配置修补完成链路收敛通常不超过一两分钟。4.4 用抓包看清RIP的真实交互行为如果还想深入理解RIP的口碑传播过程我强烈建议在GNS3里把PC网卡接到路由器接口用Wireshark抓UDP 520的包。你会看到R2每隔30秒向224.0.0.9发送一次更新里面带着自己直连的10.0.0.0/30和10.0.1.0/30两个网段。过一会儿R1发来的更新里就会出现192.168.20.0/24的条目且跳数显示为2——说明这条路由先由R3告诉R2R2再转告给R1。这个添油加醋的过程文字说起来复杂抓一次包看一眼就全明白了这也是RIP实验最有意思的地方。5. RIP协议的天然边界与实验延伸方向5.1 16跳限制与环路抑制机制你配置完三条路由器后可以再接入一台路由器验证RIP的致命伤——16跳不可达。RIP把16视为无穷大意味着最多只能支持15台路由器的网络规模。你可以试着搭一条串联链路从R1到远端网段逐跳累计观察路由条目什么时候从路由表里消失。这个实验会直观地告诉你为什么RIP只适合小型网络大型网络得上OSPF或IS-IS。同时RIP为了抑制环路的形成内置了几种机制水平分割从某个接口学到的路由不会再从这个接口通告回去、毒性反转把失效路由直接标记为16跳通告给邻居、触发更新拓扑变化立即发送更新不必等30秒周期以及抑制计时器。这些机制在实验里不容易直接观察到但配合debug ip rip看更新条目变化可以慢慢体会RIP是如何尽量避免环路的。5.2 RIP与OSPF的选型边界对比项RIPv2OSPF协议类型距离向量链路状态度量值跳数带宽折算的成本值最大网络规模15跳几乎无限制适合大规模网络收敛速度慢30秒周期更新快触发更新Hello机制是否支持VLSMRIPv2支持支持配置复杂度极低较高这张表做完你就明白为什么在实际网络里RIP很少出现了。但RIP在教材实验里的地位不可动摇它用最简单的形态把动态路由到底在动态什么讲得清清楚楚理解它之后再学OSPF你会觉得思路上顺畅不少。5.3 几个值得继续做的延伸实验实验做完后我建议你再折腾三个方向。第一在R2上配置ip maximum-paths 2看看RIP如何做到负载均衡第二用offset-list人为修改某个路由条目的metric观察路由表里下一跳的变化第三配置RIPv2的明文或MD5认证阻止伪造的RIP更新注入路由表。我个人实际做这套实验下来最大的体会是RIP实验的收获不在于会配几条命令而在于亲眼看到了路由信息的建立、传递、收敛和失效的完整生命周期。你配好三台路由器把终端窗口并列排开在R1上配完宣告命令的瞬间切到R2的窗口看着show ip route里叮地多出一条R开头的条目——那一刻你会真正理解路由协议存在的意义。这个亲眼所见的收获比背十遍概念都管用。
返回列表