it-swarm.com.de

Wie finde ich verfügbare Netzwerkschnittstellen?

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

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

Die NIC wurde über lspci aufgelistet und der entsprechende Kerneltreiber wurde geladen. Das System verwendet normalerweise WLAN, und ich konnte mich daran erinnern, dass der Schnittstellenname dafür wlan0 Als ich ifconfig wlan0 up Versuchte, erschien wlan0. Aber die einzigen Namen der 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 gut erklären, was sie in einfachen Worten sein könnten. Es bezieht sich auf einen Quellcode, der impliziert, dass der Name in diesem Fall möglicherweise aus den PCI-Bus- und Steckplatznummern abgeleitet wird, was als unnötig komplizierter Aufwand erscheint.

Andere Suchen führten mich zu der Annahme, dass dies durch systemd in Verbindung mit udev bestimmt werden könnte, aber es gibt fast 100 Dateien in /usr/lib/udev/rules.d Und ich verbringe eine Stunde damit, herauszufinden, wo (und if) Es gibt eine systemd-Konfigurationsdatei, für die dies ebenfalls lächerlich erscheint.

Es wäre auch schön zu wissen, dass sie verfügbar sind, nicht nur wie sie benannt werden könnten wenn sie sind, damit ich Hardwareprobleme usw. ausschließen kann Gibt es nicht eine einfache Möglichkeit, die Namen der verfügbaren Netzwerkschnittstellen unter Linux zu finden?

92
goldilocks

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

ifconfig -a

EDIT

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

ip link show
95
Elliott Frisch

Der Kernel listet sie nach Namen in /sys, beide separat in (z. B.) dem Baum der PCI-Geräte - 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, welches welches ist, können Sie sich einfach alle vorstellen:

ifconfig [name] up 

Oder:

ip link set [name] up

Und dann schauen Sie sich die (ziemlich klaren) Hinweise an, die von ifconfig aufgelistet werden (ohne Argumente). Der aus dem Freedesktop.org-Dokument verknüpfte systemd-Quellcode bezieht sich 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 oben genannten Fälle (p6s1) Es gibt kein Präfix.

73
goldilocks

Mache ich immer cat /proc/net/dev es ist einfach und leicht zu merken

10
Mohammad Rafiee

ifconfig = Solaris
ipconfig = Windows
ip = Linux

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

6
Mick Myhera