Comment savoir si une interface réseau est tap, tun, bridge ou physique?

19

Pour autant que je sache, il existe 4 principaux types d'interfaces réseau sous Linux: tun, tap, bridge et physique.

Lorsque je fais de l'administrateur système sur des machines exécutant KVM, je rencontre généralement des interfaces tap, bridge et physiques sur la même machine, sans pouvoir les distinguer. Je ne vois aucune différence significative dans les ifconfigrésultats, comme dans les iprésultats.

Comment savoir si une interface est un tun, tap, bridge ou physique?

note: je ne prétends pas qu'il n'y a pas d'autres types d'interfaces réseau sous Linux, mais je ne connais que ces 4.

user368507
la source

Réponses:

18

Je ne pense pas qu'il existe un moyen facile de les distinguer. En fouillant, /sys/class/netj'ai trouvé les distinctions suivantes:

  • Les appareils physiques ont un /sys/class/net/eth0/devicelien symbolique
  • Les ponts ont un /sys/class/net/br0/bridgerépertoire
  • Les appareils TUN et TAP ont un /sys/class/net/tap0/tun_flagsfichier
  • Les ponts et les interfaces loopback ont 00:00:00:00:00:00en/sys/class/net/lo/address
mgorven
la source
Bonne idée de regarder dans / sys /
user368507
Les périphériques virtuels peuvent également avoir un tel devicelien symbolique: ls -l /sys/class/net/lan1/devices'affiche /sys/class/net/lan1/device -> ../../../dsa.0sur un routeur exécutant OpenWrt (Linux embarqué). J'ai trouvé que les interfaces physiques ont une entrée d'interruption dans la sortie de ifconfig. Il est étrange qu'une question aussi simple sur une interface semble si difficile à répondre. L'enquête continue ...
Lumi
Que diriez-vous d'un périphérique virtuel ppp?
Mâtt Frëëman
23

Concernant les appareils TUN et TAP: il ne suffit pas de vérifier ci-dessus.

La raison en est qu'il peut y avoir des cas où nous créons un périphérique TUN et (par erreur) l'appelons tap10; ou créez un appareil TAP et nommez-le tun10. Alors, comment puis-je savoir s'il s'agit d'un périphérique tun ou d'un périphérique tap, car les deux auront bien sûr des entrées "tun_flags"?

La réponse est de courir ethtool -i tunOrTapDeviceName.

  • Dans le cas d'un appareil TAP, nous obtiendrons: "bus-info: tap".
  • Dans le cas d'un périphérique TUN, nous obtiendrons: "bus-info: tun".

Exemple

$ 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
Rami Rosen
la source
N'y a-t-il pas une commande ethtool pour trouver si une interface est physique ou pont?
madCode
Cette réponse est la solution la plus concise et la plus polyvalente.
Joshua Miller
@madcode Dans le cas général, vous voulez le driverchamp. les ponts montreront driver: bridge. Malheureusement, les touches tun / tap apparaissent toutes les deux driver: tun, cassant le schéma :).
sourcejedi
Oui, c'est la réponse. L'autre ne vous dit que si l'intf est virtuel ou non! Vous pouvez nommer une interface tactile avec un nom qui ne donne aucune indication sur la nature de l'interface
MiniMe
9

Vous pouvez utiliser l' -doption plus ou moins non documentée pour ip(8), qui vous indique le type de certains appareils, y compris tun, tap & veth:

par exemple

$ 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 tunsur la dernière ligne.

Vous pouvez également utiliser -davec ip l.

Ben
la source
iproute2 est un si bel outil. Dommage tant de fonctionnalités sont difficiles à découvrir.
little-mec
4

Cette commande fera le travail:

ip tuntap

Exemple de résultat:

vnet0: tap

ou avec des détails:

ip -détails tuntap

Exemple de résultat:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
BMWW
la source