我已经与我的 wifi 连接斗争了很长一段时间。基本上,问题在于它会断开连接,但不会自动重新连接。相反,一个小程序提示我重新连接,这种情况每 10 分钟发生一次。
我的尝试
我以为问题出在网络管理器上,所以我使用 Networkd 进行连接,但我不能仅仅通过启动服务来让它工作,因为必须以某种方式配置 wifi 卡。
网络管理器在后端使用wpa_supplicant,我想知道 NM 是如何使用 wpa_supplicant 的,因为它们对不同的驱动程序有不同的文件,例如:
$ ls /lib/systemd/system/wpa_\t
[email protected]
wpa_supplicant.service
我还检查了 NetworkManager 服务配置文件在失败时重新启动。
我不确定该做什么或尝试什么,并且非常欢迎一些帮助来诊断和解决这个问题。
修复?
网络管理器似乎并不容易配置,至少他们需要:
- 接口(无线或局域网)、网络名称和密码。我们可能需要唤醒接口,并且在我们管理它之前可能最终“不受管理”。
- 另外-我相信-像wpa_supplicant这样的请求者
- 和服务文件来处理崩溃,启动等
我不知道内部结构,但您可以使用 NM 做什么,即使用nm-applet或nmcli配置( 1.)它(例如,我们在其中提供网络密码并选择网络)。我没有看到此客户端用于联网。例如networkctl只是检查连接。所以它不能用networkd来完成(没有applet afaik)。
配置步骤1.的下一个方法是稍低级别的配置,并且正在使用netplan。这是一个很棒的程序,因为编写配置文件可能很困难。我发现这很容易,这是我编写的配置(YAML 格式):
# Let NetworkManager manage all devices on this system
# no, let networkd do it cuz NM troubles this pc
network:
version: 2
renderer: networkd
wifis:
wlp1s0:
dhcp4: true
access-points:
"Xg-wifi-Network":
password: "rh6haeXX"
您还可以添加 DNS 服务器等。这里有一些简洁的示例。 然后使用以下命令:
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
sudo netplan generate && sudo netplan apply
systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service
systemctl status systemd-networkd.service
最后一个命令的输出是:
● systemd-networkd.service - Network Service
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-02-16 19:36:08 GMT; 15ms ago
TriggeredBy: ● systemd-networkd.socket
...
Feb 16 19:36:08 code systemd[1]: Starting Network Service...
Feb 16 19:36:08 code systemd-networkd[8000]: wlp1s0: Gained IPv6LL
Feb 16 19:36:08 code systemd-networkd[8000]: Enumeration completed
Feb 16 19:36:08 code systemd-networkd[8000]: wlp1s0: Connected WiFi access point: OBT For Small Biz_JMTA (d6:35:1d:7e:76:6>
Feb 16 19:36:08 code systemd[1]: Started Network Service.
网络小程序
网络管理器带有简洁的nm-applet。我从@pltanton 尝试了这个,用于 Awesome Window Manager。太好了。
使用不同的服务应该可以解决问题。
尝试运行
sudo systemctl enable systemd-networkd
和sudo systemctl start systemd-networkd
.注意:您可能必须通过运行来禁用 NetworkManager
sudo systemctl disable NetworkManager
。要尝试的另一件事是
sudo systemctl restart NetworkManager
或sudo systemctl restart systemd-networkd
(如果您不想使用 NetworkManager)有关更多信息,请查看此页面。