Linux服务器网络故障排查工具:零基础也能用的诊断指南
Linux服务器网络故障排查工具:零基础也能用的诊断指南
当你的网站打不开、SSH连不上或者服务响应慢,多数情况是网络层面出了问题。
掌握几个 Linux服务器网络故障排查工具,能帮你快速定位是本地丢包、端口不通还是路由受阻。
这篇文章我会按零基础能用得上的方式,讲清楚每个命令的作用、实操场景和避坑要点。
做排查前必须确认的三件事
- 你有服务器 SSH 权限(root 或 sudo 用户)。
- 服务器能联网(最低要求能 ping 外网)。
- 系统中已安装基础网络工具(大部分工具默认包含,但部分精简版系统需手动装)。
验证服务器基础连通性:
ping -c 4 8.8.8.8
如果没反应,先检查网卡状态:ip link show,确保 state UP。
五个最常用的排查工具及场景
1. ping —— 最基础的连通性测试
作用:检查目标主机是否可达,以及往返时延和丢包率。
# 持续 ping 直到按 Ctrl+C
ping baidu.com
# 只发 4 个包,适合脚本
ping -c 4 baidu.com
如果 ping 不通,说明链路或路由有问题;
如果 ping 通但网站访问慢,则继续查端口或 DNS。
2. traceroute —— 看数据包走哪条路
作用:显示数据包从本机到目标每一跳的 IP 和时延,帮助找出哪个路由节点丢包。
traceroute baidu.com
输出中如果某一跳显示 * * *,可能是那个节点禁用了 ICMP,也可能是真正丢包。
连续多跳都 * 且目标不可达,则怀疑网络断点。注意:部分云服务器默认禁用了 UDP 模式的 traceroute,可改用 -I(ICMP 模式):traceroute -I baidu.com。
3. netstat 和 ss —— 查看本机端口与连接状态
ss 是 netstat 的现代替代,更高效。
查看哪些端口在监听:
# 查看所有 TCP 监听端口(常用)
ss -tlnp
# 或者用 netstat(需要安装 net-tools)
netstat -tlnp
-t 表示 TCP,-l 表示监听,-n 显示数字端口,-p 显示进程。
如果你部署了 Nginx 但 ss -tlnp 看不到 80 端口,说明 Nginx 没启动或端口被其他程序占用。
4. telnet —— 测试远程端口是否开放
作用:快速判断某个 IP + 端口能否连上。
telnet 192.168.1.100 22
如果连接成功,会显示 SSH 协议的欢迎信息;
如果卡住或返回“Connection refused”,说明端口没开或被防火墙拦截。telnet 可能没安装,也可用 nc -zv:nc -zv 192.168.1.100 22。
5. curl —— 模拟 HTTP 请求
作用:测试 Web 服务是否能返回正确状态码和内容。
curl -I https://baidu.com
-I 只返回响应头,看 HTTP 状态码。
返回 200 说明正常,500 说明服务端错误,连接超时说明网络或防火墙问题。
常见故障排查组合口诀
| 症状 | 优先使用的排查命令 | 可能原因 |
|------|-------------------|----------|
| 完全连不上服务器 | ping → traceroute | 物理断开或路由丢失 |
| 能 ping 通但业务端口连不上 | ss -tlnp 看本地,telnet 看远程 | 服务没启动,或防火墙拦截 |
| 网站打开很慢 | curl -w "%{time_total}" -o /dev/null -s 测试响应时间 | DNS 解析慢,或带宽不足 |
| 偶尔掉线 | ping -c 100 统计丢包率 | 线路不稳或网卡故障 |
避坑提醒(新手最容易忽略的几点)
- 防火墙拦截:即使服务端端口监听正常,
iptables或云平台安全组规则也可能拦截入站。用iptables -L -n查看规则,或检查云控制台入方向规则。 - DNS 问题:
ping域名报错“Name or service not known”时,用nslookup baidu.com检查解析是否正常。可临时改用 IP 测试。 - 部分工具未安装:
traceroute、telnet、nc、netstat在最小化安装的系统中可能缺少。用包管理器安装:
- CentOS/RHEL:
yum install traceroute telnet nc net-tools - Ubuntu/Debian:
apt install traceroute telnet netcat-openbsd net-tools
- 非 root 用户权限:
ss -tnlp能查看端口和进程,但部分进程信息需要 root 权限。建议用 sudo。
验证修复效果
完成调整后,依次执行以下步骤确认问题已解决:
- 再次
ping目标,观察丢包率是否为 0%。 - 使用
ss -tlnp确认关键端口处于 LISTEN 状态。 - 用
telnet或nc -zv从另一台机器测试端口连通性。 - 如果测试 Web 服务,用
curl -I检查返回 200。
如果你在处理实际故障时卡住,优先对照上表的组合口诀,然后检查防火墙和进程状态。
掌握这些 Linux服务器网络故障排查工具,多数日常网络问题都能在十分钟内定位。