systemd v210からsystemdはudevとnetworkdによるネットワーク設定がサポートされるようになった。
これを利用するとNetworkManagerやnetctlといったものを利用せずにsystemd自身でネットワークの設定が行えるようになる(既存のネットワークマネージャの類を使い続けることもできる)。
以下はArch Linuxでの例を挙げるけど、CoreOSやDebianなどでもだいたい同じだと思う。
networkdの設定ファイル
systemd-networkdでの設定は/etc/systemd/network
ディレクトリに.network
、.netdev
、.link
ファイルを配置していくことになる。
.networkファイル …… マッチするデバイスにネットワークを設定するファイル。
.netdevファイル …… マッチする環境に仮想ネットワークデバイスを作成するファイル。
.linkファイル …… マッチするデバイスのリンクを設定するファイル。
仮想デバイスとかブリッジとか込み入ったことをしない場合は、.networkファイルだけで事足りる。
resolv.conf
あと、systemd-resolvedは/etc/resolv.conf
を更新してくれない。代わりに/run/systemd/resolve/resolv.conf
を生成するので、これに対してリンクを張る必要がある。
# オリジナルをバックアップ
sudo mv /etc/resolv.conf{,.orig}
# リンクを張る
# systemd 214からファイルパスが変わった模様
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
# systemd 213以前はこちらのパス
sudo ln -s /run/systemd/network/resolv.conf /etc/resolv.conf
DHCP
DHCPを設定する場合は素直にdhcpcdでも起動しておくのが一番手っ取り早いけど、それだと話が終わってしまうのでsystemd-networkdで設定してみる。
/etc/systemd/network
にdhcp.network
みたいなファイルを作成する。ファイル名は任意。
[Match]
Name=en*
[Network]
DHCP=yes
こんな感じのファイルを作成して、systemd-networkdを再起動してあげると有効になる。
dhcpcdやnetctlを使用している場合は止めておくこと。
sudo systemctl restart systemd-networkd.service
ユニットじゃないのでdaemon-reloadは必要なさそうな気がするけど、もしも設定ファイルを認識しない場合はdaemon-reloadしてみるといいかもしれない。
sudo systemctl daemon-reload
セクション名やキーは大文字小文字を区別するっぽいので注意(nameとか書いてハマった)。
ちなみにMatchのNameのところはワイルドカードで指定できるので、インターフェイスが複数ないのであればざっくり指定してもいいかも。
おそらくsystemdとか使ってるケースではインターフェイス名もeth0とかじゃなくてenp2s0みたいなやつだと思うので(この命名規則については参考に挙げているリンクを参照)。
ざっくり言うとOSが認識した順にeth0, eth1とかするんじゃなくて、NICの刺さってるスロットとかの物理的な位置を名前に使おうよ、というお話。
どんな名前かはip link
やifconfig
で確認可能。
固定IPアドレス
固定IPアドレスの場合も設定方法はだいたい同じで、.networkに書く内容が違ってくるだけ。
例えばstatic.network
みたいなファイルを作成する。ファイル名は任意。
[Match]
Name=en*
[Network]
Address=192.168.1.22/24
Gateway=192.168.1.254
DNS=192.168.1.254
他にどんな設定が書けるのかはman systemd.network
(とかman systemd.link
)とかを参照。
ブリッジとか
ブリッジとかVLANとかはCoreOSのIntroduction to networkd, network managment from systemdに具体例があるので参考に。
Docker関係
Dockerを使うとdocker0みたいなブリッジが必要になるけど、この辺はdockerがbridge-utils(brctl)とかでうまくやってくれるみたいで、特に何も設定しなくても動いた。
参考
networkdの設定について
- systemd-networkd (日本語) - ArchWiki
- Introduction to networkd, network managment from systemd
- Network Configuration
networkdができた背景
インターフェイス名の命名規則
0 件のコメント:
コメントを投稿