Como saber se uma interface de rede é tap, tun, bridge ou physical?

19

Até onde eu sei, existem 4 tipos principais de interfaces de rede no Linux: tun, tap, bridge e physical.

Quando estou administrando sys em máquinas que executam o KVM, geralmente encontro interfaces de tap, bridge e físicas na mesma máquina, sem poder distingui-las. Não consigo ver diferenças significativas nos resultados ifconfig , como nos resultados ip .

Como posso saber se uma interface é tun, tap, bridge ou física?

nota: Eu não afirmo que não há outros tipos de interfaces de rede no Linux, mas eu conheço apenas estes 4.

    
por user368507 12.06.2012 / 00:58

4 respostas

16

Eu não acho que haja uma maneira fácil de distingui-los. Pesquisando em /sys/class/net , encontrei as seguintes distinções:

  • Dispositivos físicos têm um link simbólico /sys/class/net/eth0/device
  • As pontes têm um diretório /sys/class/net/br0/bridge
  • Os dispositivos TUN e TAP têm um% de arquivo /sys/class/net/tap0/tun_flags
  • As interfaces de pontes e loopback têm 00:00:00:00:00:00 em /sys/class/net/lo/address
por 12.06.2012 / 03:10
21

Com relação aos dispositivos TUN e TAP: não é suficiente fazer a verificação acima.

O motivo é que pode haver casos em que criamos um dispositivo TUN e (por erro) chame-o tap10; ou crie um dispositivo TAP e nomeie-o tun10. Então, como posso saber se é um dispositivo tun ou um dispositivo de toque, já que ambos terão entradas "tun_flags"?

A resposta é executar ethtool -i tunOrTapDeviceName .

  • No caso de um dispositivo TAP, obteremos: "bus-info: tap".
  • No caso de um dispositivo TUN, obteremos: "bus-info: tun".

Exemplo

$ 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
    
por 27.11.2012 / 21:13
6

Você pode usar a opção -d mais ou menos documentada para ip(8) , que informa o tipo de determinados dispositivos, incluindo tun, tocar & veth:

por exemplo,

$ 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

... note tun na última linha.

Você também pode usar -d com ip l .

    
por 09.01.2018 / 15:38
3

Este comando fará o trabalho:

ip tuntap

Exemplo de resultado:

vnet0: tap

ou com detalhes:

ip -details tuntap

Exemplo de resultado:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
    
por 03.04.2018 / 11:14