返回文章
笔记知识库Wi-FiNetworkManager网络排障

Wi‑Fi 已连接但无法 Ping:AP 绑定与持久化配置

适用场景 设备显示 Wi‑Fi 已连接,但出现以下现象: 可以通过管理网口 SSH 到设备; 设备 Wi‑Fi 地址无法从电脑 Ping 通; 设备通过 Wi‑Fi 无法 Ping 通电脑或网关; 同一 SSID 下存在多个 AP/BSSID,电脑和设备关联到了不同 AP。 本文所有网络名称、地址和设备标识均使用占位符

2026年9月22日阅读约 16 分钟0 条评论

适用场景

设备显示 Wi‑Fi 已连接,但出现以下现象:

  • 可以通过管理网口 SSH 到设备;

  • 设备 Wi‑Fi 地址无法从电脑 Ping 通;

  • 设备通过 Wi‑Fi 无法 Ping 通电脑或网关;

  • 同一 SSID 下存在多个 AP/BSSID,电脑和设备关联到了不同 AP。

本文所有网络名称、地址和设备标识均使用占位符。

关键概念

“Wi‑Fi 已连接”只说明无线网卡完成了关联,不代表二层数据链路、VLAN、AP 上联和 IP 路由已经可用。

NetworkManager 中最容易混淆的是设备与连接配置:

概念含义示例device当前网卡及运行状态<WIFI_INTERFACE>connection保存在 NetworkManager 中的持久化配置<PROFILE_NAME>SSID无线网络广播名称<WIFI_SSID>BSSID某一个具体 AP 的无线 MAC 地址<TARGET_BSSID>

connection.id 只是本机配置的显示名称,802-11-wireless.ssid 才是实际连接的无线网络名称。iw ... link 中的频率和 BSSID 表示当前实际使用的频段与 AP。

因此,连接配置名称中即使含有“2.4G”,实际连接仍可能是 5 GHz。应通过频率判断实际频段:

  • 2xxx MHz:2.4 GHz;

  • 5xxx MHz:5 GHz。

nmcli 常规操作速查

1. 查看 NetworkManager 总体状态

nmcli general status
nmcli networking
nmcli radio
nmcli device status
nmcli connection show
nmcli connection show --active

查看当前用户具有哪些 NetworkManager 权限:

nmcli general permissions

通常读取状态不需要 sudo;修改系统级连接配置可能需要 sudo 或桌面 Polkit 授权。

2. 查看网卡和当前连接

查看指定网卡的完整运行状态:

nmcli device show <WIFI_INTERFACE>

只取当前连接配置名:

nmcli -g GENERAL.CONNECTION device show <WIFI_INTERFACE>

查看当前实际关联的 AP、频率、信号和速率:

iw dev <WIFI_INTERFACE> link

常用输出选项:

  • -f <FIELDS>:只显示指定字段;

  • -g <FIELDS>:只输出字段值,适合脚本;

  • -t:机器可读的简洁格式;

  • -p:便于人工阅读的美化格式。

例如:

nmcli -t -f DEVICE,TYPE,STATE,CONNECTION device status
nmcli -g connection.id,connection.uuid connection show "<PROFILE_NAME>"

3. 扫描 Wi‑Fi

主动重新扫描:

nmcli device wifi rescan ifname <WIFI_INTERFACE>

列出 SSID、BSSID、信道、频率、信号和加密方式:

nmcli -f IN-USE,SSID,BSSID,CHAN,FREQ,SIGNAL,SECURITY   device wifi list ifname <WIFI_INTERFACE> --rescan no

同一个 SSID 可能对应多个 BSSID。排障时应记录电脑与设备各自连接的 BSSID,不能只比较 SSID。

4. 连接已有配置

启用一个已保存的连接配置:

sudo nmcli connection up "<PROFILE_NAME>"

指定网卡启用:

sudo nmcli connection up "<PROFILE_NAME>" ifname <WIFI_INTERFACE>

停用连接配置:

sudo nmcli connection down "<PROFILE_NAME>"

断开指定网卡:

sudo nmcli device disconnect <WIFI_INTERFACE>

如果 SSH 正在使用该 Wi‑Fi,执行 connection down、device disconnect 或关闭无线电会立即中断远程连接。远程修改前应保留有线、串口或其他管理链路。

5. 新建 Wi‑Fi 连接

推荐用 --ask 交互输入密码,避免密码出现在命令历史、进程参数或知识笔记中:

sudo nmcli --ask device wifi connect "<WIFI_SSID>"   ifname <WIFI_INTERFACE>   name "<PROFILE_NAME>"

连接隐藏 SSID:

sudo nmcli --ask device wifi connect "<WIFI_SSID>"   ifname <WIFI_INTERFACE>   name "<PROFILE_NAME>"   hidden yes

不要把真实 Wi‑Fi 密码直接写入共享脚本、聊天记录或笔记。

6. 查看连接配置

查看全部属性:

nmcli connection show "<PROFILE_NAME>"

只查看常用字段:

nmcli -f connection.id,connection.uuid,connection.autoconnect,connection.autoconnect-priority,802-11-wireless.ssid,802-11-wireless.bssid,802-11-wireless.band,ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns,ipv4.never-default connection show "<PROFILE_NAME>"

默认情况下,命令不会显示已保存的密码。不要使用会显示密钥的选项来制作日志或知识笔记。

7. 自动连接和优先级

开启或关闭开机自动连接:

sudo nmcli connection modify "<PROFILE_NAME>" connection.autoconnect yes
sudo nmcli connection modify "<PROFILE_NAME>" connection.autoconnect no

设置自动连接优先级,数值越大越优先:

sudo nmcli connection modify "<PROFILE_NAME>"   connection.autoconnect-priority 100

修改配置后,可重新启用连接使其立即生效:

sudo nmcli connection up "<PROFILE_NAME>"

8. DHCP 与静态 IPv4

切换为 DHCP,并清除原有静态地址、网关和 DNS:

sudo nmcli connection modify "<PROFILE_NAME>"   ipv4.method auto   ipv4.addresses ""   ipv4.gateway ""   ipv4.dns ""

sudo nmcli connection up "<PROFILE_NAME>"

配置静态 IPv4:

sudo nmcli connection modify "<PROFILE_NAME>"   ipv4.method manual   ipv4.addresses "<IP_ADDRESS>/<PREFIX_LENGTH>"   ipv4.gateway "<GATEWAY_IP>"   ipv4.dns "<DNS_1> <DNS_2>"

sudo nmcli connection up "<PROFILE_NAME>"

如果连接只承担本地维护,不应提供默认路由:

sudo nmcli connection modify "<PROFILE_NAME>" ipv4.never-default yes

设置路由优先级,数值越小越优先:

sudo nmcli connection modify "<PROFILE_NAME>" ipv4.route-metric 600

添加或删除一条静态路由:

sudo nmcli connection modify "<PROFILE_NAME>"   +ipv4.routes "<DESTINATION>/<PREFIX_LENGTH> <NEXT_HOP>"

sudo nmcli connection modify "<PROFILE_NAME>"   -ipv4.routes "<DESTINATION>/<PREFIX_LENGTH> <NEXT_HOP>"

配置静态地址时,网关必须能从该接口所在子网到达。不要给维护网卡配置一个不属于其链路的网关。

9. 固定频段或具体 AP

固定到 5 GHz:

sudo nmcli connection modify "<PROFILE_NAME>" 802-11-wireless.band a

固定到 2.4 GHz:

sudo nmcli connection modify "<PROFILE_NAME>" 802-11-wireless.band bg

固定到某个具体 AP:

sudo nmcli connection modify "<PROFILE_NAME>"   802-11-wireless.bssid "<TARGET_BSSID>"

sudo nmcli connection up "<PROFILE_NAME>"

清除 BSSID 绑定,恢复在同名 AP 之间漫游:

sudo nmcli connection modify "<PROFILE_NAME>"   802-11-wireless.bssid ""

sudo nmcli connection up "<PROFILE_NAME>"

固定 BSSID 可以避开故障 AP,但目标 AP 离线后不会自动切换到其他同名 AP。

10. 重命名、克隆和删除连接配置

重命名只改变本机配置名称,不改变 SSID、IP 或 BSSID:

sudo nmcli connection modify "<OLD_PROFILE_NAME>"   connection.id "<NEW_PROFILE_NAME>"

修改高风险参数前,可以克隆配置作为备份,并禁止备份配置自动连接:

sudo nmcli connection clone "<PROFILE_NAME>" "<BACKUP_PROFILE_NAME>"
sudo nmcli connection modify "<BACKUP_PROFILE_NAME>"   connection.autoconnect no

确认目标名称和 UUID 后再删除配置:

nmcli connection show
sudo nmcli connection delete "<PROFILE_NAME>"

删除连接配置会移除其持久化设置,执行前必须确认目标。

11. 重新加载、应用和监控

如果手工修改了 NetworkManager 的磁盘配置文件,重新加载配置:

sudo nmcli connection reload

尝试把兼容的配置变更应用到当前设备:

sudo nmcli device reapply <WIFI_INTERFACE>

并非所有属性都支持运行时重新应用。BSSID、认证方式、IP 获取方式等变更通常应使用 connection up 重新激活。

实时观察 NetworkManager 状态变化:

nmcli monitor
nmcli device monitor <WIFI_INTERFACE>

检查本次开机的 NetworkManager 日志:

journalctl -u NetworkManager -b --no-pager

查看连接性检测结果:

nmcli networking connectivity check

本次故障的诊断与修改

修改前检查

先通过稳定的管理网口连接设备,避免 Wi‑Fi 重连时失去维护通道:

ssh <USER>@<DEVICE_MGMT_IP>

查看当前连接、配置、实际 AP、路由和邻居表:

nmcli -t -f DEVICE,TYPE,STATE,CONNECTION device status
nmcli -g GENERAL.CONNECTION device show <WIFI_INTERFACE>
nmcli -f connection.id,connection.autoconnect,802-11-wireless.ssid,802-11-wireless.bssid,ipv4.method,ipv4.addresses,ipv4.gateway connection show "<PROFILE_NAME>"
iw dev <WIFI_INTERFACE> link
ip route
ip neigh show dev <WIFI_INTERFACE>

如果邻居表中电脑与网关均显示 FAILED 或 INCOMPLETE,说明连 ARP/邻居解析都没有完成。此时应优先检查 AP、VLAN、无线隔离及静态 IP 所属网段,而不是先检查 ICMP 防火墙。

固定到已验证正常的 AP

先记录原 BSSID,以便回滚。然后将设备固定到电脑正在正常使用的 AP:

sudo nmcli connection modify "<PROFILE_NAME>"   802-11-wireless.bssid "<TARGET_BSSID>"

sudo nmcli connection up "<PROFILE_NAME>"

如果远程 SSH 用户需要交互输入 sudo 密码:

ssh -tt <USER>@<DEVICE_MGMT_IP>   'sudo nmcli connection modify "<PROFILE_NAME>" 802-11-wireless.bssid "<TARGET_BSSID>" && sudo nmcli connection up "<PROFILE_NAME>"'

验证

确认保存的配置和当前实际关联均已切换:

nmcli -f 802-11-wireless.bssid,ipv4.addresses,ipv4.gateway connection show "<PROFILE_NAME>"
iw dev <WIFI_INTERFACE> link

强制通过 Wi‑Fi 接口验证网关和电脑,避免多网卡路由干扰判断:

ping -I <WIFI_INTERFACE> -c 3 <GATEWAY_IP>
ping -I <WIFI_INTERFACE> -c 3 <PC_WIFI_IP>
ip neigh show dev <WIFI_INTERFACE>

再从电脑验证设备 Wi‑Fi 地址和 SSH:

ping -c 3 <DEVICE_WIFI_IP>
ssh <USER>@<DEVICE_WIFI_IP>

本次故障的判定依据是:切换前设备无法解析网关和电脑的邻居地址;切换到电脑所在的正常 AP 后,网关 Ping、双向 Ping、邻居解析和 Wi‑Fi SSH 均恢复。由此将问题定位到原 AP 的数据链路、VLAN、上联或隔离配置。

开机自动连接与取舍

nmcli connection modify 修改的是持久化连接配置。确认以下设置后,设备重启仍会连接指定 AP:

nmcli -f connection.autoconnect,802-11-wireless.ssid,802-11-wireless.bssid connection show "<PROFILE_NAME>"

应确认:

  • connection.autoconnect 为 yes;

  • BSSID 为目标 AP;

  • 静态 IP、前缀长度和网关正确。

如果目标 AP 断电或不可用,固定 BSSID 的设备不会自动漫游。修复整个无线网络后,可清除 BSSID 绑定恢复漫游。

多网卡路由注意事项

如果有线网卡配置了不属于自身子网的网关,ip route get <GATEWAY_IP> 可能错误地选择有线接口。排查 Wi‑Fi 时应使用 ping -I <WIFI_INTERFACE> 明确指定接口。

对只承担本地维护的有线连接,应单独评估是否删除错误网关并设置 ipv4.never-default yes。修改前先确认设备实际使用的云端出口,避免影响业务连接。

推荐的远程修改顺序

  1. 确认有备用管理链路,例如有线 SSH 或串口。

  2. 记录活动连接名、SSID、BSSID、IP、网关和路由。

  3. 每次只修改一类配置。

  4. 使用 nmcli connection up 应用变更。

  5. 检查 iw ... link、地址、路由和邻居表。

  6. 双向 Ping,再测试 SSH 和业务连接。

  7. 确认持久化设置和开机自动连接。

  8. 验证成功后再清理旧配置或备份。

Discussion

评论

0 条已通过审核

留下评论

友善交流,请勿发布广告或无关内容。