后端线上最常见的一类问题,就是“服务连不上”。但“连不上”背后可能是域名解析、目标 IP、源地址选择、路由、端口监听、防火墙、连接状态、应用协议任意一层出了问题。
Linux 网络排障之所以难,是因为网络是分层的。要想收敛得快,就必须把 IP、路由、端口和连接状态放到同一张图里理解,而不是只会 ping 一下或者 curl 一下。
网络问题最怕的不是复杂,而是把不同层的问题混着查。
为什么这一篇重要
如果没有一条稳定的网络排障主线,线上“连接失败”问题会很容易陷入反复猜测。
先把核心问题想清楚
- 网络排障要按链路层次逐步收窄,而不是一次性猜结论。
- IP、路由、端口监听和连接状态是最基本的四个观察面。
- 很多“网络不通”其实不是链路断,而是目标根本没在正确地址上提供服务。
实战里更该关注什么
- 先确认本机地址、目标地址和默认路由,再看服务端口。
- 把客户端视角和服务端视角配对起来看。
- 遇到问题时,优先判断是到不了、连不上,还是连上后应用协议失败。
常见误区
- 只会用
ping判断一切网络问题。 - 没有先确认目标端口是否真的在监听。
- 把 TCP 连接问题和 HTTP 协议问题混为一谈。
一个值得自己做的小练习
找一个端口故意不监听的服务,再找一个监听了但应用返回错误的服务,对比两种“访问失败”在排障路径上的区别。
小结
网络基础排障的关键,不是命令多,而是有没有一条从地址到连接状态的稳定观察链路。