如何知道网络接口是分接,调整,桥接还是物理接口?


19

据我所知,Linux中有4种主要的网络接口类型:tun,tap,bridge和physical。

当我在运行KVM的计算机上进行sys admin时,通常会遇到同一台计算机上的tap,bridge和物理接口,而无法区分它们。我看不到ifconfig结果有任何显着差异,就像ip结果一样。

我怎么知道接口是调节,分接,桥接还是物理接口?

注意:我并不是说Linux中没有其他类型的网络接口,但是我只知道这4种。

Answers:


18

我认为没有一种简单的方法可以区分它们。随便看看,/sys/class/net我发现以下区别:

  • 物理设备具有/sys/class/net/eth0/device符号链接
  • 桥梁有一个/sys/class/net/br0/bridge目录
  • TUN和TAP设备有一个/sys/class/net/tap0/tun_flags文件
  • 桥梁和Loopback接口具有00:00:00:00:00:00/sys/class/net/lo/address

好主意在/ sys /中查找
user368507

虚拟设备也可能具有这样的device符号链接:在运行OpenWrt(嵌入式Linux)的路由器上ls -l /sys/class/net/lan1/device显示/sys/class/net/lan1/device -> ../../../dsa.0。我发现物理接口在的输出中有一个Interrupt条目ifconfig。如此奇怪的关于接口的问题似乎很难回答,这很奇怪。调查仍在继续...
Lumi

ppp虚拟设备怎么样?
马特·弗雷曼(MâttFrëëman)

23

关于TUN和TAP设备:仅进行上面的检查是不够的。

原因是在某些情况下,我们创建了一个TUN设备并(错误地)将其称为tap10。或创建TAP设备并将其命名为tun10。那么,由于这两个设备都将带有“ tun_flags”条目,我怎么知道它是调谐设备还是分接头设备?

答案是奔跑ethtool -i tunOrTapDeviceName

  • 如果是TAP设备,我们将获得:“ bus-info:tap”。
  • 如果是TUN设备,我们将得到:“ bus-info:tun”。

$ 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

没有ethtool命令来查找接口是物理接口还是桥接接口?
madCode 2013年

这个答案是更简洁和通用的解决方案。
Joshua Miller

@madcode通常情况下,您需要该driver字段。桥梁将显示driver: bridge。不幸的是,tun / tap都显示为driver: tun,破坏了模式:)。
sourcejedi

是的,这就是答案。另一个仅告诉您intf是否为虚拟的!您可以使用不指示界面性质的名称来命名Tap接口
MiniMe

9

您可以使用或多或少的未记录-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最后一行。

您还可以使用-dip l


iproute2是一个很好的工具。太糟糕了,很难发现许多功能。
小花花公子

4

此命令将完成此工作:

ip tuntap

结果示例:

vnet0: tap

或详细信息:

ip-详细信息

结果示例:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.