发布于 ,更新于 

使用 systemd-networkd + iwd 代替 Network Manager

参考文档

这两天用 Network Manager 总感觉反应很慢,有的时候扫不到网络,有的时候一个网络需要很长时间才能连接上,于是考虑换一套网络管理工具。
于是选择了 Systemd 内置的 systemd-networkd。但是还得配上一个服务用来管理无线适配器,我选择了比较熟悉的 iwd 和一个长得挺好看的 TUI 配置界面 impala

安装软件包

1
sudo pacman -S iwd impala

为了防止没网找不到配置的文档,我们先不要停用/卸载 Network Manager,等待万事俱备再切换。

配置 systemd-networkd

编辑 /etc/systemd/network/25-wireless.network,写入:

1
2
3
4
5
6
[Match]
Name=wl*

[Network]
DHCP=yes
IgnoreCarrierLoss=3s

无线适配器的名字应该形如 wlp2s0,这里支持通配符,所以写的 wl*

在使用指定 DNS 的时候需要配置 systemd-resolved,它默认的备用 DNS 是 Cloudflare 家的,以防万一我们需要给他改成国内其他公共 DNS。这里我改的是阿里。

/etc/systemd/resolve.conf[Resolve] 字段下的 FallbackDNS 改成自己想改的 DNS。

1
FallbackDNS=223.5.5.5

启用服务

1
2
systemctl disable NetworkManager --now
systemctl enable systemd-networkd systemd-resolved iwd --now

然后使用 impala 联网就好了。执行 impala 命令,Tab 切换到选择网络的地方,按上下键选择网络,按空格输入密码即可。(如果你有 DE 的话应该可以直接从 DE 的设置进行网络连接)

如果还有问题,进行撤销:

1
2
systemdctl disable systemd-networkd systemd-resolved iwd --now
systemctl enable NetworkManager --now

找文档自己想办法去吧。