那天晚上我在 Packet Tracer 里搭了个小实验:五台设备串起来,PC0 接 R0,R0 接 R1,R1 接 R3,R3 接 PC1。两端我把静态路由都配上了,中间那台故意不配,打算看包是不是走到中间就断。
三台路由器 show ip route 查完,该有的静态路由都在,接口全 up,PC 的 IP 和网关也都对。我从 PC0 ping PC1------不通。反过来也不通。
那一刻最难受的不是"不通",是我不知道该怀疑谁。
这种感觉我熟:球机装好了、网线插上了、指示灯亮着,平台上看不到画面。 你不能上去拔线重来,你得知道断在哪一段。
一、我一开始以为它缺"自己是谁",这是错的
中间那台路由器一开始不通,我以为它缺的是"不知道自己是谁"。
后来发现不是。 它两个口都配了地址,身份是完整的。它缺的是另外两件事:
- 要发给谁 ------ 目标网段在哪
- 交给谁 ------ 下一跳的地址
所以一台路由器要正常转发,得知道三件事:
| 要知道什么 | 例子 |
|---|---|
| 我是谁 | 各个网口上配的地址 |
| 要发给谁 | 目标网段,比如 10.3.3.0/24 |
| 交给谁 | 下一跳地址,比如 10.0.12.2 |
三件事缺一件,包就到不了。
补完中间那台,三台表里都有路了:
R0(最左):S 10.3.3.0/24 via 10.0.12.2 ← 有
R1(中间):S 10.1.1.0/24 via ... 两条都补上了
R3(最右):S 10.1.1.0/24 via 10.0.23.2 ← 有
包每走一跳,都要那一跳自己知道下一跳是谁。 路由器不转发"我邻居知道的",它只认"我自己表里的"------哪怕邻居就在旁边、哪怕它清楚。
还有个我没想明白的:我以为 ARP 包过三台路由器要减 3 个 TTL,后来才知道广播根本不出本段。这个不是我发现的,是别人指出来我才反应过来的。
二、两端各 ping 一次,把断点夹出来
补完路由还是不通。按理说配置已经没问题了 ------ 那问题在哪?
我一开始的思路错了。 我在想要不要 tracert 一下看断在哪。但 tracert 给的是一整条路径,我要的是"断在第几段"。
后来我换了最笨的办法:从两头各 ping 一次网关。
PC0 → ping 10.0.12.2 ✅ 通
PC1 → ping 10.0.23.2 ❌ 不通
一通一不通,断点立刻出来了:在 PC1 这一侧。
这招在现场更常用。两头都亮、中间不亮------摄像机那头 ping 得通交换机、交换机 ping 不到平台侧,那问题就在交换机到平台那一段,不用整条链路排查。
三、show arp 查不到对端,我才发现地址配在了错的接口上
断点锁定在 PC1 侧,下一步要看这台路由器认不认识对端。
arduino
Router3# show arp
Internet 10.0.23.3 ARPA GigabitEthernet0/1 ← 路由器,正常
Internet 10.3.3.1 ARPA GigabitEthernet0/0 ← 自己
表里根本没有 PC1(10.3.3.10)。
查不到,意味着它俩从没在这个口上通过话。 线插着、灯亮着、状态是 up,但从没有一次真正对话。
最后我打开拓扑图才看明白:
Router3 的
Gi0/1接的是 PC1,可我把 PC 侧的地址10.3.3.1配在了Gi0/0上。Gi0/0接的其实是路由器,不是电脑。
接口地址配在了错的端口上。
插错了照样有灯亮 ------ 这是最容易错、也最不敢承认的一步。因为现场两个口都开着、都在同一台设备上,摄像机插 A 口还是 B 口、VLAN 挂哪个段,全凭手感。
改完就通了:TTL=125,tracert 四跳,Trace complete。
四、我能带去现场的排障顺序
现在我遇到任何"不通",会按这个顺序来。四条命令全是只读的,不动配置。
| 顺序 | 敲什么 | 看什么 |
|---|---|---|
| 1 | show ip route |
配置对不对,目标网段在不在 |
| 2 | 两端各 ping 一次 |
断在哪一段 |
| 3 | show ip interface brief |
口起来没有 |
| 4 | show arp |
认不认识对端设备 |
第 2 步最有用 ------ 两边各夹一次,比一次猜到底快得多。
第 4 步最能打脸 ------ 前面三条全显示"正常",第 4 条才告诉你它其实不认识对端。
五、我记住的一句话
接口 up,只证明你插了线、开了口。它不证明线的另一头是谁。
我在现场干了几年,习惯用"通不通"两个字判断所有问题:灯亮就是通,灯不亮就是断。
网络教我的是第三种状态 ------ 线是通的,但对端不在你以为的那个地方。
附:还没搞明白的地方
ping 网关我拿到 TTL=253,ping 自己拿到 127,ping 过了三台路由器的终点拿到 125。
127 和 125 我想明白了(包每过一跳减 1),但 253 这个数我到现在还不知道是怎么来的。
先记下来,等搞懂了再补。