用語
NetworkManagerとは
NetworkManager (ネットワークマネージャー) は、libudevやその他のLinuxカーネルインタフェース上で動作し、高水準のネットワーク設定用のインタフェースの提供も行うデーモンである。
- 主な役割: 有線LAN、無線LAN、VPNなどの接続を動的に切り替え、ネットワーク設定を容易にします。
- 特徴: 従来の静的な設定ファイルによる管理とは異なり、ネットワークの状態変化(ケーブルの抜き差しやWi-Fiの移動など)に即座に対応できる柔軟性を持っています。
- 利用シーン: 主にデスクトップやノートPC向けに開発されましたが、現在の主要なディストリビューション(Ubuntu, RHEL等)ではサーバー環境でも標準的に利用されています。
2014年くらいから広く普及したようです。これより前はnetwork scriptsと呼ばれる仕組みだったらしい。
systemd-networkd
systemd-networkdは、Linuxのsystemdに含まれるネットワーク管理デーモンです。主に、ネットワークインターフェースの設定と管理を行います。特にサーバー環境やコンテナ環境での利用に適しており、シンプルで効率的なネットワーク管理を提供します。
Netplanとは
Netplanは、Ubuntu 17.10以降で採用されているネットワーク設定の抽象化レイヤー(フロントエンド)です。
従来のLinux(Ubuntu/Debian)では /etc/network/interfaces というファイルで設定を行っていましたが、現在はNetplanがその役割を担っています
NetworkManager(及びsystemd-networkd)Netplanの違い
Netplanはネットワーク設定の抽象化レイヤー(フロントエンド)であり、NetworkManagerは実際に通信を制御するデーモン(バックエンド)です。この二つの関係は、建築における「司令塔(設計図)」と「施工業者」に例えることができます。
-
Netplan(司令塔・設計図)
Netplanは、OS全体のネットワークがどうあるべきかを定義する役割を担います。- 役割: 「このPCは固定IPアドレス 192.168.1.10 を使う」といったルールを、人間が読みやすいYAML形式で記述します。
- 管理権限: どのツール(NetworkManagerかsystemd-networkdか)に実務を任せるかを決定する権限を持っています。
- 動作: システム起動時にYAMLファイルを読み込み、バックエンドが理解できる形式の設定ファイルを自動生成して渡します。
-
NetworkManager(施工業者・現場監督、systemd-networkdも含む)
NetworkManagerは、Netplanから渡された指示に基づいて、実際にデバイスを動かす役割を担います。- 役割: Netplanが作成した指示書を読み取り、LANカードを有効化したり、Wi-Fiの電波を探して接続を確立したりします。
- 得意分野: ノートPCのように、移動に合わせてWi-Fiを切り替えたり、VPNを動的に繋いだりといった、状況に応じた柔軟な対応(現場判断)を得意とします。
- 操作性: デスクトップのGUI設定画面や nmcli コマンドを通じて、ユーザーが直接指示を出すことも可能です。
NetworkManagerとsystemd-networkdの比較
| 比較項目 | systemd-networkd | NetworkManager |
|---|---|---|
| 主な用途 | サーバー、クラウド、コンテナ | デスクトップ、ノートPC |
| Wi-Fi管理 | 不得意(wpa_supplicant等が必要) | 得意(スキャンや自動接続が容易) |
| 操作インターフェース | 設定ファイル(.network)の編集が主 | GUI、nmcli、nmtui(対話的操作) |
| 動的な切り替え | 不向き(環境の変化に弱い) | 得意(場所に応じたプロファイル管理) |
| VPN / モバイル通信 | サポートが限定的 | 強力なサポート(プラグインが豊富) |
| リソース消費 | 非常に軽量(systemd統合) | 比較的多め(多機能なため) |
最も、最近はサーバ・クラウドだろうが以下の理由でNetworkManagerで管理することが多いようです。
-
使いやすさ:
NetworkManagerは、GUIやコマンドラインツール(nmcliやnmtui)を通じて直感的な操作ができるため、設定や管理が容易です。 -
動的なネットワーク管理:
NetworkManagerは、環境の変化に応じてネットワーク接続を自動的に切り替える能力があり、特にモバイルやラップトップ環境での利便性が高いです。 -
VPNやモバイル通信のサポート:
NetworkManagerは、さまざまなVPNプロトコルやモバイルデータ接続の管理を強力にサポートしています。 -
統合性:
近年の多くのLinuxディストリビューションでは、NetworkManagerがデフォルトでインストールされており、他のサービスとの統合も進んでいます。
イメージに起こすと・・・
Ubuntu22.04
Netplan(司令塔)は部下に指示だけをしていて、指示をもらったNetworkManager(現場監督)は自分が持っている設計書を元にネットワークインターフェースを操作します。
指示だけして、あとは知らんぷり・・・嫌な上司みたいな感じがしますね

Ubuntu24.04
Netplan(司令塔)は自分が設計書を持っています。その設計書を元にNetworkManager(現場監督)はその指示に基づいてネットワークインターフェースを操作しています。
このように司令塔が全部管理することになるので、「設定はどこだ?」と探し回る必要がなくなり、netplan status などのコマンド一つで、システム全体の状況を正確に把握できるようになりました。人間が管理しやすくなりました。

環境
ProxmoxVE上のUbuntu24.04と22.04のGUIを触ってきたいと思います。
ハンズオン
Ubuntu24.04
まずは24.04で触っていきます。
Ubuntuの場合、GUIでいうと、これがNetworkManagerに該当するらしいです。
設定 > ネットワーク
有線にプラスマークがあるので、これを押下してみます。

ハードウェアの情報やIPv4がどのように割り当たっているか、どのDNSを参照するのかやスタティックルートなどが確認できます。


GUIで設定を変えてみます。
検証用にネットワークデバイスを追加します。


設定を変えてみます。
設定後、追加(Apply)を押下します。

接続済みとなり、設定が反映されました。

NetworkManagerで管理しているものは/etc/NetworkManager/system-connections/配下に記載がされるようです。実際に設定を見てみると、何もファイルなどがありません。
これはUbuntu24.04の仕様変更が関与しているようです。
root@LPIC:/etc/NetworkManager# cd
root@LPIC:~# cd /etc/NetworkManager/system-connections/
root@LPIC:/etc/NetworkManager/system-connections# ls -la
合計 8
drwxr-xr-x 2 root root 4096 10月 28 04:11 .
drwxr-xr-x 8 root root 4096 3月 17 22:41 ..
Ubuntu24.04だとNetplanでyamlファイルで管理しているようです。
renderer: NetworkManagerと記載されいることからNetworkManagerがこの設定を管理していることがわかります。
このようにNetworkManagerからNetplanに書き出されているのは、Netplanの双方向統合(Bidirectional integration)によるもので、24.04からの機能の様です。
root@LPIC:/etc/NetworkManager/system-connections# cd /etc/netplan/
root@LPIC:/etc/netplan# ls
01-network-manager-all.yaml 90-NM-396b7a4b-28fd-4107-b444-dc50550bc750.yaml
50-cloud-init.yaml
root@LPIC:/etc/netplan# cat 90-NM-396b7a4b-28fd-4107-b444-dc50550bc750.yaml
network:
version: 2
ethernets:
NM-396b7a4b-28fd-4107-b444-dc50550bc750:
renderer: NetworkManager
match:
name: "ens19"
addresses:
- "192.168.0.30/24"
dhcp6: true
wakeonlan: true
networkmanager:
uuid: "396b7a4b-28fd-4107-b444-dc50550bc750"
name: "プロファイル 1"
passthrough:
ethernet._: ""
ipv4.address1: "192.168.0.30/24,192.168.0.1"
ipv4.method: "manual"
ipv6.addr-gen-mode: "default"
ipv6.ip6-privacy: "-1"
proxy._: ""
Ubuntu22.04
Ubuntu22.04より前だと仕様が異なるようなので、環境を用意してみます。
以下からDesktopのISOをダウンロードします。
設定を見ると以下のようになっています。
ここから設定を変えてみます。


24.04と同じように/etc/NetworkManager/system-connections/を見てみると、こちらにファイルが作成されていることがわかります。

中身を見てみます。先ほど設定された内容が記載されていることがわかりますね。
root@test-Standard-PC-i440FX-PIIX-1996:/etc/NetworkManager/system-connections# cat プロファイル\ 1.nmconnection
[connection]
id=プロファイル 1
uuid=09c235b1-d7e0-44f6-b96a-932e92c1f2b9
type=ethernet
timestamp=1776494216
[ethernet]
[ipv4]
address1=192.168.0.30/24,192.168.0.1
method=manual
[ipv6]
addr-gen-mode=stable-privacy
method=auto
[proxy]
Netplan側も確認すると、ファイルが無いことがわかります。
このように仕様がバージョンで異なっています。
root@test-Standard-PC-i440FX-PIIX-1996:/etc/NetworkManager/system-connections# cd /etc/netplan/
root@test-Standard-PC-i440FX-PIIX-1996:/etc/netplan# ls
01-network-manager-all.yaml
CUIでの設定方法は今後。。。



