先确认网卡状态是否为UP,再检查IP分配、路由设置、DNS解析及防火墙策略,依次排查物理连接、网关连通性、外网可达性、域名解析和系统拦截问题。

Linux 无法访问外网,别急着重装系统。问题通常出在“连得上、通不了、解析错、拦住了”这四个环节,按顺序排查基本能定位根源。
先确认网卡状态和基础连通性
网卡没起来,后面全白搭。运行:
-
ip a 看 eth0/wlan0 是否存在且状态为 UP;若显示 DOWN,用 sudo ip link set eth0 up 启用
- 检查是否分配了有效 IP:如果只有 169.254.x.x(链路本地地址)或完全没地址,说明 DHCP 失败或静态配置有误
- 手动配一个测试 IP(如 sudo ip addr add 192.168.1.100/24 dev eth0),再 ping 网关(如 ping 192.168.1.1)——通了说明物理链路和本地网络正常
再验证路由和外网可达性
能通网关 ≠ 能上外网。继续往下测:
-
ping 8.8.8.8 或 ping 114.114.114.114:能通说明路由和防火墙允许出站 ICMP,外网链路没问题
- 不通?用 ip route show 确认默认路由是否存在(应有 default via xxx.xxx.xxx.xxx);缺的话补:sudo ip route add default via 192.168.1.1
- 仍不通可试 traceroute -n 8.8.8.8,看卡在哪一跳——停在网关后,大概率是路由器没开 NAT 或上级策略拦截
重点查 DNS 解析是否失效
能 ping 通 IP 却打不开网页,十有八九是 DNS 问题:
-
cat /etc/resolv.conf 看 nameserver 是否指向可用地址(如 114.114.114.114 或 223.5.5.5)
- 临时测试:nslookup www.baidu.com 114.114.114.114,成功说明本机 DNS 配置被覆盖或 systemd-resolved 干扰
- 若用 Netplan 或 NetworkManager,DNS 可能被动态覆盖。稳妥做法:编辑 /etc/systemd/resolved.conf,取消注释并设 DNS=114.114.114.114,再执行 sudo systemctl restart systemd-resolved
别漏掉防火墙和服务干扰
尤其服务器环境,常被默认策略挡在外网之外:
-
sudo systemctl status firewalld(或 ufw/iptables)——若 active(running),检查是否放行了出站流量:sudo firewall-cmd --list-all | grep "masquerade"
-
sudo ss -tuln | grep ':53\|:80\|:443' 确认本地无异常监听进程劫持端口
- 极少数情况:内核参数被改,比如 net.ipv4.ip_forward=0 在做路由转发时会导致外网不通,用 sysctl net.ipv4.ip_forward 查,需开启则写入 /etc/sysctl.conf
基本上就这些。从物理层到应用层逐层验证,比盲目重启或重装高效得多。
以上就是Linux 无法访问外网?完整排查流程的详细内容,更多请关注php中文网其它相关文章!