有一段时间没写网络实验类的内容了,这次把静态路由单独拎出来做一个完整的综合实验。起因是最近好几个读者问我同一个问题:静态路由到底怎么配才能算"会了",为什么照着书上的命令敲完,ping还是不通。我琢磨了一下,与其零散回复,不如直接整理一篇带完整拓扑的实验记录,从设计思路到排错细节一次讲透。
静态路由这个知识点,看起来只是ip route-static一条命令的事,但它牵扯到的核心问题其实不少:路由表怎么读懂、下一跳怎么选、回程路由为什么必须配、等价路由和浮动路由的区别在哪。如果只是机械地敲命令,实验做完照样一脸懵。这篇我用华为eNSP模拟器,搭一个三路由器互联的三角形拓扑,把静态路由从配置到验证的完整流程走一遍,再单独聊聊那些最容易让新手翻车的坑。最近在做计算机网络实验、准备期末或者刚接触数通设备的读者,可以直接照着操作。
1. 实验拓扑与IP规划:为什么选三路由器三角形
做实验第一步不是开模拟器,而是先想清楚拓扑和IP规划。这次我选的是三台路由器互联成三角形,也就是R1、R2、R3两两都有链路,PC1挂在R1下面,PC2挂在R3下面。这个拓扑看起来比直线型(R1-R2-R3串联)多花了一台设备和两条链路,但信息量完全不同,原因有两个。
第一,三角形拓扑存在等价路径。PC1访问PC2,既可以从R1出发经过R2再到R3,也可以从R1直接到R3。这就逼着你必须考虑路由选路的问题,而不是直线拓扑那样"只有一条路,配完就完事"。第二,三角形拓扑能清楚展示路由条目的方向性——R1去PC2所在网段和R1去R2互联网段完全是两回事,配置时容易搞混,而搞混的代价通常是回包路径出问题。
IP规划我用了最常见的私网地址段,业务网段和互联网段分开分配,这样排错时一眼就能看出路由条目指向的是业务还是链路。具体如下:
| 设备/接口 | IP地址 | 所属网段 |
|---|---|---|
| R1-G0/0/0 | 192.168.10.1/24 | 192.168.10.0/24(PC1所在) |
| R1-G0/0/1 | 10.0.12.1/24 | 10.0.12.0/24(R1-R2互联) |
| R1-G0/0/2 | 10.0.13.1/24 | 10.0.13.0/24(R1-R3互联) |
| R2-G0/0/0 | 10.0.12.2/24 | 同上 |
| R2-G0/0/1 | 10.0.23.2/24 | 10.0.23.0/24(R2-R3互联) |
| R3-G0/0/0 | 10.0.13.3/24 | 同上 |
| R3-G0/0/1 | 10.0.23.3/24 | 同上 |
| R3-G0/0/2 | 192.168.20.1/24 | 192.168.20.0/24(PC2所在) |
| PC1 | 192.168.10.10/24,网关192.168.10.1 | 同上 |
| PC2 | 192.168.20.10/24,网关192.168.20.1 | 同上 |
这里有个规划细节值得多说一句:互联地址我刻意用了10.0.x.y这种明显区别于业务网段的地址,而且每段都是24位掩码。这样做的目的不是为了好看,是为了看路由表的时候能快速区分"这是直连链路"还是"这是业务网段"。如果你全部挤在一个大网段里,路由表看起来全是似曾相识的条目,排错时头大。
PC的配置不用多说,IP和网关按表填就行。路由器接口的IP也别漏了,很多人配了半天静态路由,结果路由器的接口地址根本没配,直连路由都没有,后面全是空中楼阁。
2. 核心配置:静态路由的语法、方向与路由黑洞的产生逻辑
在eNSP里配置静态路由的命令是ip route-static,基本语法是ip route-static 目标网段 掩码 下一跳地址。语法不复杂,复杂的是怎么确定目标网段和下一跳。
先说一个最经典的错误。很多新手配置时只想着让PC1能到PC2,然后随手写一条ip route-static 192.168.20.0 255.255.255.0 192.168.10.2。这是完全错误的,因为R1的192.168.10.1直连接口根本不可能知道192.168.10.2是谁,下一跳地址必须是自己某个直连接口对端的地址,也就是必须通过直连链路能到达的地址。
正确的思考方式是:站在当前路由器的角度,问自己两个问题。第一,目标网段在哪边,是不是我直连的;第二,去那个网段,我应该把包交给直连链路对端的哪个IP。以R1为例,PC2所在网段192.168.20.0/24不是R1直连,但R1可以去往它的路径有两条:走R2(下一跳10.0.12.2),或者走R3(下一跳10.0.13.3)。这两条路都能到,于是就有了等价路由的问题。
配置的时候我建议按"先业务网段,后互联网段"的思路来。先说R1上需要配的业务路由,目标网段192.168.20.0/24,下一跳10.0.12.2,这对应走R2转发的路径:
[R1] ip route-static 192.168.20.0 255.255.255.0 10.0.12.2为了体现等价路由和选路,我再补一条走R3直连的路径:
[R1] ip route-static 192.168.20.0 255.255.255.0 10.0.13.3这两条条目同时存在,R1去192.168.20.0/24就有两条等价的静态路由。华为设备默认支持等价路由的负载分担,也就是去往同一个目的地,流量可以在两条链路上分担。在实验里后面我会专门做一件事:打破等价,观察路径切换,这才是理解路由选路的关键操作。
R2在三角形里是"中间商",它不直接连PC,但R1那边有192.168.10.0/24,R3那边有192.168.20.0/24。所以R2需要两条静态路由:一条去192.168.10.0/24,下一跳10.0.12.1,也就是发给R1;一条去192.168.20.0/24,下一跳10.0.23.3,也就是发给R3:
[R2] ip route-static 192.168.10.0 255.255.255.0 10.0.12.1 [R2] ip route-static 192.168.20.0 255.255.255.0 10.0.23.3R3作为另一侧的"出口",需要配置去PC1所在网段192.168.10.0/24的路由。这里同样存在两条路径,一条走R2方向(下一跳10.0.23.2),一条走R1直连方向(下一跳10.0.13.1)。先用一条把链路打通,验证完再补另一条来做选路实验:
[R3] ip route-static 192.168.10.0 255.255.255.0 10.0.23.2R3再补一条走R1直连的等价路由备用:
[R3] ip route-static 192.168.10.0 255.255.255.0 10.0.13.1配置完这些之后,路由器上并不会自动出现"回程路由"这个名词对应的独立条目。静态路由是单向的,去程和回程是两条独立配置的路由,各管各的。PC1发一个包到PC2,这个包经过的每一台路由器都要有"去往192.168.20.0/24"的路由;PC2回复的包,经过的每一台路由器又都要有"去往192.168.10.0/24"的路由。漏配任何一条回程路由,表现就是"能发出请求但收不到回复"。
回程路由的这个"坑"是静态路由实验里最经典的翻车点。很多人配完R1去R3的路由,PC1能ping通R3的接口IP了,但ping不通PC2,然后就开始怀疑是PC2的网关没配对。其实问题往往出在R3或者R2上缺少回程路由。所以配置的时候,脑子里要始终有"来一条,回一条"的对称意识。
另一个需要注意的问题是路由黑洞。在三角形拓扑里,如果R1有去192.168.20.0/24的静态路由指向R2,R2又有去192.168.20.0/24的静态路由指向R3,但R3没有去192.168.20.0/24的路由(因为R3自己直连这个网段,不需要静态路由),这不算黑洞。真正的黑洞是:R1有一条去某个不存在的网段的路由指向R2,R2又有一条同样的路由指向R1,两个设备互相把包甩给对方,包就在环路里一直转,直到TTL耗尽。静态路由虽然简单,但配置时要保证目标网段真实存在,或者用空接口路由来吸收黑洞流量,这个在后续的实验里可以单独展开。
3. 连通性验证与路径分析:ping通只是及格,看懂路径才是优秀
配置完成后,第一件事是验证直连链路本身是否正常,然后再验证跨网段通信。验证工具就三样:ping、display ip routing-table、tracert。很多人只会用ping,但在这个实验里,ping通和ping不通都只是结果,真正有价值的是通过路由表解释这个结果。
先在PC1上ping PC2,预期结果是通的:
PC> ping 192.168.20.10如果通了,先别急着高兴,接下来做一个必做的动作:看R1的路由表,确认去192.168.20.0/24的条目确实存在,并且下一跳符合预期。
[R1] display ip routing-table这时候你会在路由表里看到类似这样的关键信息:
Destination/Mask Proto Pre Cost Flags NextHop Interface 192.168.20.0/24 Static 60 0 D 10.0.12.2 GigabitEthernet0/0/1 192.168.20.0/24 Static 60 0 D 10.0.13.3 GigabitEthernet0/0/2这两条就是前面配置的等价路由。注意看Proto那列是Static,Pre是60,这就是静态路由的默认优先级。在华为设备上,静态路由的默认优先级是60,数字越小越优先。如果我把某一条的优先级改成80,它就变成了浮动路由,也就是备用路由,平时不出现在优选路径里,主路由失效时才会顶上。
再看一下R2的路由表,同样能发现去往两个业务网段的路由,分别指向R1和R3。这里要留意的是:R2的路由表里不应该出现非直连的、你不知道来源的条目。如果发现多出一条原本没配置的路由,多半是模拟器里之前的配置残留,可以好好检查一下。
验证的第二件事是tracert。在PC1上执行:
PC> tracert 192.168.20.10如果配置的是两条等价路由,tracert的结果会显示从R1出发后,第一跳可能走10.0.12.2,也可能走10.0.13.3,这就是等价路由负载分担的直接表现。我在实验里跑了几次,发现在eNSP里tracert的结果偶尔会来回变,这是正常的,因为等价路由逐包或逐流负载分担,路径会在两条之间切换。
如果ping不通,排查顺序建议如下。第一步,PC1先ping自己的网关192.168.10.1,不通就是PC的IP配置或二层链路问题;第二步,在R1上ping自己的直连对端地址10.0.12.2,不通就是直连链路的问题;第三步,在R1上ping 192.168.20.1(R3的接口IP),这一步能直接测出R1到R3的转发路径是否可用,如果这步通了但ping PC2不通,问题就在R3的PC2这一段。把每一步的结果记录下来,就能定位到断点在哪一跳,而不是站在PC1面前干瞪眼。
我在实际指导别人做实验时发现,很多人的排查方法是"跳来跳去",一会儿看PC的IP,一会儿看路由器的路由表,一会儿又去ping一个不相干的地址。标准做法是沿着数据包的路径逐跳排查,每到一个节点先确认这个节点有没有去往目标网段的路由,路由的下一跳是不是自己能直连的。这样最多排查三台路由器就能找到问题。
4. 全网路由互通后的重点排查:回程路由缺失、等价与浮动路由的实战价值
很多教材写到连通性验证就结束了,但我觉得静态路由实验真正的价值在能回答以下三个问题:回程路由缺失是什么表现、等价路由怎么打破、浮动路由怎么实现主备切换。这一节我把这三个问题拆开讲。
4.1 回程路由缺失的排查链路
假设现在只在R1上配了去往192.168.20.0/24的路由(下一跳10.0.12.2),但R2没有配去往192.168.10.0/24的路由。现象是什么?PC1 ping PC2,大概率是"请求超时"。你可能会想:PC1的请求已经到达R2了,R2只要转发给R3不就行了吗?问题是PC2收到请求后要回复,回复的包到R3后,R3要把它转发给R1,但R3查路由表发现没有去192.168.10.0/24的路由,于是丢弃。PC1始终等不到应答,于是显示超时。
这里有个细节:"请求超时"和"无法访问目标主机"的含义完全不同。请求超时说明确实有包发出去,也到达了某个地方,但回应没回来;无法访问目标主机则说明在本地路由器就查不到去往目标的路由,直接丢弃了。这两者混为一谈,排查方向就会跑偏。我在模拟器里把R3的回程路由删掉后,PC1 ping PC2显示的是请求超时,因为请求实际上到达了PC2,只是回包丢了,所以PC1一直在等待。
排查回程路由缺失,最直接的方法就是在中间路由器上执行display ip routing-table,逐一确认每一台有没有去往对端业务网段的路由。漏配在哪一台,问题就出在哪一台。
4.2 打破等价路由,看路径切换的真实过程
等价路由负载分担虽然能让流量分布到两条链路上,但有时候我们需要让流量只走某一条,另一条作为备份。这就是浮动静态路由的应用场景。在华为设备上,浮动静态路由通过调整preference值来实现。
我在R1上先把走R3那条等价路由改成preference 80,这样它就不再和默认priority 60的路径等权了。命令如下:
[R1] ip route-static 192.168.20.0 255.255.255.0 10.0.13.3 preference 80注意,原本那条下一跳10.0.13.3的静态路由要先删掉,或者直接在原命令上追加preference参数也行,看你的配置习惯。我习惯先确认路由表里没有冲突条目,再单独配置。配完之后再执行:
[R1] display ip routing-table这个时候你会发现,192.168.20.0/24的路由只剩一条优选路由了,下一跳是10.0.12.2(优先级60),而10.0.13.3那条因为优先级80,数值更大,所以没有被选入活跃路由表。但它仍然存在,只是处于"备胎"状态。等到主用路径的下一跳10.0.12.2不可达时,这条备用路由才会被激活。这个机制,就是浮动路由的实战价值所在——主链路故障时自动切换到备份链路上。
要直观验证这个机制,可以在R1上把连接R2的接口shutdown掉:
[R1] interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1] shutdown再查看路由表,你会看到192.168.20.0/24的活跃下一跳变成了10.0.13.3。这就是"主路由失效,浮动路由顶上"的完整过程。这个实验场景在现实网络里的对应就是双链路出口备份,非常实用。
4.3 静态路由配置中的黑洞与防环直觉
前面提过黑洞和环路,这里展开说一下。静态路由不会自动消失,即使你对端链路已经断了,只要下一跳地址还能解析(比如是直连接口地址),这条路由就会一直在路由表里。如果你把去往一个不存在网段的路由指向某台路由器,而那台路由器又有一条默认路由指回来,就会形成环路。
在模拟器里验证环路危害,可以在R1上临时加一条去往192.168.99.0/24的静态路由,下一跳指到R2;在R2上加一条去往192.168.99.0/24的静态路由,下一跳指回R1。然后在PC1上ping 192.168.99.10,你会发现结果是持续超时,而路由器的CPU占用可能明显上升。这就是路由环路的典型表现。
现实环境中防止环路的方法是配置黑洞路由(null0),把去往某些不存在的网段的流量引向空接口丢弃,同时配合静态路由的优先级和过滤策略。这个实验里不展开太多,但理解"静态路由是死的,链路断了它还在"这点很重要,它决定了你为什么需要动态路由协议来兜底。
5. 实验报告怎么写才能拿高分
如果你是学生党做这个实验,最后肯定要交实验报告。这部分我按经验给你指几个得分点。
写实验报告不要只贴命令和ping截图,要体现出分析和验证。比如R1的路由表里为什么有两条去192.168.20.0/24的等价路由,它们的Pre值相同意味着什么?把等价路由改成浮动路由后,为什么R1上显示的是10.0.12.2而不是10.0.13.3?这些分析才是实验报告的核心价值。
报告里还有一个很容易加分的地方:画一张"数据流走向表",从PC1发出ICMP请求到PC2回应,把每一跳经过的设备、入接口、出接口、使用的路由条目都写清楚。我在自己的实验报告里画了一张这样的表,老师直接给了A。这张表能体现你是否真正理解了静态路由是逐跳转发的,而不是简单理解成"设个网关就完事"。
另外,实验里一定要多做一步"故障模拟"。比如把R1-R2之间的链路shutdown,观察路由表和ping的结果变化。这个场景在报告里写成"主备路径切换测试",得分点直接拉满。别只做"配置成功,ping通,收工",那和没做没什么区别。我在实验室里见过太多同学ping通了就关模拟器,问他们"如果R1-R2断了流量怎么走",答不上来。静态路由实验真正要锻炼的,就是这种对故障场景的预判和分析能力。
这篇实验记录我尽量把实际操作中的细节都覆盖到了。如果照着做完还有卡壳的地方,先别急着怀疑模拟器有问题,优先查接口状态和路由表,90%的问题都出在这两张表上。静态路由本身不难,难的是养成逐跳分析的习惯,这个习惯一旦建立,后面学动态路由协议会轻松很多。