
前几天帮人搭了个模拟环境需求很直白在一个小型局域网里把4个子网全部打通让任意一台电脑都能访问另外3个子网里的主机。我直接打开思科模拟器Packet Tracer没走静态路由也没上OSPF而是选了RIPV2把整张网撑起来。这篇文章把从拓扑设计、IP地址划分、路由协议配置到最后的验证排错完整记录一遍适合刚学网络不久、想在模拟器里练手或者正在准备实验考试的同学参考。1. 为什么4个子网的小项目要用RIPV2静态路由与RIPV1各有各的别扭很多人拿到需求后的第一反应是4个子网路由器最多三四台一条条配静态路由不就行了确实能通但你会很快发现后续每加一个网段、每改一次链路地址都要去核心路由器上补一条静态路由一旦漏掉一条全网就断一块。对练手项目来说静态路由的优点是直观缺点是维护成本高特别当你把子网数量从4个变成8个、12个的时候那简直是一场灾难。那为什么不用OSPFOSPF当然是好东西能感知链路状态、收敛快还支持区域划分。但对于一个跳数不超过2、设备不超过5台的小型网络OSPF的配置量和理解成本都偏高。你光是要理解DR/BDR选举、区域ID、链路类型可能就要花掉半个下午。RIPV2在这个规模下是性价比最高的选择配置命令少排错思路清晰而且它支持VLSM正好应对我们这种使用不等长子网掩码既有/24又有/30的场景。很多人会问RIPV1呢RIPV1是真正的有类路由协议发送路由更新的时候不携带子网掩码所以它根本无法区分192.168.1.0/24和192.168.1.0/25这些子网。在我们的网络里LAN段用了/24点对点互联段用了/30RIPV1一上路就会出大问题——它会把子网自动汇总成主类网络比如把所有192.168.x.x统一成192.168.0.0/16路由就彻底乱了。RIPV2解决了这个致命短板。RIPV2和RIPV1的核心区别我做了个对比对比项RIPV1RIPV2路由更新是否携带子网掩码不携带只认主类网络携带支持VLSM/CIDR更新发送方式广播 255.255.255.255组播 224.0.0.9是否支持认证不支持支持明文/MD5认证是否支持路由标记不支持支持是否自动汇总强制开启默认开启但可关闭所以最后的结论是在这种需要VLSM的4子网小型局域网里RIPV2既能玩懂动态路由的基本原理又不会被协议复杂度拖住。模拟器里练这一套性价比非常高。2. 拓扑设计核心路由器加3台边缘路由器一个星型结构说清楚我习惯把这类实验的拓扑设计成一个星型结构一台核心路由器负责整个网络的“大脑”下面挂3台边缘路由器每台边缘路由器再接一台交换机、一台PC。核心路由器自己再带一个子网这样就凑出了4个独立子网。具体设备角色对应如下R0核心路由器连接R1、R2、R3同时下挂LAN4R1边缘路由器下挂LAN1R2边缘路由器下挂LAN2R3边缘路由器下挂LAN3每台下级路由器分别接一台二层交换机2960和一台PC为什么选星型而不是环型或者链型三个理由第一星型结构层次清晰访问关系一目了然。任何两个非直连子网之间通信都经过核心路由器排查的时候你只需要盯住R0的转发表就可以判断大部分问题。第二故障隔离好。如果R1到R0之间的链路断了只会影响LAN1LAN2、LAN3、LAN4之间照常通信。如果是链型结构就麻烦中间路由器一挂后面整条支路全断。第三扩展方便。以后加LAN5再买一台路由器挂到R0上就行R0新加一个互联网段边缘路由器配好RIP即可。有同学可能会问模拟器里到底用哪台路由器我自己习惯用Packet Tracer 8.2自带的Router-PT接口数量够多R0需要4个千兆口普通1941只有两个还得扩展模块麻烦。如果你追求真实设备操作感可以把R0换用ISR4321它自带3个GE口再加上交换模块也能实现。这里我不纠结具体型号关键是接口名称你要在配置前先看仔细。在Packet Tracer里拉线的时候有个小细节路由器和路由器之间用交叉线路由器和交换机、交换机和PC之间用直通线。新版本模拟器对线缆类型偶尔会自适应但养成选对线缆类型的习惯以后面对真实设备不会犯低级错误。3. 地址规划才是最花时间的地方4个子网加3条互联链路一张表搞定很多新手上来就急着敲命令结果配到一半发现IP地址自己都记混了哪个接口是哪个网段网关是谁完全对不上。我在动手前会先把整张IP地址表列出来这也算是我做了这么多年实验的一个经验配路由协议之前永远先配好一张地址规划表。这次实验的地址规划是这样的网段用途网关/接口地址掩码说明192.168.1.0/24LAN1192.168.1.1R1 G0/0255.255.255.0R1下挂PC0192.168.2.0/24LAN2192.168.2.1R2 G0/0255.255.255.0R2下挂PC1192.168.3.0/24LAN3192.168.3.1R3 G0/0255.255.255.0R3下挂PC2192.168.4.0/24LAN4192.168.4.1R0 G0/0255.255.255.0R0下挂PC310.0.12.0/30R0到R1链路R0 G0/1: 10.0.12.1R1 G0/1: 10.0.12.2255.255.255.252点对点互联10.0.13.0/30R0到R2链路R0 G0/2: 10.0.13.1R2 G0/1: 10.0.13.2255.255.255.252点对点互联10.0.14.0/30R0到R3链路R0 G0/3: 10.0.14.1R3 G0/1: 10.0.14.2255.255.255.252点对点互联为什么要分两种掩码LAN段用/24原因是每个局域网可能需要挂两百多台主机网关占1个广播占1个剩下254个可用IP够用。同时/24的子网边界很好辨认排错时看一眼IP就能判断属于哪个网段。路由器之间的互联链路用/30这是很多正式项目中都在用的做法。一个点对点以太网链路只需要2个可用IP一个给本端一个给对端。/30子网掩码是255.255.255.252网络地址和广播地址各占去1个剩下刚好2个可用地址一点不浪费。比如10.0.12.0/30就只允许10.0.12.1和10.0.12.2这两个地址正好分给R0和R1。这种地址分配方式我称之为“既规整又省地址”。如果在模拟器里不去考虑地址浪费全用/24也行但对于真实网络规划来说这种习惯越早养成越好。私网地址段嘛192.168.0.0/16和10.0.0.0/8都是随便用的关键是要有规律。我这套规律里所有用户子网统一在192.168.1.0/24到192.168.4.0/24所有互联子网统一在10.0.0.0/8里按链路编号分/30看到数字就知道哪条链路。PC的IP地址分配如下PC0192.168.1.2 / 255.255.255.0网关 192.168.1.1PC1192.168.2.2 / 255.255.255.0网关 192.168.2.1PC2192.168.3.2 / 255.255.255.0网关 192.168.3.1PC3192.168.4.2 / 255.255.255.0网关 192.168.4.1PC的网关一定要填对否则同子网能通跨子网必断。因为PC根本没有路由表它所有去往其他网段的流量都会无条件丢给默认网关由路由器来转发。4. 一步步在思科模拟器里完成RIPV2配置命令不多但顺序不能错配置过程分两大块先把接口IP和PC地址全部配好然后统一启动RIPV2。我强烈建议不要先配RIP再配接口IP否则RIP宣告的网段接口都还没up路由进程起来也是一堆空宣告。4.1 路由器接口IP配置先说R0。进入全局配置模式以后依次配置4个接口的IP地址。Router enable Router# configure terminal Router(config)# hostname R0 R0(config)# interface g0/0 R0(config-if)# ip address 192.168.4.1 255.255.255.0 R0(config-if)# no shutdown R0(config-if)# description LAN4 R0(config-if)# exit R0(config)# interface g0/1 R0(config-if)# ip address 10.0.12.1 255.255.255.252 R0(config-if)# no shutdown R0(config-if)# description Link-to-R1 R0(config-if)# exit R0(config)# interface g0/2 R0(config-if)# ip address 10.0.13.1 255.255.255.252 R0(config-if)# no shutdown R0(config-if)# description Link-to-R2 R0(config-if)# exit R0(config)# interface g0/3 R0(config-if)# ip address 10.0.14.1 255.255.255.252 R0(config-if)# no shutdown R0(config-if)# description Link-to-R3 R0(config-if)# exit这里有三点必须说明第一不要漏掉no shutdown。思科路由器接口默认是administratively down你不手动开启IP配得再对也白搭。很多新手实验“死活ping不通”就是栽在这上面。第二description命令不是必配项但我建议每个人都敲一行。接口多了以后你show running-config时能直接看到哪个接口连的是谁省去翻笔记的时间。第三模拟器里的接口编号一定要以设备实际显示为准。Router-PT默认接口比较多但如果你用2911、1941这类设备接口编号可能是g0/0、g0/1不够的情况下还需要加模块。配置前先show ip interface brief确认一下比我这里写的更可靠。接着配R1。R1的G0/0接LAN1G0/1接R0。R1(config)# interface g0/0 R1(config-if)# ip address 192.168.1.1 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# interface g0/1 R1(config-if)# ip address 10.0.12.2 255.255.255.252 R1(config-if)# no shutdown R1(config-if)# exitR2、R3的配置和R1几乎一模一样只是IP换成对应的子网和链路地址R2 G0/0192.168.2.1 /24R2 G0/110.0.13.2 /30R3 G0/0192.168.3.1 /24R3 G0/110.0.14.2 /30交换机不需要任何配置默认状态就能跑只需要把PC和路由器的线插上。PC侧打开桌面或配置页填入对应的IPv4地址、子网掩码和默认网关即可。4.2 启用RIPV2路由协议接口IP全部配完后开始配置RIP。我以R0为例R0(config)# router rip R0(config-router)# version 2 R0(config-router)# no auto-summary R0(config-router)# network 192.168.4.0 R0(config-router)# network 10.0.0.0 R0(config-router)# exit逐行解释一下里面的关键点。version 2指定运行RIPv2这个必须显式配。默认状态下思科路由器的RIP进程可以接收RIPv1和RIPv2的更新但发送时用的是RIPv1所以你不打这条命令RIPV1的特性就会残留VLSM支持就无从谈起。no auto-summary是整条配置里我最强调的一句。RIPv2虽然已经支持无类路由但IOS默认仍然会执行主类网络自动汇总。如果你的192.168.1.0/24、192.168.2.0/24被自动汇总成192.168.0.0/16那么路由表中就缺失了具体子网信息数据包很容易发到错误的方向。所以配完version 2之后第一件事就是no auto-summary没有例外。network命令要特别注意它后面的参数不是随意填子网地址就行。在标准IOS的RIP配置里network命令接受的是主类网络号。对我R0来说192.168.4.0属于C类主类网络边界直接写192.168.4.0没问题。而10.0.12.0、10.0.13.0、10.0.14.0这三个互联网段都属于A类网络10.0.0.0的主类范围内所以只需要写一条network 10.0.0.0R0上所有10.0.x.x接口就都会启用RIP和这三个网段相关的路由都会被参与通告。再强调一遍如果你试图写network 10.0.12.0老版本IOS会直接报错因为RIP不认识这种有类网络边界以外的子网写法。这一点很多人第一次都搞不明白我也是当年被报错教育过的。R1、R2、R3的RIP配置模式完全一致R1(config)# router rip R1(config-router)# version 2 R1(config-router)# no auto-summary R1(config-router)# network 192.168.1.0 R1(config-router)# network 10.0.0.0 R1(config-router)# exitR2把network 192.168.1.0换成network 192.168.2.0R3换成network 192.168.3.0其余不变。这样每台边缘路由器都把自己的LAN网段和互联链路的10.0.0.0网段宣告进RIP进程全网路由信息就能通过R0汇集、互相交换。5. 验证与排错ping不通时我习惯从底层往上层一层层查配置写完了不代表网络就是通的。RIP是距离矢量协议更新周期默认30秒收敛需要一点时间。配置完成后先每台路由器上敲show ip route看看路由表里有没有出现R开头的条目。以R1为例正常情况下会出现类似下面这样的输出R 192.168.2.0/24 [120/2] via 10.0.12.1, 00:00:18, GigabitEthernet0/1 R 192.168.3.0/24 [120/2] via 10.0.12.1, 00:00:18, GigabitEthernet0/1 R 192.168.4.0/24 [120/1] via 10.0.12.1, 00:00:18, GigabitEthernet0/1 C 192.168.1.0/24 is directly connected, GigabitEthernet0/0 C 10.0.12.0/30 is directly connected, GigabitEthernet0/1这里[120/2]的意思是管理距离120路由跳数为2。R1到192.168.2.0/24要经过R0再转到R2所以跳数是2。到192.168.4.0/24只经过R0一跳所以跳数是1。验证网络连通性的时候我习惯按下面的顺序来做每步都能缩小问题范围先用PC ping自己的网关。如果这一步都不通基本是PC网段、接口IP或no shutdown的问题跟RIP一点关系都没有。再在PC上ping对端PC的IP。如果能通说明RIP协议配置正确。如果跨网段ping不通去双方网关路由器上看show ip route确认路由表里有没有对端网段。如果路由表里没有R条目就用show ip protocols检查RIP进程状态。show ip protocols是排错利器它会列出当前路由器运行的动态路由协议、是否关闭自动汇总、宣告了哪些网络、从哪些邻居学到了路由。看到下面这段就说明RIPv2生效了Routing Protocol is RIP Sending updates every 30 seconds with /-50%, next due in 16 seconds Invalid after 180 seconds, hold down 180, flushed after 240 Outgoing update filter list for all interfaces is not set Redistributing: RIP Distance: (default is 120) Routing for Networks: 10.0.0.0 192.168.1.0 Routing Information Sources: Gateway Distance Last Update 10.0.12.1 120 00:00:20如果看到“Routing Protocol is RIPv1”说明version 2没生效或者没保存配置。如果“Automatic network summarization”后面是“in effect”就说明auto-summary的残留还在路由表一定不会精确。我这次实验中途故意踩过一个坑配完R0、R1、R2、R3四台路由器后PC0去ping PC2一直是“Request timed out”。逐台排查后发现R3的RIP进程里我只宣告了192.168.3.0忘了宣告10.0.0.0导致R0虽然知道LAN3但不知道去往R3的链路该怎么走。补上network 10.0.0.0之后大约10秒内路由表就更新了ping立刻通了。这类问题的排查链路我建议记住一个口诀先看接口再看链路最后看协议。接口没up物理线缆类型错、no shutdown漏掉、IP掩码配错链路能ping通但对端路由表还是缺条目RIP宣告不全、版本不一致、auto-summary没关协议看起来一切正常但PC还是不通检查PC默认网关还有一个常见坑是RIP版本不匹配。RIPv1用广播发更新RIPv2用组播发更新两者互不兼容。如果你一台路由器配了version 2另一台忘了写version 2它们之间收不到路由更新。检查办法还是看show ip protocols看看两边是不是都显示RIPv2。另外RIP收敛不是瞬时的。刚配完命令最好等二三十秒再查看路由表。如果等不及可以执行clear ip route *强制刷新或者用debug ip rip观察更新过程。模拟器里debug也能用但生产环境慎用debug很消耗资源。6. 从能通到好用RIPV2配置里的几个细节越早注意越好网络通了只完成了一半。在模拟器里练RIPV2我觉得还有几个“规范级”细节值得顺手做掉它们不会改变本质但能让你更像一个正经的网络工程师而不是只会抄配置的初学者。第一个是被动接口。RIP默认会向所有参与RIP的接口周期性发送路由更新。像R1的G0/0这种接PC的LAN口根本没有其他路由器路由更新发出去就是纯粹的广播/组播流量纯属浪费。这种情况下可以在该接口配置被动模式R1(config)# router rip R1(config-router)# passive-interface g0/0互联口G0/1绝对不能设成passive否则R1收不到R0的更新也发不出自己的更新。如果你嫌一条条接口太麻烦也可以先passive-interface default把所有接口设成被动再no passive-interface g0/1只放行互联口。个人经验是小网络里直接指定被动接口更直观不容易出错。第二个是接口描述。这个我在配置部分已经提到这里再强调一次。别小看一行description等到哪天你有4台路由器、7个接口每条配置都要show running-config去翻的时候你就知道带描述的接口有多省时间。第三个是认清RIP的管理距离。RIP的管理距离是120直连路由是0静态路由是1。也就是说如果同一个目的地同时存在静态路由和RIP路由路由器会优先选择静态路由。这本来是好事但也意味着如果你手工加了一条错误的静态路由RIP学来的正确路由也会被忽略。遇到“明明RIP路由表里有条目却还是走错方向”时别忘了查一下静态路由是不是在捣乱。第四个是关于RIP计时器。默认30秒更新、180秒失效、180秒抑制、240秒刷新。对一个小型网络来说这些默认值完全够用我不建议为了追求“收敛快”去修改。有人会把更新间隔调到5秒甚至1秒结果在一个稍微复杂的拓扑里造成路由频繁翻转反而得不偿失。动态路由追求的是稳定不是数字好看。第五个是学会看路由条目里的成本值。RIP以跳数作为度量最大15跳16跳不可达。我们的星型拓扑里任何两个边缘子网之间的跳数都是2不会触碰到上限。但你要清楚以后如果网络扩大、路由器串联超过15跳RIP就不适用了那时候应该切换到OSPF或企业级路由协议。最后再分享一个我在实际模拟实验中反复验证过的小技巧配置全部完成后先把每台路由器的show running-config导出来或截图保存再在Packet Tracer里把工程文件另存为.pkt。别小看这个习惯后面如果改网络、交作业、重新复盘有存档比重新拉拓扑高效太多了。我见过太多人辛辛苦苦配完一遍不小心关掉模拟器又得从头拉线那是真的血亏。