systemd-networkdを使って固定IPを簡単に設定する

nogajun
nogajun

Debianで固定IPにするとき、以前は/etc/network/interfaces/etc/network/interfaces.d/以下に設定を書いたり、Network-managerのnmcliを使って設定していましたが今はsystemd-networkdを使えば簡単に固定IPにできるのでメモ。


はじめに/etc/network/にあるinterfacesをリネームして保存します。使わないので無くてもよいのですが念の為に保存しておきます。

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

systemd-networkdを有効にします。

sudo systemctl enable systemd-networkd

ip aでNICの名前を確認します。名前がens18とわかったので控えておきます。

ip a
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 5e:9d:bb:f7:83:b6 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 192.168.0.110/24 brd 192.168.0.255 scope global ens18

/etc/systemd/network/以下にlan0.networkという名前で以下のようにNICの設定ファイルを作成します。

[Match]
Name=ens18

[Network]
Address=192.168.0.110/24
Gateway=192.168.0.100
DNS=192.168.0.100

設定ファイルの詳細はman systemd.networkをすると丁寧に説明してあるので、それを見てもらうとして、これを説明するとMatchセクションのNameに調べておいたNICのデバイス名、Networkセクションには、ネットワークのそれぞれの設定を書いています。

あとはこれでマシンを再起動すれば、NICを固定IPにする設定は終わりです。超簡単!

今回初めてsystemd-networkdを使ったけど、調べてみると細かい設定がいろいろできるようなので、これからネットワーク周りはsystemd-networkdを使うのが良さそう。


systemd-networkdで1つのNICに複数IPを割り当てる

蛇足になるから書かなかったけどやっぱり書いておきます。

固定IPが必要になったのは、Samba ADで必要になったからだけど、問題はNIC1つしかないマシンにSamba AD用の固定IPを割り当てる必要がありました。

LinuxではNICに複数IPを割り当てられるので、それで割り当てればとすぐに思いつきますが、問題はsystemd-networkdで複数IPを割り当てるにはどうしたらいいかです。

manを見てもよくわからなかったので検索したところ、NetworkセクションにAddressを2つ書けばいいという拍子抜けするぐらい簡単な答えでした。ということで、こんな感じに書くと設定されました。

[Match]
Name=ens18

[Network]
Address=192.168.0.110/24
Address=192.168.0.111/24
Gateway=192.168.0.100
DNS=192.168.0.100

これは複数IPだけ必要だったのでAddressを並べて書いたけど、別の場所とつなぐ場合はAddressセクションを複数作って書けばOK。

こんなに簡単とは。これからネットワーク周りはsystemd-networkd使ったほうがいいな。