Linux网络故障排查应按物理层→协议栈→IP配置→路由→DNS→应用层顺序验证:先用ip a检查网卡UP状态和有效IP,再逐级ping测试连通性,接着用ip route和resolv.conf核对路由与DNS配置,最后通过mtr、ss、nc和tcpdump定位链路、端口及数据包问题。

Linux网络状态检测不是靠猜,而是按层验证:物理层→协议栈→IP配置→路由→DNS→应用层。只要顺序对、命令准,90%的问题一眼就能定位。
看网卡有没有“活”
先确认硬件和驱动是否就位,接口是否启用、有没有IP。
-
ip a 查所有接口:重点看目标网卡(如ens33)是否显示 UP,是否有 inet 开头的IPv4地址(不是169.254.x.x这种链路本地地址)
- 若状态是 DOWN,用 sudo ip link set ens33 up 启用
- 若没IP,检查DHCP是否运行(sudo systemctl status dhcpcd 或 dhclient -v ens33),或手动配:sudo ip addr add 192.168.1.100/24 dev ens33
测连通性,分四步走
别一上来就ping百度,要从本机出发,层层外推。
-
ping -c 3 127.0.0.1:通不了说明TCP/IP协议栈损坏(极少见,多为内核或模块问题)
-
ping -c 3 本机局域网IP(如192.168.1.100):不通说明网卡收发异常(驱动、线缆、交换机端口可能故障)
-
ping -c 3 网关IP(如192.168.1.1):不通但前两步通,大概率是网关离线、网线松动或VLAN配置错
-
ping -c 3 8.8.8.8:能通但 ping www.baidu.com 不通 → DNS问题;全都不通 → 路由或防火墙拦截
查路由和DNS是不是“指错路”
有IP不代表能上网,得看数据包往哪送、域名能不能变IP。
-
ip route:必须有一条 default via X.X.X.X,后面跟的网关IP要和你实际网关一致;没有就加:sudo ip route add default via 192.168.1.1 dev ens33
-
cat /etc/resolv.conf:至少有一行 nameserver 8.8.8.8 或 nameserver 114.114.114.114;空或写错就改,或用 sudo systemd-resolve --set-dns=8.8.8.8(systemd系统)
-
dig www.qq.com @8.8.8.8 +short:绕过系统DNS直连公共服务器测试,有返回IP说明本地DNS坏,没返回说明网络出向被拦
追路径、看端口、抓包定案
前面都正常但服务打不开?这时候需要深入链路和应用层。
-
mtr -r -c 20 8.8.8.8:比traceroute更直观,能看每一跳丢包率和延迟,某跳开始全*或高丢包,问题就在那台设备或它之后
-
ss -tuln:查本机监听哪些端口(如Web服务该有80/443,SSH该有22),没看到说明服务没起或绑定错了地址(比如只绑了127.0.0.1)
-
nc -zv 192.168.1.100 22:从其他机器测试目标端口是否可达,排除本地防火墙干扰;不通再查 sudo ufw status 或 sudo iptables -L
- 真卡壳时:sudo tcpdump -i ens33 host 8.8.8.8 and icmp -c 10 抓ICMP包,看请求发没发出、回包来没来,直接验链路真假
基本上就这些。不复杂但容易忽略顺序——从自己开始,一跳一跳往外试,比瞎改配置快十倍。
以上就是Linux网络状态怎么检测_从基础到进阶全流程讲透【教程】的详细内容,更多请关注php中文网其它相关文章!