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 '…'
lshw -class network
lshw
nie ma go na liście pakietów. Kompetentny i zdeterminowany facet może odnieść sukces w instalowaniu narzędzi programistycznych tmpfs
, 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.