Mam mały domowy router z systemem OpenWrt (rodzaj wbudowanego systemu Linux dla routerów). Ma pięć portów Ethernet, jeden oznaczony WAN i cztery oznaczone LAN od 1 do 4. Ma następujące interfejsy sieciowe zdefiniowane zgodnie z ifconfig
:
root@TIBERIUS: ~ > ifconfig | grep Link
br-lan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan1 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan2 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan3 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan4 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lo Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
wlan0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
Jak widać, sporo urządzeń, ale tylko jeden adres MAC.
Rozumiem, że niektóre z tych urządzeń są wirtualne. Odłóżmy na bok lo
i pppoe-wan
, to jest urządzenie loopback i moje połączenie PPPoE. Ale dla reszty z nich, jak mam wiedzieć, czy są one fizyczne, czy wirtualne? Rozumiem, że istnieje konwencja nazewnictwa do etykietowania wirtualnych interfejsów eth0.1
, ale oczywiście nie jest to przestrzegane. Zobaczmy dane wyjściowe ifconfig
dla dwóch z tych interfejsów:
root@TIBERIUS: ~ > ifconfig wan
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15007 errors:0 dropped:0 overruns:0 frame:0
TX packets:12055 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:13341276 (12.7 MiB) TX bytes:1831757 (1.7 MiB)
root@TIBERIUS: ~ > ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25799 errors:0 dropped:0 overruns:23 frame:0
TX packets:25294 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15481996 (14.7 MiB) TX bytes:15160380 (14.4 MiB)
Interrupt:4
Poza niejasnym szczegółem txqueuelen
posiadania niezerowej wartości eth0
, jedyną uderzającą różnicą jest to, że eth0
ma Interrupt
pozycję, która, o ile wiem, jest cechą sprzętową. Czy w ten sposób można stwierdzić, że interfejs sieciowy jest fizyczny, czy nie, szukając Interrupt
wpisu ifconfig
? Czy jest jakiś lepszy sposób? Prosty i bezpośredni sposób na sprawdzenie, czy urządzenie sieciowe jest fizyczne czy wirtualne?
Zauważ, że istnieje powiązane pytanie, ale chociaż ma ono zaakceptowaną odpowiedź, nie jest rozstrzygające.
Aktualizacja
W odpowiedzi na odpowiedź derobert, oto informacje pochodzące z ls -l /sys/class/net
:
br-lan -> ../../devices/virtual/net/br-lan
eth0 -> ../../devices/platform/ag71xx.0/net/eth0
lan1 -> ../../devices/platform/dsa.0/net/lan1
lan2 -> ../../devices/platform/dsa.0/net/lan2
lan3 -> ../../devices/platform/dsa.0/net/lan3
lan4 -> ../../devices/platform/dsa.0/net/lan4
lo -> ../../devices/virtual/net/lo
pppoe-wan -> ../../devices/virtual/net/pppoe-wan
wan -> ../../devices/platform/dsa.0/net/wan
[Dodatek do tej listy: wlan0
pojawiłby się również wlan0 -> ../../devices/platform/ath9k/net/wlan0
, ale kiedy skopiowałem powyższą listę, miałem wyłączoną sieć WLAN, dlatego się nie pojawiła.]
Powiedziałbym, że eth0
to jedyne urządzenie. Nie wiadomo, co dsa.0
jest.
I w odpowiedzi na odpowiedź Bryana Agee'a:
root@TIBERIUS: ~ > cat /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'eth'
option ifname 'eth0'
option proto 'none'
config interface 'lan'
option ifname 'lan1 lan2 lan3 lan4'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.33.1'
option netmask '255.255.255.0'
config interface 'wan'
option ifname 'wan'
option proto 'pppoe'
option username '…'
option password '…'
źródło
lshw -class network
lshw
nie ma go na liście pakietów. Kompetentny i zdeterminowany facet może odnieść sukces w instalowaniu narzędzi programistycznychtmpfs
, ale czy warto? Zamierzam pogłębić swoją wiedzę na temat pracy w sieci Linux za pomocą standardowego komputera. To będzie łatwiejsze. Chociaż nie rozumiem poprawnie tej konfiguracji routera, działa ona dobrze. Dzięki za pomoc.Odpowiedzi:
Możesz sprawdzić
/sys
:Tak więc rzeczywiste urządzenia wyświetlają się w / sys / class / net. Zauważ, że aliasy (jak lan: 0) nie (więc możesz powiedzieć, które to są aliasy). I możesz wyraźnie zobaczyć, które są rzeczywistym sprzętem (lan), a które nie (br0, lo, tun0).
w celu wyjaśnienia
Możesz powiedzieć, które są prawdziwe powyżej, ponieważ wirtualne są wszystkie wirtualne. A lan jest na szynie PCI.
W twoim przypadku masz sześć: eth0, wan i lan1–4. Jest to dość dziwne, ponieważ mówisz, że masz tylko pięć portów ogółem. Sądzę, że eth0 jest podłączony do układu przełącznika, a pozostałe 5 portów to porty tego przełącznika. wlan0 jest prawdopodobnie również prawdziwy (byłby to adapter bezprzewodowy), chociaż nie wyświetla się w / sys….
Powiedziałbym więc, że dla wszystkich praktycznych celów twoje prawdziwe porty to wan, lan1–4 i wlan0. br-lan to most skonfigurowany tak, aby wszystkie 4 porty LAN działały jako przełącznik (więc możesz być w stanie podzielić ten przełącznik).
źródło
ag71xx
tego powoduje, że myślę, że to sprzęt, ponieważ wygląda jak sterownik.wlan0
byłaby obecna na liście urządzeń,/sys/class/net
ponieważ została włączona, gdy kopiowałem listę. :) Dodałem go powyżej. Nie zgadzam się z tobą co do liczby urządzeń, myślę, że są tylko dwa, LAN i WLAN. Ale to drobna uwaga… dobra odpowiedź, zaakceptowana, dziękuję!brctrl delif br-lan lan1
(lub podobnego), aby upuścić port z mostu. Podejrzewam, że będzie wtedy działał jako osobny port (nie jest częścią przełącznika LAN).Zakładając, że adres MAC interfejsu nie został sfałszowany , możesz spróbować użyć ethtool :
„ Stały adres: 00: 00: 00: 00: 00: 00 ” oznacza, że jest to interfejs sieci wirtualnej.
Następująca pętla bash wyświetli adres MAC dla wszystkich interfejsów sieciowych:
źródło
Zacznę od zaglądania
/etc/network/config
; większość dystrybucji ma podobny plik do definiowania i konfigurowania urządzeń sieciowych. W debian / Ubuntu jest to / etc / network / interfaces. Jeśli opublikujesz jego treść, możemy zidentyfikować wpisy aliasu, obligacji i mostu; reszta to twoje fizyczne urządzenia.Patrząc na dane
ifconfig
wyjściowe, możesz rozpoznać (jak wspomniałeś) przez urządzenia, które mają przerwania (IRQ); wielu ma również przypisaną pamięć, czego nie mają interfejsy wirtualne.Nie możesz nigdy oceniać samych adresów mac, ponieważ wiązania ( agregacja łączy ) zastąpią mac poszczególnych urządzeń, a mosty będą używać tego samego. Więc jeśli masz dwa połączone i zmostkowane urządzenia - wspólna konfiguracja wirtualnych hostów i routerów HA - będą cztery urządzenia z tym samym komputerem Mac:
Najwyraźniej aliasy użyte w openwrt nie są powyższymi, ale koncepcja jest zachowana; Użyłem ich, ponieważ są standardową praktyką.
źródło
/etc
. Na przykład interfejsy utworzone przez NetworkManager nie są tam wspomniane.Myślę, że samo sprawdzenie, czy wartość
/sys/class/net/<interface>/type
wynosi 1 (ARPHRD_ETHER) powinno wystarczyć, aby zrozumieć, czy urządzenie jest fizyczne.http://lxr.linux.no/linux+v3.0/include/linux/if_arp.h#L30
na przykład. basename $ (nazwa katalogu
grep -l ^1$ /sys/class/net/*/type
)źródło