私は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
すべてがそれに渡されると信じています。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
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-tools
interfacesのネットワーク構成を使用してインターフェースを構成および構成解除しますipupdown
。ifupdown2
ifupdown
または、異なるバージョンを使用してネットワークを管理できますが、自動ではありませんが、起動時にsystemdサービスを使用して起動できます。
ifupdown2
systemd
ネットワークインターフェースに似た依存関係グラフを使用してください。また、次のような他のツールの抽象化としても機能します。iproute2
答え2
あなたの質問全体に答えることはありません
が、これらのシステムがどのように互いに調和しているかを理解するのに役立ついくつかの点を見つけました。
これが私を混乱させるので、これが誰かに役立つことを願っています。
1 - 古いネットワークinterfaces
構成ファイル、対応するifup
&ifdown
コマンド:
これ/etc/network/interfaces
ネットワーク構成ファイルはかなり古いようですが、まだifup
、ifdown
およびで使用されますifquery
。
これは、ネットワーク「インターフェース」(MACベースのリンク)と「接続」(IPベースの接続)を開閉する古い方法であるようです。
man 8 ifup
説明する:
説明IFUPそしてダウンした場合ファイルのインターフェース定義に応じて、ネットワークインターフェースを構成(または個別に構成解除)するためにコマンドを使用できます。 /etc/ネットワーク/インターフェース。
これ重要意味は次のとおりです。
ifup/ifdown にインターフェイスが定義されていない場合は/etc/network/interfaces
管理されません。
2 -ifconfig
前のコマンドはどうですか?
以前のネットワークパッケージ名は次のとおりです。net-tools
Debianでは、廃止予定の、、、、、、、、およびコマンドarp
がifconfig
含まれています。ipmaddr
iptunnel
iwconfig
nameif
netstat
route
vconfig
今、名前付きパッケージを使用したいと思います。iproute2
代わりに最新ip
、iw
およびコマンドss
が含まれますifrename
。
3 - このコマンドでインターフェイスを開いたり閉じたりすることができる場合は、andをip
使用する代わりにこのコマンドを使用するのはどうでしょうか?ifup
ifdown
パッケージまたはPythonの書き換えを介してifup/down
行うことは、ネットワーク変更の前後にレガシースクリプトを実行することではありません。ただし、次の内容を参照してください。ifupdown
ifupdown2
ip
man ifup
ノート
このプログラムはネットワークインタフェースを直接設定せず、次のような下位レベルのユーティリティを実行します。アイピー汚いことをしてください。
また、見ることができます
インターフェース(5)、IP(8)、ifconfig(8)。
したがって、ifup / ifdownは、廃止されたバックエンドの使用から最新のパッケージで提供されるバックエンドのifconfig
使用にアップグレードされたようです。ip
iproute2
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またはネットワーク接続で管理されているシステムでは、設定よりも診断に使用されます。