当 NetworkManager 控制系统上的 WiFi 连接时,它如何选择连接哪个网络?
我知道 connection.autoconnect-priority 设置,但我有兴趣了解当有多个共享优先级=0 的自动连接网络可用时用于选择连接的算法。
答案1
NetworkManager
根本不会这样做;相反,它wpa_supplicant
会这样做。NetworkManager
只是尝试让每个活动连接保持在线,然后根据所涉及的连接类型将工作委托给其他实用程序。对于无线和某些有线 802.1x 连接,这就是 的工作wpa_supplicant
。
那么,wpa_supplicant
它是如何做到的呢?每个可以连接的网络接口都会按照以下每个条件寻找连接,直到只有一个网络可以连接:
- 扫描潜在网络
- 按优先级对扫描的网络进行排序,并连接到优先级最高的网络
- 按连接强度对优先网络进行排序,并连接到最强的网络
- 按配置文件中的顺序排列网络并连接到第一个网络
因此,如果其他方法都失败了,配置文件就是权威命令。您可以阅读源代码。