后端线上最常见的一类问题,就是“服务连不上”。但“连不上”背后可能是域名解析、目标 IP、源地址选择、路由、端口监听、防火墙、连接状态、应用协议任意一层出了问题。

Linux 网络排障之所以难,是因为网络是分层的。要想收敛得快,就必须把 IP、路由、端口和连接状态放到同一张图里理解,而不是只会 ping 一下或者 curl 一下。

网络问题最怕的不是复杂,而是把不同层的问题混着查。

为什么这一篇重要

如果没有一条稳定的网络排障主线,线上“连接失败”问题会很容易陷入反复猜测。

先把核心问题想清楚

  • 网络排障要按链路层次逐步收窄,而不是一次性猜结论。
  • IP、路由、端口监听和连接状态是最基本的四个观察面。
  • 很多“网络不通”其实不是链路断,而是目标根本没在正确地址上提供服务。

实战里更该关注什么

  • 先确认本机地址、目标地址和默认路由,再看服务端口。
  • 把客户端视角和服务端视角配对起来看。
  • 遇到问题时,优先判断是到不了、连不上,还是连上后应用协议失败。

常见误区

  • 只会用 ping 判断一切网络问题。
  • 没有先确认目标端口是否真的在监听。
  • 把 TCP 连接问题和 HTTP 协议问题混为一谈。

一个值得自己做的小练习

找一个端口故意不监听的服务,再找一个监听了但应用返回错误的服务,对比两种“访问失败”在排障路径上的区别。

小结

网络基础排障的关键,不是命令多,而是有没有一条从地址到连接状态的稳定观察链路。