web-dev-qa-db-fra.com

Comment trouver les interfaces réseau disponibles?

Cela concerne Linux, mais si quelqu'un connaît une méthode générale * nix, ce serait bien.

J'ai démarré un système hier avec un câble Ethernet branché. "NetworkManager" n'est pas installé, donc une fois qu'il a démarré, je suis allé chercher le nom de l'interface Ethernet avec ifconfig pour démarrer un client DHCP manuellement, mais il n'a rien montré d'autre que lo.

Le NIC a été répertorié via lspci et le pilote de noyau approprié a été chargé. Le système utilise normalement le wifi, et je pouvais me souvenir du nom de l'interface car c'était wlan0. Quand j'ai essayé ifconfig wlan0 up, wlan0 apparu. Mais les seuls noms d'interface Ethernet dont je me souvenais étaient eth[N] et em[N] - aucun des deux n'a fonctionné.

Ce document fait référence aux "noms d'interface prévisibles" mais ne fait pas un bon travail pour expliquer ce qu'ils pourraient être en termes simples. Il fait référence à un morceau de code source qui implique que le nom dans ce cas pourrait être déduit du bus PCI et des numéros d'emplacement, ce qui semble être une corvée inutilement compliquée.

D'autres recherches m'ont amené à croire que cela pourrait être déterminé par systemd en conjonction avec udev, mais il y a près de 100 fichiers dans /usr/lib/udev/rules.d et passer une heure à essayer de déterminer où (et si) il y a un fichier de configuration systemd pour cela semble également ridicule.

Il serait également agréable de savoir avec certitude qu'ils sont disponibles, pas seulement comment ils peuvent être nommés si ils le sont, donc je peux exclure les problèmes matériels, etc. N'y a-t-il pas un moyen simple de trouver les noms des interfaces réseau disponibles sur Linux?

92
goldilocks

La méthode la plus simple que je connaisse pour répertorier toutes vos interfaces est

ifconfig -a

MODIFIER

Si vous êtes sur un système où cela a été rendu obsolète, vous pouvez utiliser

ip link show
95
Elliott Frisch

Le noyau les répertorie par nom dans /sys, à la fois séparément (par exemple) dans l'arborescence des périphériques PCI - bien que les trouver là-bas si vous ne savez pas par où commencer ne soit pas simple - et ensemble via des liens symboliques dans /sys/class/net. Par exemple.:

> ls /sys/class/net
em1 lo wlp6so

Un autre exemple:

> ls /sys/class/net
lo p6s1 wlan0

Si vous ne savez pas lequel est lequel, vous pouvez tout simplement les mettre soit avec:

ifconfig [name] up 

Ou:

ip link set [name] up

Et puis regardez les indices (assez clairs) répertoriés par ifconfig (sans arguments). Le code source de systemd lié à partir du document Freedesktop.org fait également référence à:

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

Bien que dans l'un des cas ci-dessus (p6s1) il n'y a pas de préfixe.

73
goldilocks

Je fais toujours cat /proc/net/dev c'est simple et facile à mémoriser

10
Mohammad Rafiee

ifconfig = Solaris
ipconfig = Windows
ip = Linux

Je le sais, mais je suis certainement ouvert aux ajouts et aux corrections.

6
Mick Myhera