Wie finde ich verfügbare Netzwerkschnittstellen?


88

Dies ist in Bezug auf Linux, aber wenn jemand eine allgemeine * nix-Methode kennt, wäre das gut.

Ich habe gestern ein System mit einem eingesteckten Ethernet-Kabel gebootet. "NetworkManager" ist nicht installiert. Nach dem Start habe ich nach dem Namen der Ethernet-Schnittstelle gesucht ifconfig, um einen DHCP-Client manuell zu starten, aber es wurde nichts anderes als angezeigt lo.

Die Netzwerkkarte wurde über aufgelistet lspciund der entsprechende Kerneltreiber wurde geladen. Das System verwendet normalerweise WLAN, und ich konnte mich daran erinnern, wie die Schnittstelle dafür lautete wlan0. Als ich es versuchte ifconfig wlan0 up, wlan0erschien. Aber die einzigen Namen für die Ethernet-Schnittstelle, an die ich mich erinnern konnte, waren eth[N]und em[N]- beides funktionierte nicht.

Dieses Dokument bezieht sich auf "vorhersehbare Schnittstellennamen", kann jedoch nicht in einfachen Worten erklären, was sie sein könnten. Es bezieht sich auf einen Teil des Quellcodes, der impliziert, dass der Name in diesem Fall aus den PCI-Bus- und Steckplatznummern abgeleitet werden kann, was als unnötig komplizierter Aufwand erscheint.

Andere Nachforschungen führten mich zu der Annahme, dass dies systemdin Verbindung mit bestimmt werden könnte udev, aber es sind fast 100 Dateien in der Datei, und es scheint auch lächerlich /usr/lib/udev/rules.d, eine Stunde zu verbringen, um festzustellen, wo (und ob ) es eine systemd-Konfigurationsdatei dafür gibt.

Es wäre auch schön, sicher zu wissen , dass sie zur Verfügung steht, nicht nur , wie sie genannt werden könnten , wenn sie sind, so kann ich Hardwareprobleme auszuschließen, usw. Gibt es eine einfache Möglichkeit , die Namen der verfügbaren Netzwerkschnittstellen zu finden unter Linux?


In der Frage geben Sie an, dass Sie verwendet haben, ip linkaber dann akzeptieren Sie eine Antwort, die vorschlägt, ip link showwas genau dasselbe tut. Warum?
Pavel Šimerda

@ PavelŠimerda Du hast recht. Ich könnte tatsächlich verwendet haben ip route- ich schrieb diese Frage am nächsten Tag, nachdem das Problem gelöst war (siehe meine eigene Antwort); Ich bin es nicht gewohnt, ipdie übermäßig spartanischen Manpages zu verwenden und schätze sie nicht. /sysDeshalb habe ich sie wahrscheinlich nach einem Versuch aufgegeben und angefangen, sie durchzuarbeiten, da ich wusste, dass der kmod usw. geladen war und dies einfacher war mir. Ich werde das ganz aus der Frage streichen.
Goldlöckchen

Die Handbuchseiten für iproute2 sind heutzutage ziemlich gut, ich vermute, Sie verwenden eine ältere Version des Pakets.
Pavel Šimerda

Antworten:


93

Die einfachste Methode, die ich kenne, um alle Ihre Schnittstellen aufzulisten, ist

ifconfig -a

BEARBEITEN

Wenn Sie sich auf einem System befinden, auf dem dies veraltet ist, können Sie verwenden

ip link show

3
Wenn ich nur die Manpage angeschaut hätte! Interessant zu wissen, ob ipes eine Parallele gibt, da ifconfig angeblich zugunsten dieses (IMO) stumpferen und weniger benutzerfreundlichen Befehls "obsolet" wird.
Goldlöckchen

2
Als erstes in meinem man ifconfig: "HINWEIS Dieses Programm ist veraltet! Zum Ersetzen überprüfe IP ..." Das kann Linux-spezifisch sein. Hoffentlich müssen sie es für die Abwärtskompatibilität mit etwas behalten.
Goldlöckchen

4
ifconfig ist veraltet, TMK, daher sollten wir versuchen, Beispiele mit zu zeigen ip. Siehe den Wikipedia-Artikel zu ifconfig: en.wikipedia.org/wiki/Ifconfig .
SLM

3
@slm Obwohl die Frage linuxspezifisch ist (war), scheint ein Beispiel mit beidem gut zu sein, da BSD-Benutzer die Gewohnheit haben, sowieso "linux" -Seiten zu betrachten - in der Tat nehme ich Linux aus dem Titel und bearbeite a Bit (ursprünglich wurde dies selbst beantwortet und ich dachte nicht, dass es eine tragbare Methode gab).
Goldlöckchen

5
ifconfig veraltet? Komm schon. Dieser Befehl gibt es seit etwa 30 Jahren.
Michael Martinez

72

Der Kernel listet sie nach Namen in auf /sys, beide separat in (z. B.) der Baumstruktur von PCI-Geräten - obwohl es nicht einfach ist, sie dort zu finden, wenn Sie nicht wissen, wo sie anfangen sollen - und zusammen über Symlinks in /sys/class/net. Z.B:

> ls /sys/class/net
em1 lo wlp6so

Ein anderes Beispiel:

> ls /sys/class/net
lo p6s1 wlan0

Wenn Sie sich nicht sicher sind, was welches ist, können Sie sie alle mit einem der folgenden Dinge auseinandersetzen:

ifconfig [name] up 

Oder:

ip link set [name] up

Und dann schauen Sie sich die (ziemlich klaren) Hinweise an, die mit ifconfig(ohne Argumente) aufgelistet sind . Der mit dem Freedesktop.org-Dokument verknüpfte systemd-Quellcode verweist auch auf:

Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan

Obwohl in einem der obigen Fälle ( p6s1) kein Präfix vorhanden ist.


Das Präfix, das ich für Ethernet bekomme, ist eth. Ich glaube enist für WLAN.
Kaushal Modi,

4
@kaushalmodi ethist eine Linux- Kernelsache ; systemd implementiert über udev die vorhersehbaren Schnittstellennamen von Freedesktop.org - die Namen des Kernels sind nicht im gleichen Sinne vorhersehbar, was die Ursache aller Verwirrung ist. Das obige Zitat wird von hier aus explizit ausgeschnitten und eingefügt . Es gibt mehr als das, da ich keine systemd Maschinen habe, die enfür Ethernet verwenden; am nächsten ist em, andere sind völlig anders. Sie können den Freedesk.org-Link in der Frage selbst lesen, um weitere Erklärungen zu erhalten.
Goldlöckchen

4
[Später] Irgendwann im letzten Jahr hat Fedora oder systemd das korrigiert? Mein PCI-Ethernet ist jetzt eno1.
Goldlöckchen


4

ifconfig= Solaris
ipconfig= Windows
ip= Linux

Das weiß ich, bin aber durchaus offen für Ergänzungen und Korrekturen.


2
Huh? ifconfig ist auch Linux.
Fpmurphy

4
@ fpmurphy1 Lies den ersten Absatz (nach der Zusammenfassung) von man ifconfigauf einem Linux-System.
Goldlöckchen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.