4. 网络层排查(IP层):IP地址配置错误、子网掩码、网关、路由问题导致的超时
网络层,说白了就是IP层。这一层要是出问题,你的数据包根本找不到路。我遇到过不少运维新手,应用层、传输层查了个遍,最后发现是IP地址配错了——这种冤枉路我走过不止一次。
咱们直接切入正题。网络层导致连接超时的原因,归纳起来就四类:IP地址配置错误、子网掩码不匹配、网关设置不对、路由表有问题。下面我一个一个拆开讲。
核心排查思路:从本机出发,逐跳验证。先看自己,再看邻居,最后看远端。
4.1 IP地址配置错误
这是最基础,也最容易犯的错。我见过有人把IP配成了广播地址,结果网络时通时不通,折腾了一下午。
常见的IP配置错误有这几种:
- IP地址冲突——同一网段两台设备用了相同IP
- IP地址与子网不匹配——比如配成了广播地址或网络地址
- 静态IP配错——手抖多按了个数字,或者DNS和网关填反了
- DHCP获取失败——自动获取到了169.254.x.x的APIPA地址
怎么查?先看本机IP配置。Windows用ipconfig,Linux用ip addr或ifconfig。
# Windows
ipconfig /all
# Linux
ip addr show
# 或者
ifconfig
看到169.254.x.x的地址,基本可以断定DHCP没拿到有效IP。这时候检查DHCP服务器是否正常,或者手动配一个静态IP试试。
我的习惯:排查IP冲突时,先ping一下这个IP。如果能ping通,但设备又不是自己,那肯定冲突了。再用arp -a看看MAC地址,找到是谁占用了IP。
4.2 子网掩码问题
子网掩码决定了你的设备认为“哪些IP是邻居,哪些是远方”。掩码配错了,设备会把本应在同一网段的机器当成远端,数据包就会往网关送,网关一看目标IP在本地,又给扔回来——来回折腾,不超时才怪。
举个例子:
| 配置项 | 正确值 | 错误值 | 后果 |
|---|---|---|---|
| IP地址 | 192.168.1.10 | 192.168.1.10 | — |
| 子网掩码 | 255.255.255.0 | 255.255.0.0 | 误判网段范围 |
| 目标IP | 192.168.2.20 | 192.168.2.20 | — |
| 通信结果 | 正常走网关 | 认为在同一网段,直接ARP | ARP失败,连接超时 |
你看,掩码从24位变成16位,设备就以为192.168.2.20是邻居,直接发ARP请求。但实际网络拓扑中,这两个IP不在同一个广播域,ARP没人响应,连接就卡住了。
我曾经踩过的坑:有一次割接,把新设备的掩码配成了255.255.255.0,但旧设备用的是255.255.254.0。结果新设备能ping通网关,但ping不通同网段另一台服务器。查了半天,就是掩码不一致导致的。
4.3 网关配置错误
网关是设备通往外部网络的“大门”。门都找错了,数据包当然出不去。
常见的网关问题:
- 网关IP配错——比如网关应该是192.168.1.1,配成了192.168.1.254
- 网关不可达——网关设备宕机或端口down了
- 没有配置默认网关——设备只知道本地网段,不知道去外网该找谁
- 配置了多个网关导致路由混乱——Windows上配了多个默认网关,系统会随机选一个
排查方法很简单:
# 查看默认网关
# Windows
route print -4 | findstr "0.0.0.0"
# Linux
ip route show default
# 或者
route -n | grep "^0.0.0.0"
然后ping一下网关IP。如果ping不通,先检查物理链路和网关设备。如果能ping通但外网还是超时,看看网关设备上有没有做ACL限制。
我建议:配完网关后,先ping网关,再ping一个外网IP(比如8.8.8.8),最后ping域名。这样能快速定位是网关问题还是DNS问题。
4.4 路由问题
路由问题比前几个复杂一些。它涉及数据包从源到目的地的整个路径。路径上任何一个路由器配置错了,都可能导致超时。
常见的路由问题:
- 缺少路由条目——路由器不知道目标网络该往哪转发
- 路由环路——数据包在两个路由器之间来回跳,直到TTL耗尽
- 路由优先级错误——静态路由和动态路由冲突,走了错误路径
- 路由过滤/ACL——路由器上有策略阻止了数据包通过
排查路由问题,traceroute(Windows上是tracert)是神器。
# Windows
tracert 8.8.8.8
# Linux
traceroute -n 8.8.8.8
看输出结果,重点关注:
- 哪一跳开始出现
* * *(超时) - 跳数是否异常多(可能路由环路)
- 返回的IP地址是否合理
如果traceroute到某一跳就停了,那问题大概率出在这一跳或它的下一跳。
核心原则:路由是双向的。去程有路由不代表回程也有。排查时一定要检查往返两个方向的路由表。
4.5 网络层排查流程图
下面这张图总结了网络层排查的核心逻辑。我建议你把它记在脑子里,遇到超时问题就按这个流程走一遍。
4.6 实战排查步骤
好了,理论讲完了。咱们来一套标准操作流程。遇到网络层超时,按这个顺序来:
- 第一步:看自己
- 执行
ipconfig或ip addr,确认IP、掩码、网关 - 确认没有IP冲突(ping自己IP,看是不是只有自己回应)
- 执行
- 第二步:看邻居
- ping同网段一台已知正常的设备
- 如果ping不通,检查交换机端口、VLAN配置、物理链路
- 第三步:看网关
- ping网关IP
- 如果ping不通,检查网关设备状态和端口
- 第四步:看路径
- 执行
tracert或traceroute到目标IP - 分析每一跳的延迟和丢包情况
- 执行
- 第五步:看路由表
- 检查本机和沿途路由器的路由表
- 确认去程和回程都有正确的路由条目
特别注意:很多超时问题其实是回程路由缺失。数据包能发出去,但回不来。你traceroute看到请求到了目标,但收不到回复,十有八九是回程路由没配。
嗯,网络层排查就这些。说白了就是四个点:IP对不对、掩码准不准、网关通不通、路由全不全。把这四个点挨个过一遍,80%的网络层超时问题都能解决。剩下的20%,可能是防火墙拦截、MTU问题或者更底层的物理层故障——那些咱们后面章节再聊。