openEuler WiFi 无法访问公网的排查与解决笔记

在使用 openEuler 系统连接 WiFi 时,我遇到了 WiFi 已连接但无法访问公网 的问题。本文记录了从问题发现到解决的完整排查过程,方便未来遇到类似情况参考。


一、问题现象

在 openEuler 上使用 nmcli 查看网络状态:

1
nmcli device status

输出显示:

1
2
3
wlan0          wifi      connected     CAD330BS1
usb0 ethernet connected usb0-static
...

可以看到无线网卡 wlan0 已经成功连接到 WiFi(SSID:CAD330BS1),但是尝试 ping 公网:

1
2
ping www.baidu.com
ping 114.114.114.114

结果均提示:

1
2
ping: socket: Operation not permitted
ping: Destination Host Unreachable

二、初步诊断

  1. 普通用户权限问题
    ping 报错 “Operation not permitted”,表明普通用户没有 raw socket 权限。使用 sudo 测试:

    1
    sudo ping 114.114.114.114

    得到:

    1
    From 192.168.0.2 icmp_seq=1 Destination Host Unreachable

    局域网可以访问,但公网不可达。

  2. 检查默认路由

    1
    ip route

    输出:

    1
    2
    3
    4
    default via 192.168.0.1 dev usb0 proto static metric 100 linkdown
    default via 172.168.50.1 dev wlan0 proto dhcp metric 600
    172.168.50.0/24 dev wlan0 proto kernel scope link src 172.168.50.109 metric 600
    192.168.0.0/24 dev usb0 proto kernel scope link src 192.168.0.2 metric 100 linkdown

    分析:

    • wlan0 默认路由存在,但 metric 较高(600),而 usb0 的默认路由 metric=100,但 linkdown,可能影响路由选择。
    • WiFi IP 配置正确:172.168.50.109/24,网关 172.168.50.1,DNS 正确。
  3. 确认局域网连通性

    1
    sudo ping -c 4 172.168.50.1

    成功返回:

    1
    64 bytes from 172.168.50.1: icmp_seq=1 ttl=64 time=1.70 ms

    局域网连接正常。

  4. 排查防火墙

    openEuler 上未启用 firewalld

    1
    2
    sudo systemctl stop firewalld
    Failed to stop firewalld.service: Unit firewalld.service not loaded.

    防火墙不是问题。


三、问题分析

根据以上排查,问题主要原因是:

  1. 默认路由冲突或优先级问题
    • 系统存在两个默认路由,usb0 虽然 linkdown,但 metric 较低,可能干扰路由选择。
    • wlan0 metric 较高,导致外网流量未通过 wlan0。
  2. 局域网和 DHCP 配置正确
    • IP、子网掩码、网关和 DNS 都正确
    • 问题仅在 路由选择 层,防火墙和 DNS 均正常。

四、解决步骤

  1. 删除无效的 usb0 默认路由
1
sudo ip route del default via 192.168.0.1 dev usb0
  1. 重新设置 wlan0 默认路由
1
sudo ip route add default via 172.168.50.1 dev wlan0
  1. 验证网络
1
2
3
ip route
ping -c 4 8.8.8.8
ping -c 4 www.baidu.com

成功 ping 通公网 IP 和域名,网络恢复正常。


五、总结与经验

通过此次排查,我总结了 openEuler WiFi 网络问题的几个关键点:

  1. 局域网可通 ≠ 公网可达
    • 先确认能否 ping 网关,再看是否能 ping 公网 IP
  2. 默认路由优先级(metric)非常重要
    • 如果系统存在多个默认路由,metric 高的路由可能导致流量被阻塞
    • linkdown 接口的默认路由最好删除
  3. 防火墙不是唯一因素
    • openEuler 默认防火墙未启用,但仍可能出现无法访问公网的情况
  4. 排查流程建议
    1. 检查 IP 与网关:ip addr show wlan0, ping 网关
    2. 检查默认路由:ip route
    3. 删除无效路由,重新添加正确路由
    4. 测试公网 IP 与域名连通性
    5. 检查防火墙和 DNS(如必要)

该封面图片由David MawPixabay上发布