Answers:
我认为没有一种简单的方法可以区分它们。随便看看,/sys/class/net
我发现以下区别:
/sys/class/net/eth0/device
符号链接/sys/class/net/br0/bridge
目录/sys/class/net/tap0/tun_flags
文件00:00:00:00:00:00
在/sys/class/net/lo/address
device
符号链接:在运行OpenWrt(嵌入式Linux)的路由器上ls -l /sys/class/net/lan1/device
显示/sys/class/net/lan1/device -> ../../../dsa.0
。我发现物理接口在的输出中有一个Interrupt条目ifconfig
。如此奇怪的关于接口的问题似乎很难回答,这很奇怪。调查仍在继续...
关于TUN和TAP设备:仅进行上面的检查是不够的。
原因是在某些情况下,我们创建了一个TUN设备并(错误地)将其称为tap10。或创建TAP设备并将其命名为tun10。那么,由于这两个设备都将带有“ tun_flags”条目,我怎么知道它是调谐设备还是分接头设备?
答案是奔跑ethtool -i tunOrTapDeviceName
。
$ ethtool -i tapfffb93e9-6a
driver: tun
version: 1.6
firmware-version:
bus-info: tap
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
driver
字段。桥梁将显示driver: bridge
。不幸的是,tun / tap都显示为driver: tun
,破坏了模式:)。
您可以使用或多或少的未记录-d
选项ip(8)
,以告诉您某些设备的类型,包括tun,tap和veth:
例如
$ ip -d a
[regular devices]
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 52:54:00:c8:12:ec brd ff:ff:ff:ff:ff:ff promiscuity 0
tun
...注意tun
最后一行。
您还可以使用-d
带ip l
。