NetworkManager如何获取外部设备?

NetworkManager如何获取外部设备?

将 Debian 12.2 与 KDE Plasma 5.27.5 结合使用

从哪里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

为了学习,我可以运行哪些手动步骤或命令来查询udev有关 NetworkManager 发现的网络设备的信息?

答案1

内核生成一个udev事件用于添加、更改或删除任何设备,包括网络设备。由于udev监视这些事件,一旦适用的驱动程序检测到硬件,它就会意识到所有网络设备。

要在 udev 中查询网络设备,不能使用udevadm info -q all -n <device node>,因为网络设备没有设备节点。但是你使用 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 规则,例如根据某些不寻常的属性为网络接口分配名称,这可能很有用。

相关内容