带几个刚入行的朋友做eNSP静态路由综合实验,我发现一个很有意思的现象:很多人接口IP配完了,PC的网关也填了,但一到跨路由器Ping就开始怀疑人生。不是“请求超时”就是“无法访问目标主机”,然后代码查了半天也找不出问题。其实问题往往不在命令本身,而是在对“逐跳转发”和“回程路由”的理解上。
这篇我把自己跑静态路由综合实验的完整过程整理出来,从拓扑规划、地址划分、静态路由配置,到回程路由的坑、故障排查思路,再到默认路由、等价路由、浮动路由这些加分项,最后聊一聊静态路由的删除与管理。如果你是刚开始学网络、备考华为认证,或者需要带新人做实验,这篇可以直接照着敲,也能少走不少弯路。
1. 实验拓扑与地址规划:先把“网段地图”画清楚
1.1 为什么用三台路由器构成链形拓扑
静态路由最基础的形式是两台路由器直连,写一条静态路由就完事。但综合实验之所以叫“综合”,就是要让流量经过多个节点、多个网段,你才会真正体会到路由表的查询过程和回程路由的必要性。
我建议直接用三台路由器串联,拓扑结构是链形:R1—R2—R3,每台路由器下挂一个终端PC网段。这样做的好处有三个:
- 三台路由器之间有两段互联链路,天然形成“经过中间节点转发”的场景。
- 三台路由器各挂一个PC网段,实现全网互通时,每台设备都需要不止一条静态路由。
- 当某个方向Ping不通时,你需要在R1、R2、R3三台设备上逐台排查,这正好是真实网络排错的标准姿势。
如果你在eNSP里操作,建议选AR201或AR2200这种常见路由器型号,三台即可。用Device拖出来摆成一排,连线用Auto或Copper口都行,GigabitEthernet0/0/0和GigabitEthernet0/0/1是默认的接口资源,够用。
1.2 地址规划的核心原则:互联地址用/30
地址规划这件事,很多人不重视,随手就配,结果后面查起路由表来一团乱麻。我做实验的习惯是先把一张地址规划表写在纸上,再动手敲命令。
| 设备 | 接口 | IP地址 | 所属网段 | 用途说明 |
|---|---|---|---|---|
| PC1 | 以太网口 | 192.168.10.1/24 | 192.168.10.0/24 | R1下挂用户网段 |
| R1 | G0/0/1 | 192.168.10.254/24 | 192.168.10.0/24 | PC1网关 |
| R1 | G0/0/0 | 10.0.12.1/30 | 10.0.12.0/30 | R1与R2互联 |
| R2 | G0/0/0 | 10.0.12.2/30 | 10.0.12.0/30 | R2与R1互联 |
| R2 | G0/0/1 | 10.0.23.1/30 | 10.0.23.0/30 | R2与R3互联 |
| R2 | G0/0/2 | 192.168.20.254/24 | 192.168.20.0/24 | R2下挂用户网段 |
| PC2 | 以太网口 | 192.168.20.1/24 | 192.168.20.0/24 | R2下挂用户网段 |
| R3 | G0/0/0 | 10.0.23.2/30 | 10.0.23.0/30 | R3与R2互联 |
| R3 | G0/0/1 | 192.168.30.254/24 | 192.168.30.0/24 | R3下挂用户网段 |
| PC3 | 以太网口 | 192.168.30.1/24 | 192.168.30.0/24 | R3下挂用户网段 |
这里有两点值得展开说。
第一,设备间互联地址为什么用/30。因为点对点链路只需要两个可用IP,/30子网掩码是255.255.255.252,正好提供两个可用地址,还能减少地址浪费。很多初学者习惯给互联接口配/24,不是不行,但在综合性实验里它会引入大量无用网段,而且养成坏习惯之后,在企业网络的地址规划里容易出问题。
第二,PC网关必须指向路由器接口地址。PC1的网关是192.168.10.254,也就是R1的G0/0/1接口地址。这一步错了,后面路由配得再对也白搭。
1.3 先把接口IP和PC地址全部配完
这个阶段先不配路由,只把设备命名、接口IP、PC的IP和网关配好。以R1为例,命令如下:
<R1>system-view [R1]sysname R1 [R1]interface GigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1]ip address 192.168.10.254 255.255.255.0 [R1-GigabitEthernet0/0/1]undo shutdown [R1-GigabitEthernet0/0/1]quit [R1]interface GigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0]ip address 10.0.12.1 255.255.255.252 [R1-GigabitEthernet0/0/0]undo shutdownR2和R3同理。R2一共有三个接口:G0/0/0连R1、G0/0/1连R3、G0/0/2挂PC2网段。R3则是G0/0/0连R2、G0/0/1挂PC3网段。
在eNSP里路由器接口默认是UP的,但我还是习惯敲一句undo shutdown。真机上很多接口默认就是shutdown状态,手动打开这个动作能帮你少踩一个坑。
配完后用display ip interface brief检查一遍接口状态和IP。这时你会在每台路由器上看到“直连路由”,也就是Direct路由。比如R1上会有:
[R1]display ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 8 Routes : 8 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.0.12.0/30 Direct 0 0 D 10.0.12.1 GigabitEthernet0/0/0 10.0.12.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 10.0.12.2/32 Direct 0 0 D 10.0.12.2 GigabitEthernet0/0/0 192.168.10.0/24 Direct 0 0 D 192.168.10.254 GigabitEthernet0/0/1 192.168.10.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1注意,现在R1的路由表里只有直连网段。PC1去Ping PC2的地址192.168.20.1,R1在路由表里找不到192.168.20.0/24,包就直接丢了,返回“目标不可达”。这是正常现象,因为我们还没有配置任何静态路由。
2. 静态路由逐台配置:三条命令背后的转发逻辑
2.1 静态路由命令的完整语法与下一跳选择
静态路由的配置命令在华为VRP系统里是这样一条:
ip route-static 目标网段 目标掩码 下一跳地址 [preference 优先级]很多第一次接触的人会问:下一跳地址到底填什么?一句话解释清楚——下一跳指的是“与当前路由器直连的、对端路由器的接口IP地址”。
举个例子。R1要把数据包送给192.168.20.0/24这个网段,数据包先从R1的G0/0/0口出去,而G0/0/0接口的对端是R2的G0/0/0口,IP是10.0.12.2。所以下一跳填10.0.12.2,而不是填R2的G0/0/1地址10.0.23.1,更不是192.168.20.254。
这个选择是有硬性条件的:下一跳地址必须与当前路由器的某个接口处于同一个网段。如果下一跳不直连,路由器根本没法把包送过去。你把下一跳写成一个完全不可达的地址,这条路由虽然能配进去,但永远不会被使用。这类坑在后面排错时会非常隐蔽。
2.2 R1的配置:直达目标网段与中间节点
按照全网互通的目标,R1需要访问三个非直连网段:192.168.20.0/24、192.168.30.0/24,以及R2与R3之间的互联网段10.0.23.0/30。
但实际配置时,后两个网段的下一跳其实都是同一个地址:10.0.12.2。因为无论去20网段还是30网段,R1都必须先把包交给R2,由R2继续转发。所以R1上的配置是这样:
[R1]ip route-static 192.168.20.0 255.255.255.0 10.0.12.2 [R1]ip route-static 192.168.30.0 255.255.255.0 10.0.12.2这里有人会问:192.168.30.0/24在R3下面,R1不能直接写一条指向R2的静态路由吗?其实上面两条就已经是了。R1看到目标是30网段,把包交给10.0.12.2即R2;R2再根据自己的路由表,把包交给10.0.23.2即R3。这就是“逐跳转发”的含义——每台路由器只负责把数据包送到下一跳,它不需要也不可能知道全球的路由,只要知道“最近的路”怎么走就够了。
2.3 R2与R3的配置:中间设备要能“往回指”
R2作为中间节点,既连接R1方向的10.0.12.0/30网段和192.168.10.0/24网段,也连接R3方向的10.0.23.0/30网段和192.168.30.0/24网段,同时自己还挂着192.168.20.0/24网段。
R2上需要配置的静态路由有两条:
[R2]ip route-static 192.168.10.0 255.255.255.0 10.0.12.1 [R2]ip route-static 192.168.30.0 255.255.255.0 10.0.23.2R2去192.168.10.0/24,下一跳是10.0.12.1,也就是R1的互联接口;R2去192.168.30.0/24,下一跳是10.0.23.2,也就是R3的互联接口。
R3上需要的静态路由是去往192.168.10.0/24和192.168.20.0/24:
[R3]ip route-static 192.168.10.0 255.255.255.0 10.0.23.1 [R3]ip route-static 192.168.20.0 255.255.255.0 10.0.23.1R3的情况和R1对称:两个远端网段都只能通过R2转发,所以下一跳都是10.0.23.1。
2.4 配置完之后的验证:路由表的观察要点
三台设备配完后,用display ip routing-table分别看一看。R1上应该能看到这样几条关键路由:
Destination/Mask Proto Pre Cost Flags NextHop Interface 10.0.12.0/30 Direct 0 0 D 10.0.12.1 GigabitEthernet0/0/0 192.168.10.0/24 Direct 0 0 D 192.168.10.254 GigabitEthernet0/0/1 192.168.20.0/24 Static 60 0 D 10.0.12.2 GigabitEthernet0/0/0 192.168.30.0/24 Static 60 0 D 10.0.12.2 GigabitEthernet0/0/0注意Static路由的Pre值是60,这是华为VRP系统里静态路由的默认优先级。Direct路由的Pre是0,数值越小优先级越高。路由优先级这个概念在静态路由综合实验里会反复用到,后面讲浮动静态路由时会派上大用场。
3. 回程路由:为什么PC1到PC2的Ping总在最后一步失败
3.1 回程路由的本质:不是特殊路由类型,而是反向路径上的路由表条目
“回程路由”是很多人挂在嘴边,却经常和“静态路由”搞混的一个词。它其实不是一种独立的路由类型,而是指数据包从目的网段返回源网段时,沿途每一台路由器为了把包送回去,在路由表里需要查到的那些条目。
比如PC1 ping PC2,数据包的走向是这样的:
- PC1把包发给网关R1。
- R1查路由表,发现192.168.20.0/24的下一跳是10.0.12.2,于是把包从G0/0/0口发出,交给R2。
- R2查路由表,发现192.168.20.0/24是自己的直连网段,于是把包从G0/0/2口发出,交给PC2。
- PC2收到ICMP Echo Request后,要回复给PC1。这个回复包的目标地址是192.168.10.1,它首先到达R2。
- R2查路由表,发现192.168.10.0/24的下一跳是10.0.12.1,于是把包交给R1。
- R1查路由表,发现192.168.10.0/24是自己的直连网段,于是把包交给PC1。
注意第5步:如果R2上没有配置去往192.168.10.0/24的静态路由,那么PC2的回复包到达R2后,R2无法转发,包就死在那里了。PC1端看到的现象就是“请求超时”。
3.2 一个生活化的类比:双向导航
我经常把这个场景比作“从公司开车去客户现场”。你出发前会开导航查路线,这是“去程路由”;客户送你回公司时,客户也要知道公司的地址,他的导航也会规划一条路,这是“回程路由”。你不能因为自己导航过了,就默认客户的导航里也存着你的公司位置——别人怎么知道你的网段在哪?
回到实验里,很多人的习惯是“从PC1 ping PC2,通了;从PC1 ping PC3,不通”,就开始怀疑R3配置有问题,但其实问题往往出在回程路径的某个节点上。排查时一定要把“去的路”和“回来的路”分开看。
3.3 实测过程中最常见的“半通”现象
我在带新人做这个静态路由综合实验时,见过最多的情况是:只给R2和R3配了去往R1网段的路由,R1也配了去往所有远端网段的路由,表面看起来全网都能通,但PC2 ping PC1就是不通。原因就是R3方向的路由配了,R2方向的路由漏了,或者反过来。
更隐蔽的一种情况是下一跳写错。比如R2上写:
[R2]ip route-static 192.168.10.0 255.255.255.0 10.0.23.1这条命令把去往192.168.10.0/24的下一跳写成了10.0.23.1,也就是R2自己G0/0/1口的地址。R2收到目的为192.168.10.1的包后,查路由表命中这条静态路由,下一跳是10.0.23.1,出接口是G0/0/1——好巧不巧,这个下一跳地址就是R2自己的接口IP,相当于路由器把包送给了自己,形成一种“有趣”的无效状态。虽然不一定会立刻造成明显故障,但对于很多经验不足的人,这种路由条目在表里看起来明明存在,却总是Ping不通,非常难定位。
所以配置静态路由时,下一跳务必填对端接口IP,不是本端接口IP。这是综合实验里最容易被人忽略、也最容易出问题的点。
4. 综合实验的完整验证与故障排查链路
4.1 第一步:从接口状态开始查
无论Ping不通的现象多么“诡异”,排查第一步一定是从底层开始,而不是盯着路由表猜。我会按这个顺序来:
- 用
display interface brief检查所有参与实验的路由器接口是否UP。 - 用
display ip interface brief检查接口IP是否配置正确,和规划表是否一致。 - 用
display arp检查ARP表项是否学习正常。
eNSP里接口DOWN最常见的原因是网线没连对接口,或者两台设备连接了错误的物理端口。如果接口状态是DOWN,后面所有关于静态路由的排查都没有意义。
4.2 第二步:逐台路由器查路由表,顺着数据包走一遍
如果接口状态正常,就开始“顺着数据包走”。下面是PC1 ping PC2(192.168.20.1)的排查动作:
在R1上执行:
[R1]display ip routing-table 192.168.20.1如果结果显示下一跳是10.0.12.2、出接口是GigabitEthernet0/0/0,说明去程到R1这一段没问题。
接着在R2上执行:
[R2]display ip routing-table 192.168.20.1R2的G0/0/2口直连着192.168.20.0/24,所以这里应该命中直连路由。如果R2接口的IP配错了,比如配成了192.168.30.254,这一跳就会失败。
去程没问题再查回程。在R2上执行:
[R2]display ip routing-table 192.168.10.1这一步非常关键。如果显示没有路由,问题就在这里。补上回程路由即可:
[R2]ip route-static 192.168.10.0 255.255.255.0 10.0.12.14.3 第三步:用tracert定位故障到底发生在哪一跳
PC1上Ping不通时,先打开命令行窗口,跑一次tracert -d 192.168.20.1。tracert会逐跳显示路径上的节点IP,如果输出只显示到R1的G0/0/0接口地址10.0.12.1就断了,说明R1出去之后的下一跳有问题;如果到达R2就不再继续,说明问题出在R2或其下游。这个方法能帮你把问题快速缩小到“某一段链路”上。
我用这个词“链路段”来描述:网络本质上是由一段一段的“链路”拼起来的,你不需要一开始就通盘怀疑所有设备,而是先定位出是哪一段链路断掉,再去看对应设备的配置。
4.4 一个完整的“翻车现场”:R3漏配回程路由
为了让你更直观地感受整个排查过程,我模拟一个真实情况。
实验拓扑和刚才一样,我故意在R3上漏配去往192.168.10.0/24的静态路由,然后从PC1上Ping PC3(192.168.30.1),现象是:
- 第一次Ping全部超时。
- PC1能Ping通R3的接口地址192.168.30.254吗?这里要分开测。如果R1、R2上的路由都正确,PC1是可以Ping通192.168.30.254的,因为去的路径是PC1 → R1 → R2 → R3,R3收到ICMP请求后要回复给192.168.10.1,但R3路由表里没有192.168.10.0/24的路由,所以回复包发不出去,表现为超时。
排查过程:
- 在PC1上Ping 192.168.30.254,超时。
- 在R1上用
display ip routing-table 192.168.30.0查路由,命中静态路由,下一跳10.0.12.2,正常。 - 在R2上用
display ip routing-table 192.168.30.0查路由,命中静态路由,下一跳10.0.23.2,正常。 - 在R3上Ping 192.168.30.254(本机接口),能通,说明R3接口没问题。
- 在R3上用
display ip routing-table 192.168.10.1查路由,发现没有到达192.168.10.0/24的路由,问题定位成功。
补上这条路由后,立刻再Ping一次,通了。
4.5 Ping不通时看现象:三种结果的判断技巧
我建议你在实验里刻意制造几次故障,观察Ping的输出。不同现象能帮你快速判断问题类型:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 超时(Request timed out) | 有去程无回程,或路径中某个节点丢弃 | 重点查回程路由、ARP |
| 目标不可达(Destination Host Unreachable) | 路由器路由表中没有目标网段条目 | 查当前设备的静态路由配置 |
| 超时且中间节点全部丢失 | 链路层不通,接口DOWN | 查接口状态、网线连接 |
“超时”和“目标不可达”的区别很关键。目标不可达通常是路由器明确告诉你“我找不到路”,而超时是路由器默不作声地把包丢了,或回包根本没返回。实验里遇到超时,优先怀疑回程路由,这个判断正确率非常高。
5. 默认路由、等价路由与浮动路由:综合实验的加分项
5.1 默认路由:大网出口最省事的写法
静态路由综合实验跑通全网互通之后,再往前走一步就是默认路由。默认路由的写法是目标网段和掩码都用全零:
[R1]ip route-static 0.0.0.0 0.0.0.0 下一跳地址它表示“所有路由表里查不到目标网段的数据包,全部丢给这个下一跳”。这个场景最适合模拟上联出口。比如R1增加一个接口连接模拟ISP,网段为100.64.0.0/30,R1上配置一条默认路由指向ISP侧路由器的接口地址,那么R1下面的所有终端去访问外网时,流量都会走这条默认路由。
但默认路由不是万能药。它的风险在于:如果你在R2、R3上也配置默认路由都指向R1,那么当某个内网目标网段路由缺失时,数据包会在R1、R2、R3之间反复循环,形成路由环路。所以配置默认路由的前提是你要对全网可达性有清晰的把控,至少确保“默认路由不要形成环路”。实验里可以用display ip routing-table观察路由表,注意0.0.0.0/0这条路由的存在。
5.2 等价路由:多条链路同时干活
等价路由指的是到达同一个目的地,同时存在两条或以上“优先级相同、开销相同”的静态路由,路由器会把流量负荷分担到这几条链路上。
比如在R1和R2之间如果存在两条物理链路,一个是G0/0/0(网段10.0.12.0/30),一个是G0/0/2(网段10.0.13.0/30),那么R1上可以这样配置:
[R1]ip route-static 192.168.20.0 255.255.255.0 10.0.12.2 [R1]ip route-static 192.168.20.0 255.255.255.0 10.0.13.2华为VRP系统默认支持等价路由的负载分担,两条路由会同时出现在路由表里。用display ip routing-table查看192.168.20.0/24时,你会看到两个下一跳。这个机制在真实网络里很常见,也叫ECMP(Equal-Cost Multipath),是提升链路利用率的常用手段。
但你要明白,等价路由不是“配得越多越好”。它要求两条路径的优先级、开销完全一致,如果一条链路质量很差,负载分担反而会拖慢整体速度。实验里验证等价路由,可以先Ping大包,或者在R1上用display ip routing-table看路由表的变化。eNSP不支持查看实时流量分布,但路由表加载情况足以说明问题。
5.3 浮动静态路由:主备链路靠优先级切换
浮动静态路由这个名词听起来高级,其实原理很朴素:给备份链路配一条优先级更低(Pre数值更大)的静态路由,只有当主链路路由消失时,备份路由才会出现在路由表里。
还是拿R1和R2之间的链路举例。假设主链路是G0/0/0(10.0.12.0/30),备份链路是G0/0/2(10.0.13.0/30)。R1上这样配置:
[R1]ip route-static 192.168.20.0 255.255.255.0 10.0.12.2 [R1]ip route-static 192.168.20.0 255.255.255.0 10.0.13.2 preference 70第二条路由的优先级是70,默认静态路由优先级是60。数值越大优先级越低,所以第二条路由正常情况下不会出现在路由表里。当主链路接口DOWN掉,第一条路由消失,第二条备份路由就会自动生效。这种主备切换机制在企业出口链路、拨号备份链路里用得非常多。
做这个实验时,你可以在eNSP里把主链路接口shutdown,再用display ip routing-table看路由表的变化,这是一个非常直观的验证过程。
6. 静态路由的删除与管理:实验收尾最容易忽略的事
6.1 删除静态路由的命令与常见误区
静态路由不是一次性配置完就不管的,实验过程中经常需要删掉重配。删除命令是对称的,只要在ip route-static前面加undo:
[R1]undo ip route-static 192.168.20.0 255.255.255.0 10.0.12.2一个非常容易踩的坑是:同一目标网段配置了多条不同下一跳的静态路由后,你用undo ip route-static 192.168.20.0 255.255.255.0不带下一跳去删除,VRP系统可能会把所有下一跳的等价路由全部删掉。我建议删除时把完整的下一跳参数也带上,只删你真正想删的那条,操作更可控。
如果你想一条一条确认当前设备上有哪些静态路由,用这条命令:
[R1]display ip routing-table protocol static输出里只显示静态路由,比全量路由表更聚焦。对于三台设备有几十条路由的实验环境,这个命令是必备的。
6.2 修改静态路由的两种方式
修改静态路由一般有两种方式。
一种是先删后加,适用于目标网段、掩码、下一跳中任意一项发生变化的情况。
另一种是直接重新配置一条相同的目标网段和掩码、但不同下一跳的路由。VRP系统允许同目标网段叠加多条静态路由,如果你配置了相同优先级的多条路由,它会形成等价路由;如果优先级不同,高优先级的会生效。所以“重新配置一条”在有些情况下并不会覆盖旧路由,反而会造成多条路由并存。这也是我在前面反复强调“查路由表”的原因——你以为自己改了配置,但实际路由表里还躺着旧路由。
6.3 保存配置与导出实验配置
eNSP里的实验做完不保存,关掉模拟器就全没了。每台路由器上都要执行:
<R1>save系统会询问是否保存配置文件,输入Y确认。如果你想让三台设备的配置保持一致,可以在eNSP里右键路由器,选择“Export Device Configuration”导出配置文件,方便复盘和存档。
静态路由综合实验里养成保存配置的习惯,跟你写代码养成git提交的习惯是一回事——它真正的意义不是在实验成功时保存,而是在你实验改乱、需要回退到某个状态时,你还能找到那份配置快照。
6.4 最后的检查清单
实验收尾前,我一般会拿这个清单快速过一遍:
- 三台路由器
display ip routing-table中的静态路由是否和规划一致。 - PC1、PC2、PC3两两Ping是否全部通过。
- 所有路由器都执行过
save。 - 删除了多余的验证性配置,比如临时加的默认路由、浮动路由,确保最终配置和实验报告一致。
这个清单看起来简单,但能帮你少交不少“缺胳膊少腿”的实验报告。
我自己的体会是,静态路由综合实验真正练的不是那几条命令,而是“逐跳转发”的思维方式。命令记不住可以查帮助,但如果你对“数据包从源到目的,沿途每台路由器各自查一次路由表、各自做一次转发”这个过程没有建立画面感,遇到排错就很容易像无头苍蝇一样乱试。
最后再分享一个我做实验时的小技巧:先别急着配路由,把三台路由器的接口IP配完,PC的IP和网关配完,然后在PC上分别Ping各路由器的所有接口地址,确认每一段直连链路都通。这个“先把骨架打直”的过程能帮你把物理层、链路层、直连路由的问题一次性清洗干净,后面配静态路由时几乎不会遇到莫名其妙的玄学故障。