![NetworkManager 显示错误的安全类型](https://linux22.com/image/143922/NetworkManager%20%E6%98%BE%E7%A4%BA%E9%94%99%E8%AF%AF%E7%9A%84%E5%AE%89%E5%85%A8%E7%B1%BB%E5%9E%8B.png)
我正在开发一个向其接入点发送重新配置命令的应用程序。接入点应将自身重新配置为受 WPA2 保护,成为开放网络。接入点必须自行重新启动才能使配置生效。
我的问题是,在 AP 重新启动后,无论我做什么,NetworkManager 仍然显示 AP 具有 WPA2 安全性。我知道它不会,因为我可以在不输入密码的情况下连接到它。我还在 AP 的配置中确认它没有使用任何安全性。我能够解决此问题的唯一方法是关闭无线电然后再打开并通过 nmcli 重新发出扫描或重新启动 NetworkManager。
这两个选项在我的应用程序中都不太理想。我在 iwlist 扫描和 wpa_cli 扫描中重新发出了扫描,它确实显示了没有安全性的 AP。
我在运行 Ubuntu 16.04 的虚拟机和 Debian Stretch 开发机器中看到了这一点。
我试图了解 NetworkManager 在哪里接收其 AP 列表(假设它是 iwlist 或 wpa_cli),以及为什么它似乎正在缓存该安全类型。
答案1
NetworkManager 从 wpa_sypplicant 获取其扫描列表并将其缓存。然而,根据具体情况,它只会偶尔进行扫描或在客户端请求时进行扫描。原因是扫描会降低您的 WiFi 吞吐量和延迟。
尝试触发重新扫描,例如通过nmcli device wifi rescan
.
当然,直接通过 D-Bus 或 libnm API 也可以实现同样的效果。