web-dev-qa-db-ja.com

NetworkManager、networkd、netplan、ifupdown2、およびiproute2はどの程度正確に相互作用していますか?

私はKubuntu 18.04ワークステーションでのLinuxネットワーキングについて学習しており、NetworkManagernetworkd-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...

NetworkManagernetplanによって「すべて」を処理するように構成されているようです:

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

netplanがインストールされていなければ、networkdはすべてをNetworkManagerに引き継ぐと思います。

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

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

いくつかのグーグルの後の最初の考えは、NetworkManagernetworkdの両方が実行されていることですが、netplanは実際には1つだけが何かを実行するような構成を生成します。しかし、これを検証する方法、操作のチェーンを理解する方法、またはダミー0の悪質な計画に合わせて構成する方法がわかりません。

質問: NetworkManager、networkd、およびnetplanはどの程度正確に連携していますか?つまり、コンピュータが起動するときに、どのプロセスが他のどのプロセスに何を渡しますか。 net-toolsifupdown2iproute2などのパッケージのツールと/etc/network/などのディレクトリは、これらすべてにどのように適合しますか?そして最後に、これを自分で理解し、コマンドラインを使用して詳細を学ぶにはどうすればよいですか?

更新:高レベルの概要を探していません。むしろ、これらのコンポーネントがどのように相互作用、競合、またはカーネルレベルなどでの競合を回避しているかを知りたいのです。

21
Oleg

systemd-networkdを有効にすると、/etc/systemd/networkの構成が有効になります

一方、NetworkManagerは、見つかった場合に有線接続に接続しようとするなど、いくつかの自動ルールに従います。

systemdサービスとして有効化および無効化され、udevを使用するsystemdがネットワークアダプター用のデバイスファイルを作成します。一般的には、両方を同時に有効にするべきではありませんが、有効にする場合は、それらの設定が競合しないように注意する必要があります。

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

iproute2は、コマンドラインでネットワークインターフェイスを構成するためのツールのパッケージです。ネットワークマネージャーや古いifconfigと同様のリンク構成が含まれます。 net-toolsipupdownおよびifupdown2は、/ etc/network/interfacesのネットワーク構成を使用して、インターフェースを構成および構成解除します。

ifupdownまたはその他のバージョンを使用してネットワークを管理できますが、自動ではなく、systemdサービスを使用して起動時にネットワークを開始できます。

ifupdown2は、systemdと同様の依存関係グラフを使用しますが、ネットワークインターフェイスを使用します。さらに、iproute2のような他のツールへの抽象化として機能します

16
jdwolf

質問全体に答えようとはしませんが、
しかし、これらのシステムがどのように組み合わされるかを理解するのに役立ついくつかのことがわかりました。
これが私を非常に混乱させたので、これが誰かを助けることを願っています


1-古いネットワークinterfaces構成ファイル、およびifupifdownコマンド:

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

これらは、ネットワークの「インターフェース」(MACベースのリンク)と「接続」(IPベースの接続)を上下に動かすための古い方法のようです。

man 8 ifupさんのコメント:

説明
ifupおよびifdownコマンドを使用して、ファイル内のインターフェース定義に基づいてネットワークインターフェースを構成(または構成解除)できます/ etc/network/interfaces

重要の意味はこれです:

インターフェースがインターフェースで定義されていない場合、ifup/ifdownはそのインターフェースを管理しません。


2-古いifconfigコマンドはどうですか?

Debian for meには、レガシーネットワークパッケージnet-toolsが含まれています。これには、減価償却が含まれています:arpifconfigipmaddriptunneliwconfignameifnetstatroute、およびvconfigコマンド。

iproute2パッケージおよびipiwss、およびifrenameコマンド。


3-ipがインターフェイスを起動または停止できる場合は、ifupやifdownではなく、それを使用しないのはなぜですか?

ifup/downは(ifupdownパッケージまたは推定Python ifupdown2で書き換え)を介して)実行しますが、ipが実行しないのは、ネットワーク変更の前後にレガシースクリプトを実行することです。 ifupの発言:

[〜#〜]メモ[〜#〜]

プログラムはネットワークインターフェイスを直接設定しません。 ipなどの低レベルのユーティリティを実行して、ダーティな作業を行います。

参照
interfaces(5)、ip(8)、ifconfig(8)。

したがって、ifup/ifdownが、廃止されたifconfigバックエンドの使用から、ipバックエンドの使用にアップグレードされたようです。


4-NetworkManagerはどうですか?

からman 5 NetworkManager

[IFUPDOWN]

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

管理

Trueに設定すると、/ etc/network/interfacesにリストされているインターフェースはNetworkManagerによって管理されます。 falseに設定すると、/ etc/network/interfacesにリストされているインターフェースはNetworkManagerによって無視されます。 NetworkManagerがデフォルトルートを制御することに注意してください。そのため、インターフェースは無視されるため、NetworkManagerはデフォルトルートを他のインターフェースに割り当てることがあります。

したがって、NetworkManagerがifup/ifdownスクリプトも実行できるかどうかは不明確ですが、明確なのは、NetworkManagerがifup/ifdownが使用しているインターフェースを回避できることです。


5-systemd-networkd

これはNetworkManagerよりも古く、有線サーバーやGUI環境が利用できない場合に使用されているようです。

しかし、ワイヤレス接続の場合、systemd-networkdを手動で構成するのはより困難であるため、NetworkManagerが適しています。

man 8 systemd-networkdそれは言う、

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

これで大丈夫だと思いますが、そうでない場合はお知らせください。ありがとう。

4
Elliptical view