NetworkManager、networkd、netplan、ifupdown2、iproute2はどのように正確に対話しますか?

NetworkManager、networkd、netplan、ifupdown2、iproute2はどのように正確に対話しますか?

私はKubuntu 18.04ワークステーションでLinuxネットワーキングを学んでいますが、両方がNetworkManager実行されていますnetworkd-dispatcher

oleg@eclectic:~$ sudo ps -ef | grep -i net
root        56     2  0 Oct11 ?        00:00:00 [netns]
root      1097     1  0 Oct11 ?        00:00:02 /usr/sbin/NetworkManager --no-daemon
root      1098     1  0 Oct11 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1250     1  0 Oct11 ?        00:00:02 /usr/sbin/inetd
root      1593  1097  0 Oct11 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper...

NetworkManager次のように「すべて」を処理するように設定されているようですnetplan

oleg@eclectic:~$ cat /etc/netplan/01-network-manager-all.yaml 
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

私はそれがインストールされていない場合、netplanすべてがそれに渡されると信じています。networkdNetworkManager

また、多くのファイルがありますが、/etc/network/何を処理するのかわかりません。多くのパッケージがこのディレクトリを使用しているようです:

oleg@eclectic:~$ dpkg -S /etc/network
avahi-daemon, ifupdown2, wpasupplicant, openvpn, postfix, netbase, avahi-autoipd, wireless-tools, clamav-freshclam: /etc/network

NetworkManagerインターネット検索の後、最初は と が両方networkd実行されていると思いましたが、生成されnetplanた構成は実際には 1 つだけ実行するのと同じです。しかし、私はこれを検証する方法、作業チェーンを把握する方法、dummy0の私の邪悪な計画に合わせて構成する方法がわかりません。

質問:NetworkManager、networkd、netplanは正確にどのように連携しますか?つまり、コンピュータが起動すると、どのプロセスがどのプロセスに何を渡しますか?net-tools、、、ifupdown2およびディレクトリiproute2のツールは、/etc/network/これらすべてにどのように適していますか?最後に、この問題を直接解決し、コマンドラインを使用して詳細を確認するにはどうすればよいですか?

修正する:私は高レベルの概要を探していません。代わりに、これらのコンポーネントがカーネルレベルまたは同様のレベルでどのように対話、衝突、または衝突を防ぐのかを知りたいです。

答え1

systemd-networkd有効になったら設定に従います。/etc/systemd/network

代わりに、NetworkManager有線接続が見つかった場合は、有線接続への接続を試みるなど、いくつかの自動規則に従います。

どちらもsystemdサービスとして有効および無効になり、systemdはudevを使用してネットワークアダプタ用のデバイスファイルを生成します。通常、2 つを同時に有効にしてはいけませんが、そうする場合は構成が競合しないように注意する必要があります。

netplanネットワーク管理者の1つが起動する前に、独自の構成に基づいて2つのネットワーク管理者の構成を作成します。このように、netplanは実際には構成抽象化であり、systemd-networkdを使用するかNetworkManagerを使用するかは構成の一部です。

iproute2コマンドラインでネットワークインターフェイスを設定するためのツールキット。これには、ネットワーク管理者や以前の ifconfig と同様のリンク設定が含まれます。代わりに、/ etc / network / net-toolsinterfacesのネットワーク構成を使用してインターフェースを構成および構成解除しますipupdownifupdown2

ifupdownまたは、異なるバージョンを使用してネットワークを管理できますが、自動ではありませんが、起動時にsystemdサービスを使用して起動できます。

ifupdown2systemdネットワークインターフェースに似た依存関係グラフを使用してください。また、次のような他のツールの抽象化としても機能します。iproute2

答え2

あなたの質問全体に答えることはありません
が、これらのシステムがどのように互いに調和しているかを理解するのに役立ついくつかの点を見つけました。
これが私を混乱させるので、これが誰かに役立つことを願っています。


1 - 古いネットワークinterfaces構成ファイル、対応するifupifdownコマンド:

これ/etc/network/interfacesネットワーク構成ファイルはかなり古いようですが、まだifupifdownおよびで使用されますifquery

これは、ネットワーク「インターフェース」(MACベースのリンク)と「接続」(IPベースの接続)を開閉する古い方法であるようです。

man 8 ifup説明する:


説明IFUPそしてダウンした場合ファイルのインターフェース定義に応じて、ネットワークインターフェースを構成(または個別に構成解除)するためにコマンドを使用できます。 /etc/ネットワーク/インターフェース

これ重要意味は次のとおりです。

ifup/ifdown にインターフェイスが定義されていない場合は/etc/network/interfaces管理されません。


2 -ifconfig前のコマンドはどうですか?

以前のネットワークパッケージ名は次のとおりです。net-toolsDebianでは、廃止予定の、、、、、、、、およびコマンドarpifconfig含まれています。ipmaddriptunneliwconfignameifnetstatroutevconfig

今、名前付きパッケージを使用したいと思います。iproute2代わりに最新ipiwおよびコマンドssが含まれますifrename


3 - このコマンドでインターフェイスを開いたり閉じたりすることができる場合は、andをip使用する代わりにこのコマンドを使用するのはどうでしょうか?ifupifdown

パッケージまたはPythonの書き換えを介してifup/down行うことは、ネットワーク変更の前後にレガシースクリプトを実行することではありません。ただし、次の内容を参照してください。ifupdownifupdown2ipman ifup

ノート

このプログラムはネットワークインタフェースを直接設定せず、次のような下位レベルのユーティリティを実行します。アイピー汚いことをしてください。

また、見ることができます
インターフェース(5)、IP(8)、ifconfig(8)。

したがって、ifup / ifdownは、廃止されたバックエンドの使用から最新のパッケージで提供されるバックエンドのifconfig使用にアップグレードされたようです。ipiproute2


4 - NetworkManagerはどうですか? (2004年)

~からman 5 NetworkManager

【上下なら】

このセクションには ifupdown 関連のオプションが含まれているため、ifupdown プラグインを使用する場合にのみ有効です。

管理する

true に設定すると、/etc/network/interfaces にリストされたインターフェイスは NetworkManager によって管理されます。 falseに設定すると、NetworkManagerは/etc/network/interfacesにリストされているすべてのインターフェイスを無視します。 NetworkManagerはデフォルトパスを制御するため、そのインターフェイスは無視されるため、NetworkManagerはデフォルトパスを別のインターフェイスに割り当てることができます。

したがって、NetworkManagerがスクリプトを実行できるかどうかはわかりませんが、NetworkManagerがまだ使用されている従来のインターフェイス(「MACベースのハードウェアリンク」)ifup/ifdownから離れることができることは明らかです。ifup/ifdownつまり、ifup はハードウェア接続や NetworkManager などを使用しますが、ifup と NetworkManager の両方を使用しません。


5 - システムネットワーク(2010年)

NetworkManagerよりも最新のバージョンで有線サーバーで使用され、GUI環境が利用できない場合に使用されます。

ただし、ワイヤレス接続の場合は、systemd-networkdを手動で設定するのが難しいため、NetworkManagerが最善の選択肢のようです。

それはman 8 systemd-networkd言う、

systemd-networkd は、.network ファイルで見つかったすべてのリンクのネットワークアドレスとパスを管理します。適切な[Match]セクションがある場合は、systemd.network(5)(実際のネットワークデバイス)を参照してください。これらのリンクでは、デバイスを起動するときに既存のネットワークアドレスとルートを更新します。 .network ファイルのいずれかと一致しないリンクは無視されます。 Unmanagement=yes オプションを使用して、リンクを無視するように systemd-networkd に明示的に指示することもできます。 systemd.network(5) をご覧ください。

この問題を解決できることを願っています。そうでない場合はお知らせください。ありがとうございます。

答え3

これは非常に詳細な質問です。頑張って分析させていただきます。

Netplan:さまざまなバックエンドのYAMLネットワーク構成の抽象化。 NetworkManagerまたはネットワーク用の設定ファイルを生成できます。これを統合インターフェイスとして使用して、必要なネットワーク構成を説明できます。その後、Netplanはシステム要件に応じてNetworkManagerまたはNetworkdをバックエンドとして使用してこの設定を適用します。使用される特定のバックエンドは、Netplan構成ファイルのrenderer:属性によって制御されます。

NetworkManager:可能であれば、ネットワークデバイスとの接続をアクティブに保つように設計された動的ネットワーク制御および構成システム。 NetworkManagerは、主にKubuntuなどのデスクトップシステムを対象としています。ワイヤレスネットワーク、有線ネットワーク、VPNなど、一般ユーザーワークステーションのさまざまなネットワーク設定を管理するのに適しています。

networkd:ネットワークを管理するシステムサービスです。ネットワークデバイスが発生すると、それを検出して設定し、必要に応じてネットワーク設定を動的に作成できます。 Networkd は通常、単純さと自動化を好むサーバー環境で使用されます。

networkd-dispatcher: systemd-networkd 接続状態を変更するためのディスパッチャサービスです。 NetworkManagerのDispatcher.dと機能的に同じです。ネットワークデバイスの状態(動作、停止など)が変更されると、networkd-dispatcherはその設定ディレクトリ内のすべてのスクリプトを実行して、ネットワーク設定の変更が発生したときに対応できるようにします。

/etc/network/: このディレクトリのファイルは、Debian ベースのシステムのネットワーキング用の一般的な設定ファイルであり、ifup コマンドと ifdown コマンドで使用されます。これらのファイルは NetworkManager を実行しているシステムで使用できますが、NetworkManager がネットワーク構成自体を管理し、これらのファイルを無視するため、NetworkManager を実行しているシステムでは通常使用できません。

これらのコンポーネントがどのように連携するかをよりよく理解するには、起動プロセスを見てください。

システムが起動すると、Ubuntuの初期化システムであるsystemdによってネットワークサービスが開始されます。 Netplan は、YAML 構成ファイルを読み取って使用するように構成されたレンダラーに従って、NetworkManager または Networkd の構成ファイルを生成します。 NetworkManagerまたはnetworkd(該当する場合)は、Netplanによって生成された設定ファイルを起動して読み込みます。ネットワーク設定が変更されると、NetworkManager または networkd が適切に応答し、networkd-dispatcher は変更に応答するように設定されたすべてのスクリプトをトリガします。どのツールがどのインターフェイスを管理しているかを決定するための良い出発点は、systemd-networkdで表示されるネットワークリンクの状態を示すsystemdによって提供されるコマンドであるnetworkctlの出力を調べることです。

前述のツールであるnet-tools(廃止予定)、iproute2、およびifupdown2は、Linux上でネットワークインタフェースを操作および設定するためのユーティリティです。 Linuxカーネルと直接対話し、ネットワークインタフェース、ルーティングなどを管理します。 NetworkManagerやネットワーク接続と共存できますが、NetworkManagerまたはネットワーク接続で管理されているシステムでは、設定よりも診断に使用されます。

関連情報