我想找到虚拟网络接口后面的内核模块(例如使用veth
、dummy
内核模块的接口,不是物理网卡)。这很容易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'
在某些情况下,lshw
和systool
实用程序将帮助收集信息:
systool -c net -v | less
lshw | less