Jak się dowiedzieć, czy interfejs sieciowy jest stukany, tunowany, mostkowy czy fizyczny?


19

O ile mi wiadomo, w systemie Linux istnieją 4 główne typy interfejsów sieciowych: tun, tap, bridge i physical.

Kiedy pracuję jako administrator systemu na komputerach z KVM, zwykle spotykam interfejsy dotykowe, mostkowe i fizyczne na tym samym komputerze, bez możliwości ich rozróżnienia. Nie widzę żadnych istotnych różnic w ifconfigwynikach, jak w ipwynikach.

Skąd mam wiedzieć, czy interfejs to tun, tap, bridge, czy fizyczny?

Uwaga: Nie twierdzę, że w Linuksie nie ma innych typów interfejsów sieciowych, ale znam tylko te 4.

Odpowiedzi:


18

Nie sądzę, że istnieje prosty sposób na ich rozróżnienie. Grzebiąc w środku /sys/class/netznalazłem następujące różnice:

  • Urządzenia fizyczne mają /sys/class/net/eth0/devicedowiązanie symboliczne
  • Mosty mają /sys/class/net/br0/bridgekatalog
  • Urządzenia TUN i TAP mają /sys/class/net/tap0/tun_flagsplik
  • Mosty i mają interfejsy pętli zwrotnej 00:00:00:00:00:00w/sys/class/net/lo/address

Dobry pomysł zajrzeć do / sys /
user368507

Urządzenia wirtualne mogą również mieć takie devicedowiązanie symboliczne: ls -l /sys/class/net/lan1/devicePokazuje /sys/class/net/lan1/device -> ../../../dsa.0na routerze z OpenWrt (wbudowany Linux). Odkryłem, że interfejsy fizyczne mają wpis Przerwanie w danych wyjściowych ifconfig. Dziwne, że na tak proste pytanie dotyczące interfejsu wydaje się tak trudno odpowiedzieć. Dochodzenie trwa ...
Lumi,

Co powiesz na urządzenie wirtualne ppp?
Mâtt Frëëman,

23

W odniesieniu do urządzeń TUN i TAP: nie wystarczy wykonać powyższą kontrolę.

Powodem jest to, że mogą wystąpić przypadki, gdy tworzymy urządzenie TUN i (przez pomyłkę) nazywamy go tap10; lub utwórz urządzenie TAP i nazwij je tun10. Skąd mam wiedzieć, czy jest to urządzenie tun, czy urządzenie z kranem, skoro oba będą oczywiście zawierać wpisy „tun_flags”?

Odpowiedź brzmi: uruchomić ethtool -i tunOrTapDeviceName.

  • W przypadku urządzenia TAP otrzymamy: „bus-info: tap”.
  • W przypadku urządzenia TUN otrzymamy: „bus-info: tun”.

Przykład

$ 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

Czy nie ma polecenia ethtool, aby sprawdzić, czy interfejs jest fizyczny czy mostkowy?
madCode

Ta odpowiedź jest bardziej zwięzłym i uniwersalnym rozwiązaniem.
Joshua Miller

@madcode W ogólnym przypadku chcesz driverpole. mosty pokażą driver: bridge. Niestety oba tun / tap pojawiają się jako driver: tun, przerywając wzór :).
sourcejedi

Tak, to jest odpowiedź. Drugi mówi tylko, czy intf jest wirtualny, czy nie! Możesz nazwać interfejs kranu nazwą, która nie wskazuje charakteru interfejsu
MiniMe

9

Możesz użyć mniej lub bardziej nieudokumentowanej -dopcji ip(8), która informuje o typie niektórych urządzeń, w tym tun, tap & veth:

na przykład

$ 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

... uwaga tunw ostatnim wierszu.

Możesz także używać -dz ip l.


iproute2 to takie miłe narzędzie. Szkoda, że ​​wiele funkcji jest trudnych do wykrycia.
mały koleś

4

To polecenie wykona zadanie:

ip tuntap

Przykład wyniku:

vnet0: tap

lub ze szczegółami:

ip - szczegółowe informacje

Przykład wyniku:

vnet0: tap
    Attached to processes: qemu-system-x86(2225)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.