> Linux网络诊断命令大全:ping、traceroute、netstat

为什么要学网络诊断命令

“网站打不开了”——这是你最不想听到的话。但是别慌,Linux提供了一整套网络诊断工具,按照正确的排查思路,大部分网络问题都能快速定位。

我的排查顺序通常是:ping → traceroute → ss/netstat → curl → tcpdump。

ping:最基本的连通性测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 测试到目标的连通性
$ ping -c 4 google.com
PING google.com (142.250.80.46) 56(84) bytes of data.
64 bytes from lax17s55-in-f14.1e100.net: icmp_seq=1 ttl=116 time=1.23 ms
64 bytes from lax17s55-in-f14.1e100.net: icmp_seq=2 ttl=116 time=1.15 ms
64 bytes from lax17s55-in-f14.1e100.net: icmp_seq=3 ttl=116 time=1.18 ms
64 bytes from lax17s55-in-f14.1e100.net: icmp_seq=4 ttl=116 time=1.20 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.150/1.190/1.230/0.029 ms
参数作用示例
-c N发送N个包后停止ping -c 4 host
-i N间隔N秒发送ping -i 0.5 host
-s N指定包大小ping -s 1400 host
-W N超时时间(秒)ping -W 3 host

ping结果分析

1
2
3
4
# 正常:0% packet loss, time < 100ms
# 延迟高:time > 200ms,可能线路问题
# 丢包:packet loss > 5%,网络不稳定
# 超时:100% packet loss,网络不通或对方禁ping

traceroute:追踪路由路径

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ traceroute google.com
traceroute to google.com (142.250.80.46), 30 hops max, 60 byte packets
 1  gateway (10.0.0.1)  0.523 ms  0.456 ms  0.412 ms
 2  isp-router (203.0.113.1)  2.345 ms  2.234 ms  2.123 ms
 3  core-router (198.51.100.1)  5.678 ms  5.567 ms  5.456 ms
 4  google-edge (142.250.80.1)  8.901 ms  8.789 ms  8.678 ms
 5  lax17s55-in-f14.1e100.net (142.250.80.46)  9.012 ms  8.901 ms  8.789 ms

# 如果某一跳显示 * * *,表示该路由器不回复ICMP
# 如果从某一跳开始全是超时,说明那里出了问题
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# mtr 是 ping + traceroute 的结合体,持续监测更直观
$ sudo apt install -y mtr
$ mtr google.com
                             My traceroute  [v0.95]
Host                          Loss%   Snt   Last   Avg  Best  Wrst StDev
1. gateway                     0.0%    10    0.5   0.6   0.4   0.8   0.1
2. isp-router                  0.0%    10    2.3   2.4   2.1   2.8   0.2
3. core-router                 0.0%    10    5.6   5.7   5.4   6.2   0.3
4. google-edge                 0.0%    10    8.9   9.0   8.7   9.5   0.2
5. lax17s55-in-f14.1e100.net   0.0%    10    9.0   9.1   8.8   9.6   0.2

ss/netstat:查看网络连接和端口

ss(Socket Statistics)是netstat的现代替代品,速度更快。

查看监听端口

1
2
3
4
5
6
$ ss -tlnp
State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port  Process
LISTEN  0       128            0.0.0.0:22          0.0.0.0:*      users:(("sshd",pid=1234))
LISTEN  0       128            0.0.0.0:80          0.0.0.0:*      users:(("nginx",pid=5678))
LISTEN  0       128            0.0.0.0:443         0.0.0.0:*      users:(("nginx",pid=5678))
LISTEN  0       80           127.0.0.1:3306        0.0.0.0:*      users:(("mysqld",pid=9012))
参数含义
-tTCP连接
-uUDP连接
-l仅监听状态
-n显示数字(不解析域名)
-p显示进程名
-a所有连接

查看已建立的连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 查看所有已建立的TCP连接
$ ss -tn state established
Recv-Q  Send-Q    Local Address:Port     Peer Address:Port
0       0         203.0.113.10:80        198.51.100.5:54321
0       0         203.0.113.10:22        192.0.2.100:12345

# 统计各状态的连接数
$ ss -s
Total: 168
TCP:   45 (estab 12, closed 8, orphaned 0, timewait 5)
Transport    Total     IP
RAW          0         0
UDP          4         4
TCP          37        37
INET         41        41

查看特定端口

1
2
3
4
5
6
7
8
# 谁在用80端口?
$ ss -tlnp | grep :80
LISTEN  0  128  0.0.0.0:80  0.0.0.0:*  users:(("nginx",pid=5678,fd=6))

# 或者用lsof
$ sudo lsof -i :80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   5678 www-data    6u  IPv4  12345      0t0  TCP *:http (LISTEN)

curl:HTTP请求测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 测试网站是否可访问
$ curl -I https://example.com
HTTP/2 200
server: nginx/1.18.0
content-type: text/html; charset=utf-8
date: Sun, 01 Feb 2026 10:00:00 GMT

# 测试响应时间
$ curl -w "DNS: %{time_namelookup}s\n连接: %{time_connect}s\nTTFB: %{time_starttransfer}s\n总时间: %{time_total}s\n" \
  -o /dev/null -s https://example.com
DNS: 0.012s
连接: 0.035s
TTFB: 0.156s
总时间: 0.234s

# 指定DNS解析(跳过DNS,直接测试IP)
$ curl -H "Host: example.com" http://203.0.113.10/
参数作用
-I只显示响应头
-v显示详细过程
-o /dev/null丢弃响应体
-s静默模式
-w自定义输出格式
-k忽略SSL错误
-L跟随重定向

ip/ifconfig:网络接口信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 查看IP地址(推荐用ip命令)
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP>
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
    inet 203.0.113.10/24 brd 203.0.113.255 scope global eth0

# 查看路由表
$ ip route show
default via 203.0.113.1 dev eth0
203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.10

# 查看网络流量统计
$ ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
    RX:  bytes packets errors dropped
    1234567890  987654    0       0
    TX:  bytes packets errors dropped
    987654321  876543    0       0

dig/nslookup:DNS查询

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 查询A记录
$ dig example.com
;; ANSWER SECTION:
example.com.    300     IN      A       203.0.113.10

# 简洁输出
$ dig +short example.com
203.0.113.10

# 查询特定DNS服务器
$ dig @8.8.8.8 example.com

# 查询MX记录
$ dig example.com MX

# 反向查询
$ dig -x 203.0.113.10

tcpdump:网络抓包

网络问题排查的终极武器:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 抓取80端口的数据包
$ sudo tcpdump -i eth0 port 80 -n
tcpdump: verbose output suppressed
10:00:01.123456 IP 198.51.100.5.54321 > 203.0.113.10.80: Flags [S], seq 12345
10:00:01.123567 IP 203.0.113.10.80 > 198.51.100.5.54321: Flags [S.], seq 67890
10:00:01.123678 IP 198.51.100.5.54321 > 203.0.113.10.80: Flags [.], ack 1

# 抓取特定IP的数据包
$ sudo tcpdump -i eth0 host 198.51.100.5 -n

# 保存到文件(后续用Wireshark分析)
$ sudo tcpdump -i eth0 port 80 -w /tmp/capture.pcap -c 100

网络排查流程

遇到"网站打不开"时,按这个顺序排查:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 1. 检查本机网络
$ ping 8.8.8.8

# 2. 检查DNS解析
$ dig example.com +short

# 3. 检查端口是否在监听
$ ss -tlnp | grep :80

# 4. 检查防火墙
$ sudo ufw status

# 5. 检查服务状态
$ systemctl status nginx

# 6. 检查应用日志
$ tail -20 /var/log/nginx/error.log

# 7. 测试HTTP响应
$ curl -v http://localhost
问题可能原因检查方法
ping不通网络不通/禁ping检查路由和防火墙
DNS解析失败DNS配置错误dig/nslookup
端口不通服务没启/防火墙ss -tlnp/ufw
连接超时网络慢/服务器过载mtr/htop
返回错误应用层问题查看应用日志

总结

网络诊断的核心工具就是这几个。记住排查思路比死记命令更重要:从底层(网络连通性)往上层(应用层)逐步排查。

更多Linux命令可以参考Linux最常用的50个命令速查表。关于防火墙的详细配置,推荐阅读Linux防火墙配置教程

网络诊断 Linux命令 运维
cd ..