2023-06-08

【LMDE】systemd-networkd を使ってみた

LMDE で systemd-resolved が未起動であったことから調べて行くと、どうも systemd-networkd もセットで使うのが一般的?のような雰囲気でした。せっかくなので systemd-networkd を立ち上げてみようと思います。

参考にしたのはこちらの情報です。

SystemdNetworkd - Debian Wiki

systemd-networkd入門

 

まずは /etc/network/interfaces の退避です。

$ sudo mv /etc/network/interfaces /etc/network/interfaces.save

続いて、systemd-networkd を有効化します。(サービスの起動はまだ)

$ systemctl enable systemd-networkd

Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /lib/systemd/system/systemd-networkd.service.
Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /lib/systemd/system/systemd-networkd.socket.
Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /lib/systemd/system/systemd-networkd-wait-online.service.

systemd-networkd 用の設定ファイルを作成します。ファイル名はなんでもいいそうです。なんとなく「〜.network」が推奨?されてるみたいです。

sudo touch /etc/systemd/network/eno1.network

定義内容はこんな感じです。IP アドレスは DHCP ではなく固定アドレスを指定、MTU は QNAP のジャンボフレームにあわせて調整してます。

[Match]
Name=eno1

[Link]
MTUBytes=9000

[Network]
Address=192.168.xx.yy/24
Gateway=192.168.xx.1

systemd-networkd の機能は NetworkManager と競合するそうなので、事前に NetworkManager を停止しておきます。

$ systemctl stop NetworkManager.service NetworkManage-dispatcher.service

NetworkManager を停止すると Cinnamon のパネル上のアイコンも消えてなくなってしまいます。

準備が整ったのでいよいよ systemd-networkd を起動します。

$ systemctl start systemd-networkd.service

systemd-networkd が起動できたら反映確認です。

$ networkctl status
●   State: routable                                  
  Address: 192.168.xx.yy on eno1
           fe80::c2a6:f9d2:zzzz:zzzz on eno1
  Gateway: 192.168.xx.1 (NEC Platforms, Ltd.) on eno1

 6月 07 09:32:57 systemd[1]: Starting Network Service...
 6月 07 09:32:57 systemd-networkd[126918]: eno1: Gained IPv6LL
 6月 07 09:32:57 systemd-networkd[126918]: Enumeration completed
 6月 07 09:32:57 systemd[1]: Started Network Service.

Gateway に「NEC」という表示が出てきてビックリしました。確かにルーターは NEC の Aterm です。

$ inxi -ixxx
Network:   Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Gigabyte driver: r8169 v: kernel 
           port: f000 bus ID: 03:00.0 chip ID: 10ec:8168 class ID: 0200 
           IF: eno1 state: up speed: 1000 Mbps duplex: full mac: nn:nn:nn:nn:nn:nn 
           IP v4: 192.168.xx.yy/24 type: noprefixroute scope: global broadcast: 192.168.xx.255 
           IP v6: zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:fed9:f740/64 type: dynamic mngtmpaddr noprefixroute scope: global 
           IP v6: fe80::c2a6:f9d2:zzzz:zzzz/64 type: noprefixroute scope: link 
           WAN IP: nnn.nnn.nnn.nnn 

こちらも大丈夫そうです。

$ resolvectl status
Global
           Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
    resolv.conf mode: stub
Fallback DNS Servers: 2606:4700:4700::1111 2606:4700:4700::1001

Link 2 (eno1)
    Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 2409:11:a720:f00:8222:a7ff:fea8:f0f0
       DNS Servers: 2409:11:a720:f00:8222:a7ff:fea8:f0f0

systemd-resolved も元気に動いているようです。

 

 

最後は次回の PC 起動時に NetworkManager が動かないように無効化します。

systemctl disable NetworkManager.service

これにて NetworkManager から systemd-networkd への移行が完了です。

 

 

systemd-networkd に移行して何か良いことがあるのかというと、サスペンドから復帰した直後に数十秒間インターネットにアクセスできない、という事象が解消したかもしれない、ということでしょうか。

まだ回数がこなれていないのでもう少し様子見が必要ですが、今のところは大丈夫そうです。

 

(追記)
PC を再起動したところ、ネットワークマネージャーというアプレット(network@cinnamon.org)アプリがバッテンマークのままになってしまったのでパネルから削除してみました。

目障りなのでアプレットを削除してしまえ〜

 

するとどうでしょう。

余計に目障りなアプレットが表示されるようになった

 

なんか別のアプレットが登場してきました。赤いバッテンマークなので前よりも目障りです。

このアプレットはパネル上から削除できないみたいだったので、network@cinnamon.org を復活させました。

 

(追記)
その後、systemd-networkd をやめて NetworkManager に戻してしまいました。

サスペンドからの復帰時にインターネット接続ができないじょうたいになってしまいました。システムログにはこんなメッセージが記録されていまいした。

systemd-networkd[738]: eno1: Could not set route: Nexthop has invalid gateway. Network is unreachable
systemd-networkd[738]: eno1: Failed

ip link set xxxxxx down/up でも回復せず、PC の再起動で回復しました。あとから知ったのですが、systemctl restart systemd-networkd で回復できるようです。

エラーメッセージをキーに調べてみると、過去には systemd の修正で解消したこともあったようです。Debian 12 ベースの LMDE 6 がリリースされるまでは NetworkManager のままで行こうかと思いました。