linux网络故障排查的起点是检查物理层与链路层连通性,逐步深入ip配置、路由、dns、防火墙、服务状态及抓包分析。1.首先确认网线连接正常,使用ip link show或ifconfig -a查看网卡状态是否up,down则用命令激活;2.通过ip a show确认ip地址配置正确,ip r show检查默认路由是否存在;3.用ping测试本机、网关、外网ip和域名解析,判断问题层级;4.cat /etc/resolv.conf或resolvectl status确认dns配置,dig或nslookup测试域名解析;5.检查iptables、ufw或firewalld规则,确认端口开放;6.用ss -tuln或netstat -tuln查看监听端口,lsof -i定位占用进程;7.利用tcpdump在对应接口抓包分析数据流向,保存为pcap文件后导入wireshark进行图形化深度解析;8.查看journalctl -xe或tail -f /var/log/syslog获取系统和服务日志线索,辅助问题定位。

Linux网络故障排查,其实就是一场侦探游戏,核心在于系统性地缩小问题范围,并最终锁定症结所在。这通常需要从最基础的网络连通性检查开始,逐步深入到系统日志、服务状态,最终动用强大的抓包和诊断工具,去“看”网络里到底发生了什么。很多时候,问题并不复杂,只是我们没有找到正确的“视角”去观察它。

排查Linux网络故障,我习惯从以下几个层次入手,像剥洋葱一样层层深入:
物理层与链路层初步判断:

ip link show
ifconfig -a
sudo ip link set <interface_name> up
dmesg
IP地址与路由配置:
ip a show
ip r show
ping <gateway_ip>
ping 8.8.8.8
ping 114.114.114.114
traceroute <destination_ip>
mtr <destination_ip>
DNS解析问题:

cat /etc/resolv.conf
resolvectl status
systemd-resolve --status
dig <hostname>
nslookup <hostname>
防火墙与安全组:
sudo iptables -nvL
sudo ufw status
sudo firewall-cmd --list-all
服务与端口状态:
ss -tuln
netstat -tuln
sudo lsof -i :<port_number>
systemctl status <service_name>
nginx
apache2
sshd
抓包分析:
tcpdump -i <interface> host <ip_address> and port <port_number> -vvv -X
tcpdump
-w <filename.pcap>
系统日志:
journalctl -xe
tail -f /var/log/syslog
/var/log/messages
当我们面对一个“网络不通”的模糊报告时,首先要做的不是急着去用复杂的工具,而是要明确问题的“边界”和“症状”。这个起点,我个人觉得,是明确故障的范围和初步的连通性测试。
打个比方,你家停电了,你会先看是不是总闸跳了,而不是直接拆开插座检查。网络故障也是如此。
一旦有了初步判断,就可以进行最简单的连通性测试:
ping
ping 127.0.0.1
ping <本机同网段另一台机器的IP>
ping <默认网关IP>
ping 8.8.8.8
ping baidu.com
ip a show
ip r show
ip a show
ip r show
这些基础检查,看似简单,却能迅速排除大量低级错误,为后续的深入排查指明方向。
Linux命令行工具的强大之处在于它们的组合性和灵活性,能够以非常精细的方式检查网络状态。除了上面提到的
ping
ip
ss
netstat
ss -tuln
t
u
l
n
ss -s
netstat
netstat -tulnp
p
lsof -i
ss
netstat
lsof -i :<port_number>
lsof -i tcp
lsof -i udp
curl
wget
curl -v <http://example.com>
ping
curl
-v
wget <http://example.com>
curl
nmap
nmap
nmap -p 22,80,443 <target_ip>
这些工具的组合使用,能让你像X光一样“透视”网络连接的各个层面,从链路到应用,迅速锁定问题所在。
当所有基础工具都无法明确指出问题,或者你需要深入了解数据包在网络中是如何流动的、内容是什么时,抓包工具就成了不可或缺的“显微镜”。
tcpdump
Wireshark
tcpdump
tcpdump
基本用法:
sudo tcpdump -i <interface_name>
<interface_name>
eth0
ens33
lo
常用选项和过滤:
-n
-nn
-v
-vv
-vvv
-X
-s 0
-w <filename.pcap>
Wireshark
tcpdump
host <ip_address>
port <port_number>
src host <ip>
dst host <ip>
src port <port>
dst port <port>
tcp
udp
icmp
and
or
not
sudo tcpdump -nn -i eth0 host 192.168.1.100 and port 80 or port 443 -w web_traffic.pcap
eth0
192.168.1.100
web_traffic.pcap
Wireshark
Wireshark
tcpdump
Wireshark
File -> Open
tcpdump
Wireshark
tcpdump
ip.addr == 192.168.1.100
tcp.port == 80
http
http.request.method == "POST"
tcp.flags.syn == 1 and tcp.flags.ack == 0
Wireshark
Follow -> TCP Stream
实战场景:
假设你的Web服务器无法访问。
ping
ss -tuln
sudo tcpdump -nn -i eth0 port 80 or port 443 -w web_debug.pcap
tcpdump
web_debug.pcap
Wireshark
Wireshark
tcp.port == 80 or tcp.port == 443
抓包是网络排查的最后一道防线,也是最能揭示真相的手段。它能让你看到数据包在“线”上的真实面貌,排除各种猜测,直达问题本质。
以上就是Linux网络故障该如何排查?_Linux抓包与诊断工具详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号