linux网络不通应按物理层、连通性、路由dns、防火墙顺序排查:先用ip addr show确认网卡up且有合法ip,再逐级ping回环、本机ip、网关、8.8.8.8,接着检查默认路由和/etc/resolv.conf dns配置,最后验证防火墙及networkmanager服务状态。

Linux 网络断开无法联网,别急着重装系统或重启机器。问题通常出在几个关键环节:网卡没起来、没拿到 IP、没通网关、DNS 不工作,或者防火墙拦住了。按顺序一步步查,90% 的问题都能当场定位。
检查网卡状态和 IP 地址
这是第一步,也是最基础的。如果网卡是 DOWN 的,或者压根没分配到有效 IP,后面全白搭。
- 运行 ip addr show,找你的主网卡(比如 eth0、enp0s3 或 wlan0),确认它显示 state UP,且有类似 inet 192.168.1.100/24 这样的 IPv4 地址
- 如果状态是 DOWN,用 sudo ip link set eth0 up 启用(把 eth0 换成你实际的接口名)
- 如果只有 169.254.x.x 这类地址,说明 DHCP 没拿到 IP,可手动尝试 sudo dhclient eth0 或检查路由器 DHCP 是否开启
测试连通性分层验证
不是一上来就 ping google.com,而是从本机开始,一层层往外试,快速判断问题在哪一环。
- ping 127.0.0.1:失败说明本地协议栈异常(极少见,但要先排除)
- ping 网关(如 ping 192.168.1.1):不通,说明局域网链路有问题(网线松了、Wi-Fi 没连上、路由器宕机)
- ping 8.8.8.8:能通但打不开网页,基本锁定是 DNS 问题;不通则继续看路由
确认默认路由和网关设置
即使有 IP,没有正确路由,数据包也发不出去。
- 执行 ip route show,看是否有 default via 192.168.1.1 dev eth0 这样的默认路由行
- 如果没有,临时加一条:sudo ip route add default via 192.168.1.1 dev eth0
- 若每次重启都丢失,说明网络配置文件(如 /etc/netplan/*.yaml 或 /etc/network/interfaces)里缺了 gateway 配置
排查 DNS 解析是否正常
能 ping 通 IP 却打不开网站,十有八九是 DNS 搞不定。
- 查看当前 DNS:cat /etc/resolv.conf,确认里面有 nameserver 行,比如 nameserver 8.8.8.8
- 测试解析:nslookup google.com 或 dig baidu.com +short,没返回 IP 就是解析失败
- 临时换 DNS 测试:编辑 /etc/resolv.conf,把 nameserver 改成 8.8.8.8 或 1.1.1.1,保存后重试
检查防火墙和服务状态
有些发行版默认开启防火墙,可能误拦了出站流量或 DNS 请求。
- Ubuntu:sudo ufw status verbose;CentOS/RHEL:sudo firewall-cmd --list-all
- 临时关闭测试:sudo ufw disable 或 sudo systemctl stop firewalld(测完记得恢复)
- 如果用了 NetworkManager,检查服务是否运行:systemctl status NetworkManager,异常时可重启:sudo systemctl restart NetworkManager











