Ich habe einen kleinen Heimrouter, auf dem OpenWrt ausgeführt wird (eine Art eingebettetes Linux für Router). Es verfügt über fünf Ethernet-Ports, einen WAN-Port und vier Labeld LAN-Ports (1 bis 4). Die folgenden Netzwerkschnittstellen sind wie folgt definiert 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
Wie Sie sehen, eine ganze Reihe von Geräten, aber nur eine MAC-Adresse.
Ich verstehe, dass einige dieser Geräte virtuell sind. Lassen Sie uns beiseite legen lo
und pppoe-wan
das ist das Loopback-Gerät und meine PPPoE-Verbindung. Aber wie soll ich für die anderen feststellen können, ob sie physisch oder virtuell sind? Ich verstehe, dass es eine Namenskonvention für die Kennzeichnung virtueller Schnittstellen gibt eth0.1
, die hier jedoch offensichtlich nicht eingehalten wird. Sehen wir uns die Ausgabe von ifconfig
für zwei dieser Schnittstellen an:
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
Abgesehen von dem obskuren Detail txqueuelen
einer Nicht-Null für eth0
, ist der einzige auffällige Unterschied, dass eth0
es einen Interrupt
Eintrag gibt, der meines Wissens ein Hardware-Feature ist. Stellen Sie also fest, dass eine Netzwerkschnittstelle physisch ist oder nicht, indem Sie nach einem Interrupt
Eintrag in suchen ifconfig
? Oder gibt es einen besseren Weg? Eine einfache und unkomplizierte Methode, um herauszufinden, ob ein Netzwerkgerät physisch oder virtuell ist?
Beachten Sie, dass es eine verwandte Frage gibt, die zwar eine akzeptierte Antwort enthält, jedoch nicht abschließend ist.
Aktualisieren
Als Antwort auf die Antwort von derobert finden Sie hier Informationen, die abgeleitet wurden von 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
[Nachtrag zu dieser Liste: wlan0
wäre auch aufgetaucht wlan0 -> ../../devices/platform/ath9k/net/wlan0
, aber als ich die obige Liste kopierte, hatte ich WLAN deaktiviert, weshalb es nicht aufgetaucht ist.]
Ich würde sagen, eth0
ist das einzige Gerät. Unklar was dsa.0
ist.
Und als Antwort auf Bryan Agees Antwort:
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 '…'
quelle
lshw -class network
lshw
nicht in der Paketliste. Ein sachkundiger und entschlossener Kerl könnte erfolgreich Entwickler-Tools installierentmpfs
, aber würde es sich lohnen? Ich werde mein Verständnis von Linux-Netzwerken mithilfe eines Standard-PCs vertiefen. Das wird einfacher. Obwohl ich diese Routerkonfiguration nicht richtig verstehe, funktioniert sie einwandfrei. Danke für Ihre Hilfe.Antworten:
Sie können überprüfen
/sys
:Tatsächliche Geräte werden also in / sys / class / net angezeigt. Beachten Sie, dass Aliase (wie lan: 0) dies nicht tun (damit Sie erkennen können, welche Aliase sind). Und Sie können deutlich erkennen, welche Hardware (LAN) tatsächlich vorhanden ist und welche nicht (BR0, LO, TUN0).
um klarzustellen
Sie können erkennen, welche oben real sind, da die virtuellen alle virtuell sind. Und LAN ist auf dem PCI-Bus.
In Ihrem Fall haben Sie sechs: eth0, wan und lan1–4. Dies ist ziemlich seltsam, da Sie sagen, dass Sie insgesamt nur fünf Ports haben. Ich vermute, eth0 ist tatsächlich fest mit einem Switch-ish-Chip verdrahtet, und die anderen 5 Ports sind Ports an diesem Switch. wlan0 ist wahrscheinlich auch real (wäre der WLAN-Adapter), obwohl es in / sys nicht angezeigt wird….
Also, ich würde sagen, dass für alle praktischen Zwecke Ihre realen Ports wan, lan1–4 und wlan0 sind. br-lan ist eine Bridge, die so eingerichtet ist, dass alle 4 LAN-Ports als Switch fungieren (sodass Sie diesen Switch möglicherweise aufteilen können).
quelle
ag71xx
, lässt mich das Vorhandensein von Hardware denken, da es wie ein Treiber aussieht.wlan0
wäre in der Geräteliste vorhanden/sys/class/net
gewesen, wenn sie beim Kopieren der Liste aktiviert worden wäre. :) Ich habe es jetzt oben hinzugefügt. Ich bin nicht einverstanden mit Ihnen über die Anzahl der Geräte, ich denke, es gibt nur zwei, LAN und WLAN. Aber das ist ein kleiner Punkt ... gute Antwort, akzeptiert, danke!brctrl delif br-lan lan1
(oder ähnliches), um einen Port aus der Brücke zu werfen . Ich vermute, es wird dann als separater Port (nicht Teil des LAN-Switch) funktionieren.Angenommen, Ihre Schnittstellen-MAC-Adresse wurde nicht gefälscht , können Sie versuchen, ethtool zu verwenden :
" Permanente Adresse: 00: 00: 00: 00: 00: 00 " zeigt an, dass es sich um eine virtuelle Netzwerkschnittstelle handelt.
Die folgende Bash-Schleife zeigt die MAC-Adresse für alle Netzwerkschnittstellen an:
quelle
Ich würde anfangen, indem ich hineinschaue
/etc/network/config
; Die meisten Distributionen haben eine ähnliche Datei zum Definieren und Konfigurieren von Netzwerkgeräten. In debian / Ubuntu ist es / etc / network / interfaces. Wenn Sie den Inhalt davon veröffentlichen würden, könnten wir Alias-, Bond- und Bridge-Einträge identifizieren. Der Rest wäre Ihre physischen Geräte.Wenn Sie sich die
ifconfig
Ausgabe ansehen, können Sie (wie bereits erwähnt) feststellen, welche Geräte Interrupts (IRQs) haben. Vielen ist auch Speicher zugewiesen, virtuellen Schnittstellen nicht.Sie können nie allein nach Mac-Adressen urteilen, da Anleihen ( Link-Aggregation ) den Mac einzelner Geräte überschreiben und Bridges dieselben verwenden. Wenn Sie also zwei Geräte verbunden und überbrückt haben - eine übliche Konfiguration für virtuelle HA-Hosts und -Router -, gibt es vier Geräte mit demselben Mac:
Es ist klar, dass die in openwrt verwendeten Aliase nicht die oben genannten sind, aber das Konzept gilt; Ich habe diese verwendet, weil sie Standard sind.
quelle
/etc
Prinzip gearbeitet haben. Beispielsweise werden von NetworkManager erstellte Schnittstellen dort nicht erwähnt.Ich denke, dass das Überprüfen, ob der Wert
/sys/class/net/<interface>/type
1 (ARPHRD_ETHER) ist, ausreichen sollte, um zu verstehen, ob es sich bei dem Gerät um ein physisches Gerät handelt.http://lxr.linux.no/linux+v3.0/include/linux/if_arp.h#L30
z.B. basename $ (dirname
grep -l ^1$ /sys/class/net/*/type
)quelle