use*_*507 25 networking ip kernel bridge tap
据我所知,Linux 中有 4 种主要的网络接口类型:tun、tap、bridge 和 physical。
当我在运行 KVM 的机器上进行系统管理时,我通常会在同一台机器上遇到 tap、bridge 和物理接口,但无法区分它们。我看不出ifconfig结果有任何显着差异,就像ip结果一样。
我如何知道接口是 tun、tap、bridge 还是物理接口?
注意:我并没有声称 Linux 中没有其他类型的网络接口,但我只知道这 4 种。
小智 27
关于 TUN 和 TAP 设备:仅进行上述检查是不够的。
原因是可能存在我们创建一个 TUN 设备并(错误地)调用它为 tap10 的情况;或创建一个 TAP 设备并将其命名为 tun10。那么,我怎么知道它是 tun 设备还是 tap 设备,因为两者当然都有“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
Run Code Online (Sandbox Code Playgroud)
mgo*_*ven 20
我认为没有一种简单的方法可以区分它们。仔细研究,/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小智 14
您可以使用或多或少未记录的-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
Run Code Online (Sandbox Code Playgroud)
...注意tun最后一行。
您也可以-d与ip l.
此命令将完成以下工作:
ip tuntap
结果示例:
vnet0: tap
Run Code Online (Sandbox Code Playgroud)
或详细信息:
ip -details tuntap
结果示例:
vnet0: tap
Attached to processes: qemu-system-x86(2225)
Run Code Online (Sandbox Code Playgroud)