¿Cómo saber si una interfaz de red es tap, tun, bridge o física?


19

Hasta donde yo sé, hay 4 tipos principales de interfaces de red en Linux: tun, tap, bridge y física.

Cuando estoy haciendo sys admin en máquinas que ejecutan KVM, generalmente encuentro interfaces táctiles, de puente e físicas en la misma máquina, sin poder distinguirlas. No puedo ver diferencias significativas en los ifconfigresultados, como en los ipresultados.

¿Cómo puedo saber si una interfaz es tun, tap, bridge o física?

nota: No afirmo que no hay otros tipos de interfaces de red en Linux, pero solo conozco estos 4.

Respuestas:


18

No creo que haya una manera fácil de distinguirlos. Hurgando /sys/class/net, encontré las siguientes distinciones:

  • Los dispositivos físicos tienen un /sys/class/net/eth0/deviceenlace simbólico
  • Los puentes tienen un /sys/class/net/br0/bridgedirectorio
  • Los dispositivos TUN y TAP tienen un /sys/class/net/tap0/tun_flagsarchivo
  • Puentes e interfaces loopback tienen 00:00:00:00:00:00en/sys/class/net/lo/address

Buena idea mirar en / sys /
user368507

Los dispositivos virtuales también pueden tener un deviceenlace simbólico: se ls -l /sys/class/net/lan1/devicemuestra /sys/class/net/lan1/device -> ../../../dsa.0en un enrutador que ejecuta OpenWrt (Linux incorporado). Descubrí que las interfaces físicas tienen una entrada de interrupción en la salida de ifconfig. Es extraño que una pregunta tan simple sobre una interfaz parezca tan difícil de responder. La investigación continúa ...
Lumi

¿Qué tal un dispositivo virtual ppp?
Mâtt Frëëman

23

Con respecto a los dispositivos TUN y TAP: no es suficiente hacer la verificación anterior.

La razón es que puede haber casos cuando creamos un dispositivo TUN y (por error) lo llamamos tap10; o cree un dispositivo TAP y asígnele el nombre tun10. Entonces, ¿cómo puedo saber si es un dispositivo tun o un dispositivo tap, ya que ambos tendrán entradas "tun_flags"?

La respuesta es correr ethtool -i tunOrTapDeviceName.

  • En el caso de un dispositivo TAP obtendremos: "bus-info: tap".
  • En el caso de un dispositivo TUN obtendremos: "bus-info: tun".

Ejemplo

$ 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

¿No hay un comando ethtool para encontrar si una interfaz es física o puente?
madCode

Esta respuesta es la solución más concisa y de propósito general.
Joshua Miller

@madcode En el caso general, desea el drivercampo. se mostrarán puentes driver: bridge. Desafortunadamente, Tun / Tap aparecen como driver: tun, rompiendo el patrón :).
sourcejedi

Sí, esta es la respuesta. ¡El otro solo te dice si el intf es virtual o no! Puede nombrar una interfaz táctil con un nombre que no indique la naturaleza de la interfaz
MiniMe

9

Puede usar la -dopción más o menos indocumentada para ip(8), que le indica el tipo de ciertos dispositivos, incluidos tun, tap & veth:

p.ej

$ 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

... nota tunen la última línea.

También puedes usar -dcon ip l.


iproute2 es una buena herramienta. Lástima que muchas características sean difíciles de descubrir.
pequeño amigo

4

Este comando hará el trabajo:

ip tuntap

Ejemplo de resultado:

vnet0: tap

o con detalles:

ip -details tuntap

Ejemplo de resultado:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.