使用systemd-networkd配置无线

本质上,无线网络的配置都是通过 使用wpa_supplicant连接无线网络 来实现的,网络配置管理工具 netplan网络配置NetworkManager 在管理无线网络底层都是使用 wpa_supplicant ,区别只是配置方式,底层都是调用 wpa_supplicant

Systemd Networkd服务 也是一种配置管理工具,同样可以结合 wpa_supplicant 管理无线网络。

由于当前 systemd 已经成为主要的系统管理框架和组件集,所以使用 systemd-networkd 结合 wpa_supplicant 实现无线网络管理,就是一种非常简洁并且不需要第三方管理工具的实现方法。

systemd-networkd配置

所有位于 /etc/system/network/ 目录下 .network 配置文件都会匹配一个设备实现网络配置。我已经展示了 Systemd Networkd服务 配置有线网络,相似的,我们可以启用无线接口 wlan0 对应配置文件 20-wlan0.network (这个文件名只要以 .network 结尾即可,文件名无要求)

systemd_networkd/20-wlan0.network
1[Match]
2Name=wlan0
3[Network]
4DHCP=yes
  • 配置5GHz无线网络的国家代码 /etc/default/crda (重要:对于使用5GHz无线必须配置) :

5GHz无线网络国家代码配置 /etc/default/crda
1REGDOMAIN=CN
  • 创建 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf :

systemd_networkd/wpa_supplicant-wlan0.conf
 1ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 2update_config=1
 3
 4network={
 5  ssid="office"
 6  key_mgmt=WPA-EAP
 7  identity="USERNAME"
 8  password="PASSWORD"
 9}
10network={
11  ssid="home"
12  key_mgmt=WPA-PSK
13  psk="PASSWORD"
14}
  • 启用 systemd-neworkd wpa_supplicant 服务:

    systemctl enable wpa_supplicant@wlan0
    systemctl start wpa_supplicant@wlan0
    
  • 然后检查systemd服务:

    systemctl status wpa_supplicant@wlan0
    

可以看到 wpa_supplicant@wlan0.service 对应读取配置是 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf 就是我们上面配置的wpa_suplicant对应配置文件

● wpa_supplicant@wlan0.service - WPA supplicant daemon (interface-specific version)
   Loaded: loaded (/lib/systemd/system/wpa_supplicant@.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-03-07 00:02:30 CST; 4s ago
 Main PID: 7738 (wpa_supplicant)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/system-wpa_supplicant.slice/wpa_supplicant@wlan0.service
           └─7738 /sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -Dnl80211,wext -iwlan0

Mar 07 00:02:30 pi400 systemd[1]: Started WPA supplicant daemon (interface-specific version).
Mar 07 00:02:30 pi400 wpa_supplicant[7738]: Successfully initialized wpa_supplicant
Mar 07 00:02:33 pi400 wpa_supplicant[7738]: wlan0: Trying to associate with SSID 'office'
  • 然后检查 ip addr 就可以看到无线网卡获得的IP地址并能够连接internet。

参考