Linux网络排障核心是分层定位连接超时问题:先用systemctl和journalctl查服务状态与错误日志;再用ping测三层连通性,telnet/nc测端口可达性,curl -v观察HTTP请求卡点;接着用ss -tlnp确认监听地址,firewall-cmd或iptables检查防火墙规则;最后tcpdump抓包分析SYN交互。

Linux 没有“101个常见工具”这种固定清单,实际排障靠的是少数几个核心命令组合使用,配合日志分析逻辑。连接超时问题本质是“发出去的请求没回来”,关键在于分层定位:是发不出去?发出去了没响应?还是响应被拦住了?下面按真实排查路径整理最常用、最有效的工具和方法。
看日志:先确认服务是否启动、有没有报错
很多超时根本不是网络问题,而是服务压根没起来或配置崩了。
- 用 systemctl status 服务名(如
systemctl status nginx)看服务状态,是否 active (running) 或 failed - 查启动失败原因:journalctl -u 服务名 --since "1 hour ago",重点关注 ERROR、failed、cannot、no such file 等关键词
- 检查传统日志:tail -n 20 /var/log/messages 或 tail -n 20 /var/log/syslog,过滤服务名(如
grep sshd) - 如果服务依赖配置文件(如
/etc/nginx/nginx.conf),先用 nginx -t 或对应服务的验证命令测试语法
测连通性:区分是网络不通,还是端口没开
ping 通 ≠ 服务可用。必须拆开验证。
- ping 目标IP:确认三层可达。不通 → 查路由、网关、防火墙出方向规则
- telnet 目标IP 端口 或 nc -zv 目标IP 端口:直测 TCP 连通性。连不上 → 说明目标端口未监听、被防火墙拦截、或中间设备丢包
-
curl -v http://目标地址:加
-v显示详细过程。卡在* Trying x.x.x.x:80...→ SYN 发出无响应,问题在传输层以下;卡在* Connected to...后 → 应用层响应慢或挂起 - 对比 curl http://IP 和 curl http://域名:结果不同 → DNS 解析问题,可临时改
/etc/hosts绑定 IP 验证
查监听与连接状态:确认服务真正在听,且能接受外部请求
服务启动了,但可能只绑了本地地址,或被防火墙挡在外面。
-
ss -tlnp | grep :端口(如
ss -tlnp | grep :80):看 Local Address 列。显示127.0.0.1:80表示只响应本机;应为*:80或0.0.0.0:80才能接收外部连接 - 检查服务配置文件中的监听参数:Nginx 的
listen 80;默认等价于listen *:80;;Redis 默认是bind 127.0.0.1,需改成bind 0.0.0.0并设protected-mode no - iptables -L -n(CentOS 7 及更早)或 firewall-cmd --list-all(firewalld):确认入站规则是否放行目标端口
抓包与统计:当常规命令看不出问题时深入一层
适合怀疑中间链路异常、SYN 丢包、或连接状态异常的情况。
- tcpdump -i any port 80 -c 10:在服务器上抓 HTTP 流量(-c 10 表示抓 10 个包),看是否有进来的 SYN 包,是否有发出的 SYN-ACK
- ss -tan state established | wc -l:统计当前已建立连接数,辅助判断负载
- ss -tan state close-wait | awk '{print $7}' | sort | uniq -c | sort -nr:查 CLOSE_WAIT 多的进程,提示应用未正确关闭 socket
- ip route show 和 ip addr show:确认路由表和网卡 IP 配置是否正确,特别是默认网关是否存在


















