NetworkManagerはどのように外部デバイスを取得しますか?

NetworkManagerはどのように外部デバイスを取得しますか?

KDEプラズマ5.27.5でDebian 12.2を使用する

外部機器に関する情報はどこでnmcli device入手できますかdocker0virbr0

# nmcli device console output
DEVICE   TYPE      STATE                   CONNECTION
eno1     ethernet  connected               Wired_eno1
lo       loopback  connected (externally)  lo
docker0  bridge    connected (externally)  docker0
virbr0   bridge    connected (externally)  virbr0
enp5s0   ethernet  unavailable             --

完全性のために、`の内容は次のとおりです。

cat `/etc/network/interfaces

# console output
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback


ls -l /etc/NetworkManager/system-connections/

# console output
-rw------- 1 root root 322 Nov 15 09:15 Forti_VPN
-rw------- 1 root root 210 Nov 14 21:48 Wired_eno1

読むLinuxでNetworkManagerを起動する。 NetworkManagerがD-Bus情報を使用して各NICを初期化することを学びました。

udevデーモンは、システムにインストールされている各ネットワークインターフェイスカード(NIC)ごとにネットワークルールファイルにエントリを作成します。 D-Busは、新しいネットワークデバイス(有線または無線)があることをNetworkManagerに通知します。その後、NetworkManagerはD-Busからのトラフィックを受信し、新しいデバイスの設定を作成して応答します。デフォルトでは、これらの構成はRAMにのみ保存され、永続的ではありません。コンピュータが起動するたびに作成する必要があります。

しかし、物理デバイスや仮想デバイスなどのネットワークデバイスに関するudev情報はどこで入手できますか?eno1enp5s0docker0virbr0

udevNetworkManagerで取得したネットワークデバイスに関する情報を照会するためにどの手動ステップまたはコマンドを実行できるかを確認してください。

答え1

カーネルはudev イベント追加、変更、削除のためすべてのデバイス、ネットワーク機器が含まれています。これらのイベントを監視した結果udev、ドライバはハードウェアを検出するとすべてのネットワークデバイスを認識します。

udevadm info -q all -n <device node>udevでネットワークデバイスを照会するには、そのネットワークデバイスにデバイスノードがないため使用できません。しかし、あなたはできるsysfs パスを使用してクエリします。

udevadm info -q all -p /sys/class/net/<interface name>

または

udevadm info -q all -a -p /sys/class/net/<interface name>

前のコマンドは、新しいネットワークインターフェイスに使用できるすべての名前を知らせました。予測可能なネットワークインタフェース名方式、さまざまなID_NET_NAME_*環境変数があります。

後者のコマンドは、ネットワークインタフェースデバイスとすべての親デバイス(該当する場合)のすべてのudev属性を一覧表示します。これは、いくつかの珍しい属性に基づいてネットワークインターフェイスに名前を割り当てるなど、カスタムudevルールを作成する必要がある場合には難しい場合があります。 。効果がある

関連情報