systemd-networkdは、systemdに統合されたネットワーク管理デーモンで、サーバーやコンテナなど軽量なLinux環境でネットワーク構成を効率的に管理する仕組みを提供します。
systemd-networkdとは
systemd-networkdは、ネットワークインターフェイスを自動検出し、定義ファイルに応じて構成・制御を行うシステムデーモンです。
特にデスクトップ向けのNetworkManagerとは異なり、GUIを必要としない軽量な構成が特徴です。
systemd-nspawnコンテナやサーバー用途では標準的なネットワーク管理方法として広く利用されています。
主な特徴:
- 静的IP・DHCP設定の両対応
- VLAN、Bonding、Bridgeなどの仮想デバイスサポート
- systemd-resolvedとの統合によるDNS管理
- systemctlコマンドで一元的に制御可能
基本構成ファイルの種類
systemd-networkdの設定ファイルはすべて/etc/systemd/network/
内に保存されます。
ファイル拡張子 | 用途 |
---|---|
.network | 各ネットワークインターフェイスの詳細設定(DHCPや静的IP) |
.netdev | 仮想デバイス(Bridge, VLAN, Bondなど)の作成 |
.link | MACアドレス・デバイス名・MTUなどリンク属性を制御 |
ファイル名の数字が小さい順に読み込まれ、後のファイルが設定を上書きします。たとえば10-eth0.network
→ 20-bond0.netdev
の順です。
サービスの起動と管理
systemd-networkdを利用するには、サービスを有効化および起動します。
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
状態確認:
systemctl status systemd-networkd.service
また、ネットワーク状態を一覧するには次のコマンドを使用します。
networkctl list
networkctl status eth0
基本設定例
DHCPで自動設定を行う場合
[Match]
Name=eth0
[Network]
DHCP=yes
固定IPを設定する場合
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
手動で割り当てる場合に利用します。設定を反映するには以下を実行します。
sudo systemctl restart systemd-networkd
VLANの作成例
[NetDev]
Name=vlan10
Kind=vlan
[VLAN]
Id=10
[Match]
Name=vlan10
[Network]
Address=192.168.10.10/24
Gateway=192.168.10.1
VLAN ID 10の仮想デバイスを作成し、静的アドレスを設定します。
Bridge(ブリッジ)の設定例
[NetDev]
Name=br0
Kind=bridge
[Match]
Name=br0
[Network]
Address=192.168.1.10/24
Gateway=192.168.1.1
DNS=8.8.8.8
[Match]
Name=eth0
[Network]
Bridge=br0
systemd-resolved連携
.network
ファイルでDNSを指定する場合や、DHCP経由でDNSを取得する場合、systemd-resolved
との連携が必要です。
以下のコマンドで正しく動作させます。
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
これによりDNS解決がsystemd-managed方式になります。
主な[Network]セクションオプション
オプション名 | 説明 |
---|---|
DHCP= | DHCPモードを設定(yes , ipv4 , ipv6 ) |
Address= | 静的IPとサブネットを指定(例:192.168.1.10/24 ) |
Gateway= | 既定ゲートウェイ設定 |
DNS= | DNSサーバーのアドレスを指定 |
Domains= | DNS検索ドメインを定義 |
IPv6PrivacyExtensions= | 一時IPv6アドレスを使用する |
IPv6AcceptRA= | ルーター広告受信を許可 |
BindCarrier= | 特定インターフェイス有効時のみ起動 |
LinkLocalAddressing= | リンクローカルアドレスの自動生成制御 |
これらの設定はsystemd.network(5)
マニュアルで詳細定義されています。
設定の再読込と確認
設定変更後は以下の手順で再読込します。
sudo systemctl daemon-reload
sudo systemctl restart systemd-networkd
ネットワーク状態は以下で確認できます。
networkctl status
systemd-networkd-wait-onlineとは
systemd-networkd-wait-online.service
は、ネットワーク接続の確立完了を待機してから他のサービスを起動するためのユニットです。
起動時にネットワーク接続を完全に確立させたいサーバー構成で有用です。デフォルトのタイムアウトは120秒で、--timeout
オプションで変更できます。
トラブルシューティング
・ログの確認
journalctl -u systemd-networkd
・競合サービス(NetworkManager等)が動作中なら停止
sudo systemctl disable NetworkManager
・networkctl
でインターフェイスがconfiguring
のままの場合は設定ミスやDHCPサーバー応答なしが原因です。
まとめ
systemd-networkdは、軽量でスクリプト依存性の少ないネットワーク管理を実現するシステムレベルデーモンです。.network
、.netdev
、.link
ファイルを駆使すれば、単一サーバーの静的IP設定から複雑なVLAN・ブリッジ構成まで柔軟に対応します。
NetworkManagerやnetplanと異なり、明示的で再現性の高い設定管理が可能なため、特にサーバーや組み込み環境での利用に最適です。
コメント