ping 一台测试机,返回的不是超时,而是无法访问目标主机。值班的同事说两个报错都差不多,换了根网线继续等,问题当然没解决。

两个报错的来源不一样

请求超时是回显请求发出去,等了几秒没等到回包,ping 等 4 秒报 Request timed out。无法访问目标主机是 Destination host unreachable,本地网卡或中间路由器直接告诉你:到这台机器的路由我找不到。超时是对方沉默,unreachable 是有人明确说走不通。

各看哪个证据

  • 先看网关通不通:ping 自己的网关。网关都 unreachable,检查本地 IP、掩码、线缆;网关通而目标 unreachable,看路由器有没有到目标网段的路由。
  • 再看防火墙:防火墙静默丢弃多是超时,返回不可达多半是路由层面的问题。
  • 抓包确认:Wireshark 里出现 ICMP type 3 包,是路由器发回来的 unreachable;没有回包只有重传,是超时。
  • 跨网段确认:tracert 看卡在第几跳,本网段就挂大多是 ARP 没解析成功或目标子网掩码配错。

tracert 和 ping 的用法

超时用 ping -t 持续观察丢包率,随机丢包像线路质量问题,固定整段丢像对端宕机。unreachable 用 tracert 跟路由,从跳数断掉的位置反推哪台路由器缺路由。VLAN 配错网关地址时,同一 VLAN 内能通、跨 VLAN 报 unreachable,这个现象是典型证据。Windows 和 Linux 的 ping 参数不同,Linux 默认一直 ping,-c 4 限制次数,别照着 Windows 的习惯写脚本。

快速排障顺序

先查自己:IP、掩码、网关。再查链路:网线灯、交换机端口状态。再查路由:目标网段在不在路由表。然后查对端:是否关机、防火墙策略。顺着这个顺序走,报错类型一下就把范围圈定了。

  • 判断提醒:报 unreachable 先修路由和 ARP,报超时先看对端和防火墙,两个报错的修法不重叠,按名字查就不会走弯路。