私は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つだけが何かを実行するような構成を生成します。しかし、これを検証する方法、操作のチェーンを理解する方法、またはダミー0の悪質な計画に合わせて構成する方法がわかりません。
質問: NetworkManager、networkd、およびnetplanはどの程度正確に連携していますか?つまり、コンピュータが起動するときに、どのプロセスが他のどのプロセスに何を渡しますか。 net-tools
、ifupdown2
、iproute2
などのパッケージのツールと/etc/network/
などのディレクトリは、これらすべてにどのように適合しますか?そして最後に、これを自分で理解し、コマンドラインを使用して詳細を学ぶにはどうすればよいですか?
更新:高レベルの概要を探していません。むしろ、これらのコンポーネントがどのように相互作用、競合、またはカーネルレベルなどでの競合を回避しているかを知りたいのです。
systemd-networkd
を有効にすると、/etc/systemd/network
の構成が有効になります
一方、NetworkManager
は、見つかった場合に有線接続に接続しようとするなど、いくつかの自動ルールに従います。
systemd
サービスとして有効化および無効化され、udevを使用するsystemdがネットワークアダプター用のデバイスファイルを作成します。一般的には、両方を同時に有効にするべきではありませんが、有効にする場合は、それらの設定が競合しないように注意する必要があります。
netplan
は、いずれかのネットワークマネージャーが起動する前に、独自の構成に基づいていずれかの構成を作成します。このように、netplanは実際には構成の抽象化であり、systemd-networkdを使用するか、NetworkManagerが構成の一部です。
iproute2
は、コマンドラインでネットワークインターフェイスを構成するためのツールのパッケージです。ネットワークマネージャーや古いifconfigと同様のリンク構成が含まれます。 net-tools
、ipupdown
およびifupdown2
は、/ etc/network/interfacesのネットワーク構成を使用して、インターフェースを構成および構成解除します。
ifupdown
またはその他のバージョンを使用してネットワークを管理できますが、自動ではなく、systemdサービスを使用して起動時にネットワークを開始できます。
ifupdown2
は、systemd
と同様の依存関係グラフを使用しますが、ネットワークインターフェイスを使用します。さらに、iproute2
のような他のツールへの抽象化として機能します
質問全体に答えようとはしませんが、
しかし、これらのシステムがどのように組み合わされるかを理解するのに役立ついくつかのことがわかりました。
これが私を非常に混乱させたので、これが誰かを助けることを願っています
interfaces
構成ファイル、およびifup
&ifdown
コマンド:/etc/network/interfaces
ネットワーク構成ファイルはかなり古いようですが、ifup
、ifdown
およびifquery
によってまだ使用されています。
これらは、ネットワークの「インターフェース」(MACベースのリンク)と「接続」(IPベースの接続)を上下に動かすための古い方法のようです。
man 8 ifup
さんのコメント:
説明
ifupおよびifdownコマンドを使用して、ファイル内のインターフェース定義に基づいてネットワークインターフェースを構成(または構成解除)できます/ etc/network/interfaces。
重要の意味はこれです:
インターフェースがインターフェースで定義されていない場合、ifup/ifdownはそのインターフェースを管理しません。
ifconfig
コマンドはどうですか?Debian for meには、レガシーネットワークパッケージnet-toolsが含まれています。これには、減価償却が含まれています:arp
、ifconfig
、ipmaddr
、iptunnel
、iwconfig
、nameif
、netstat
、route
、およびvconfig
コマンド。
iproute2
パッケージおよびip
、iw
、ss
、およびifrename
コマンド。
ip
がインターフェイスを起動または停止できる場合は、ifupやifdownではなく、それを使用しないのはなぜですか?何 ifup/down
は(ifupdownパッケージまたは推定Python ifupdown2で書き換え)を介して)実行しますが、ip
が実行しないのは、ネットワーク変更の前後にレガシースクリプトを実行することです。 ifupの発言:
[〜#〜]メモ[〜#〜]
プログラムはネットワークインターフェイスを直接設定しません。 ipなどの低レベルのユーティリティを実行して、ダーティな作業を行います。
参照
interfaces(5)、ip(8)、ifconfig(8)。
したがって、ifup/ifdownが、廃止されたifconfig
バックエンドの使用から、ip
バックエンドの使用にアップグレードされたようです。
からman 5 NetworkManager
、
[IFUPDOWN]
このセクションにはifupdown固有のオプションが含まれているため、ifupdownプラグインを使用する場合にのみ有効です。
管理
Trueに設定すると、/ etc/network/interfacesにリストされているインターフェースはNetworkManagerによって管理されます。 falseに設定すると、/ etc/network/interfacesにリストされているインターフェースはNetworkManagerによって無視されます。 NetworkManagerがデフォルトルートを制御することに注意してください。そのため、インターフェースは無視されるため、NetworkManagerはデフォルトルートを他のインターフェースに割り当てることがあります。
したがって、NetworkManagerがifup/ifdownスクリプトも実行できるかどうかは不明確ですが、明確なのは、NetworkManagerがifup/ifdownが使用しているインターフェースを回避できることです。
これはNetworkManagerよりも古く、有線サーバーやGUI環境が利用できない場合に使用されているようです。
しかし、ワイヤレス接続の場合、systemd-networkdを手動で構成するのはより困難であるため、NetworkManagerが適しています。
man 8 systemd-networkd
それは言う、
systemd-networkdは、.networkファイルが見つかったリンクのネットワークアドレスとルートを管理します適切な[Match]セクションを使用して、systemd.network(5)(実際のネットワークデバイス)を参照してください。これらのリンクについては、デバイスを起動するときに既存のネットワークアドレスとルートをフラッシュします。 .networkファイルのいずれかに一致しないリンクは無視されます。 nmanaged = yesオプションを使用して、リンクを無視するようにsystemd-networkdに明示的に指示することもできます。systemd.network(5)を参照してください。
これで大丈夫だと思いますが、そうでない場合はお知らせください。ありがとう。