Come sapere se un'interfaccia di rete è tap, tun, bridge o fisica?


19

Per quanto ne so, ci sono 4 tipi principali di interfacce di rete in Linux: tun, tap, bridge e fisico.

Quando eseguo l'amministratore di sistema su macchine che eseguono KVM, di solito mi imbatto in interfacce tap, bridge e fisiche sulla stessa macchina, senza essere in grado di distinguerle. Non vedo differenze significative nei ifconfigrisultati, come nei iprisultati.

Come posso sapere se un'interfaccia è un tun, tap, bridge o fisico?

nota: non pretendo che non ci siano altri tipi di interfacce di rete in Linux, ma conosco solo questi 4.

Risposte:


18

Non penso che ci sia un modo semplice per distinguerli. Frugando in /sys/class/netho trovato le seguenti distinzioni:

  • I dispositivi fisici hanno un /sys/class/net/eth0/devicecollegamento simbolico
  • I ponti hanno una /sys/class/net/br0/bridgedirectory
  • I dispositivi TUN e TAP hanno un /sys/class/net/tap0/tun_flagsfile
  • Ponti e interfacce di loopback sono 00:00:00:00:00:00in/sys/class/net/lo/address

Buona idea per guardare in / sys /
— user368507

Anche i dispositivi virtuali possono avere un simile devicelink simbolico: viene ls -l /sys/class/net/lan1/devicemostrato /sys/class/net/lan1/device -> ../../../dsa.0su un router che esegue OpenWrt (Linux incorporato). Ho scoperto che le interfacce fisiche hanno una voce Interrupt nell'output di ifconfig. È strano che una domanda così semplice su un'interfaccia sembri così difficile da rispondere. L'indagine continua ...
— Lumi,

Che ne dici di un dispositivo virtuale ppp?
— Mâtt Frëëman,

23

Per quanto riguarda i dispositivi TUN e TAP: non è sufficiente effettuare il controllo sopra.

Il motivo è che potrebbero esserci casi in cui creiamo un dispositivo TUN e (per errore) lo chiamiamo tap10; o crea un dispositivo TAP e chiamalo tun10. Quindi, come posso sapere se si tratta di un dispositivo tun o di un dispositivo tap, dal momento che entrambi ovviamente avranno voci "tun_flags"?

La risposta è correre ethtool -i tunOrTapDeviceName.

  • Nel caso di un dispositivo TAP otterremo: "informazioni sul bus: toccare".
  • Nel caso di un dispositivo TUN otterremo: "bus-info: tun".

Esempio

$ 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

Non esiste un comando ethtool per trovare un'interfaccia fisica o bridge?
— madCode

Questa risposta è la soluzione più concisa e di uso generale.
— Joshua Miller,

@madcode Nel caso generale si desidera il drivercampo. i ponti mostreranno driver: bridge. Sfortunatamente tun / tap si presentano entrambi come driver: tun, rompendo lo schema :).
— FonteJedi

Sì questa è la risposta. L'altro ti dice solo se l'intf è virtuale o no! È possibile
— assegnare

9

Puoi usare l' -dopzione più o meno non documentata di ip(8), che ti dice il tipo di alcuni dispositivi tra cui tun, tap & veth:

per esempio

$ 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 tunsull'ultima riga.

Puoi anche usare -dcon ip l.


iproute2 è uno strumento così carino. Peccato che così tante funzioni siano difficili da scoprire.
— amico

4

Questo comando farà il lavoro:

IP Tuntap

Esempio di risultato:

vnet0: tap

o con dettagli:

ip -details tuntap

Esempio di risultato:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.