systemd-networkdでArchLinuxのネットワーク設定をする

最近はUbuntuやCentOSなどGUI操作のNetworkManagerがデフォルトのディストリビューションが増えてきた。systemd-networkdはCUI操作だが設定方法がシンプルで分かりやすく個人的には好み。

WiFi接続の設定もwpa_supplicantを使えば特に難しくもない。

今回は、ArchLinuxのネットワークをsystemd-networkdとwpa_supplicantを使って設定する。

スポンサーリンク

systemd-networkdの有効化

systemd-networkdはデフォルトで有効化されていない。有効化。

$ sudo systemctl enable systemd-networkd
$ sudo systemctl start systemd-networkd

アダプタの状態を確認

$ networkctl -a
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 enp9s0           ether              off         unmanaged 
  3 wlp2s0           wlan               off         unmanaged 

3 links listed.

有線LANアダプタの名称(ether)はenp9s0で無線LANアダプタ(wlan)の名称はwlp2s0と確認出来る。

有線LANアダプタの設定

/etc/systemd/network/の下に任意のファイル名で設定ファイルを用意する。
DHCP環境であれば簡単。

/etc/systemd/network/enp9s0-static.network

[Match]
Name=enp9s0

[Network]
DHCP=ipv4

固定IPアドレスなら、[Network]セクションを以下のように設定。(この他にルーティングやDNSの設定が必要だが今回は割愛)

[Network]
Address=192.168.11.1/24

設定ファイルの読み込みとsystemd-networkdの再起動。

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd

無線LANアダプタの設定

追加パッケージのインストール

iwとwpa_supplicantが必要。

$ sudo pacman -S iw wpa_supplicant

systemd-networkdの設定

ネットワークの設定をしないと無線LANアダプタに電源が入らないので、先にsystemd-networkdの設定をしておく。

/etc/systemd/network/wlp2s0-static.network

[Match]
Name=wlp2s0

[Network]
DHCP=ipv4
$ sudo systemctl restart systemd-networkd

アダプタの状態をnetworkctlで確認する。wlanアダプタはconfiguringになっているのがわかる。

$ networkctl -a
IDX LINK   TYPE     OPERATIONAL SETUP      
  1 lo     loopback carrier     unmanaged  
  2 enp9s0 ether    routable    configured 
  3 wlp2s0 wlan     no-carrier  configuring

3 links listed.

WiFiアクセスポイントを検索する

iwで周囲のアクセスポイント検索。

$ sudo iw dev wlp2s0 scan | grep SSID

WiFiアクセスポイントに接続する

wpa_supplicantの設定ファイルを用意する。network=に複数のアクセスポイントを書いておくと、接続出来る所につながる。

wpa_supplicant-wlan0.conf

ctrl_interface=DIR=/var/run/wpa_supplicant
update_config=1
country=JP
ap_scan=1

network={
    ssid="SSID1"
    psk="SSID1の暗号化キー"
    key_mgmt=WPA-PSK
}

network={
    ssid="SSID2"
    psk="SSID2の暗号化キー"
    key_mgmt=WPA-PSK
}

wpa_supplicantを実行して接続。

$ sudo wpa_supplicant -Dwext -iwlp2s0 -cwpa_supplicant-wlan0.conf

まとめ

systemd-networkdによるネットワーク設定は/etc/systemd/network/の下に簡単な設定ファイルを置いておけばOK。

無線LANの場合はこの他に、アクセスポイントの情報を設定ファイルに書いてwpa_supplicantを実行する。

GUI操作のNetworkManagerのように自動で色々やってくれるような気の利いたところは無いが、ifupdownの時代よりCUI操作のネットワーク設定もシンプルでわかりやすくなったと思う。

コメント