通过 sysfs/procfs 中的信息查找虚拟网络接口后面的内核模块

通过 sysfs/procfs 中的信息查找虚拟网络接口后面的内核模块

我想找到虚拟网络接口后面的内核模块(例如使用vethdummy内核模块的接口,不是物理网卡)。这很容易ethtool

$ ethtool -i ltp_ns_veth2 |grep driver
driver: veth

但我不想依赖它。我知道我可以找到物理网卡的模块:

$ basename $(readlink -f /sys/class/net/eth0/device/driver/module)
e1000

但这不适用于虚拟设备,因为没有指向device文件夹的链接。

最好是能够通过解析获取信息/sys,因为它不需要外部工具。

答案1

dmesg | grep eth如果您知道接口名称将包含 eth,则可以使用。

[root@psybox ~]# dmesg | grep -i eth
[    2.009028] vmxnet3 0000:03:00.0 eth0: NIC Link is Up 10000 Mbps

第二个显示的是驱动程序,vmxnet3

答案2

我最喜欢的方式是实用ethtool。它准确显示内核模块名称:

ethtool -i $IFACE | grep driver

iproute2可以显示设备类型。它不是驱动程序名称,但它们通常是相同的:

 ip -detail -json link list dev $IFACE | jq '.[] | .linkinfo.info_kind'

在某些情况下,lshwsystool实用程序将帮助收集信息:

systool -c net -v | less
lshw | less

相关内容