linux网络排查需分层验证:用ip link和ethtool查物理层,用dig和ip route get验dns与路由,用ss替代netstat查端口,结合journalctl分析日志。

Linux网络状态检测不是“ping一下就完事”,很多新手卡在看似通却上不了网、或者明明配置对了却连不上服务。核心在于分层验证、避免跳步,尤其要绕开几个高频误区。
看接口状态不能只信ifconfig
ifconfig早已被标记为废弃工具,部分新系统默认不安装,且它不显示UP/DOWN的真实含义——比如网卡驱动加载失败时可能仍显示“UP”,但实际链路不通。必须用red”>ip link show确认物理层状态,并配合ethtool eth0检查Link detected: yes这一项。若为no,说明网线松动、交换机端口故障或网卡硬件异常,此时改IP或加路由全是白忙。
能ping通网关≠网络正常
很多人ping通192.168.1.1就以为万事大吉,结果curl打不开网页。这往往漏掉了两个关键点:
- DNS是否生效:用dig @8.8.8.8 www.baidu.com直连公共DNS测试,绕过本地resolv.conf;
- 出站路由是否完整:执行ip route get 8.8.8.8,看返回的dev和src是否匹配你期望的网卡和源IP——多网卡服务器常因src地址选错导致应答包被丢弃。
查端口别只盯netstat
netstat输出冗长、权限要求高、且在较新发行版中已被弃用。更可靠的是用ss -tuln看监听端口,加上-p(需root)可直接看到绑定进程。注意常见陷阱:
- 服务监听在127.0.0.1:80 → 外部无法访问,需改成0.0.0.0或具体局域网IP;
- 防火墙放行了端口,但SELinux处于enforcing模式,仍会拦截(可用ausearch -m avc -ts recent查拒绝日志);
- systemd服务启动成功,但ss没看到端口 → 检查服务Unit文件中是否配置了BindTo=或NetworkOnline=yes等依赖,导致启动时机过早。
别把日志当摆设
很多问题在journalctl -u NetworkManager或journalctl -b | grep -i “eth0|dhcp”里早有提示,比如:
- “DHCP lease expired, no response from server” → 网络设备或DHCP服务挂了;
- “RTNETLINK answers: File exists” → 重复添加路由,脚本未做判断;
- “Failed to start raise network interfaces” → /etc/network/interfaces语法错误或up脚本崩溃。
基本上就这些。不复杂但容易忽略。