Comment trouver les interfaces réseau disponibles?

88

Ceci concerne Linux, mais si quelqu'un connaissait une méthode générale, cela serait bien.

Hier, j'ai démarré un système avec un câble Ethernet branché. "NetworkManager" n'étant pas installé, une fois démarré, je suis allé à la recherche du nom de l'interface Ethernet ifconfigafin de démarrer un client DHCP manuellement, mais rien d'autre n'a été affiché. lo.

La carte réseau était répertoriée via lspciet le pilote de noyau approprié était chargé. Le système utilise normalement le wifi, et je me souvenais du nom de l'interface wlan0. Quand j'ai essayé ifconfig wlan0 up, wlan0est apparu. Mais les seuls noms d’interfaces Ethernet dont je me souvenais étaient eth[N]et em[N]- aucun d’eux ne fonctionnait.

Ce document fait référence à des "noms d'interface prévisibles" mais ne permet pas d'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 de logement, ce qui semble être une corvée inutilement compliquée.

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

Il serait également bon de savoir avec certitude qu'ils sont disponibles, pas seulement comment ils pourraient être nommés s'ils sont, donc je ne peux écarter les problèmes matériels, etc. N'est - il un moyen simple de trouver les noms des interfaces réseau disponibles sur linux?

boucle d'or
la source
Dans la question, vous indiquez que vous avez utilisé, ip linkmais ensuite vous acceptez une réponse suggérant ip link showlequel fait exactement la même chose. Pourquoi?
Pavel Šimerda
@ PavelŠimerda Vous avez raison. J'aurais peut-être utilisé la ip routequestion suivante: j’ai écrit cette question le lendemain, une fois le problème résolu (voir ma propre réponse); Je ne suis pas habitué à utiliser ipet n'apprécie pas les pages de manuel excessivement spartiates. Je l'ai donc probablement abandonné après un essai et /sysj'ai commencé à le parcourir , car je savais que le kmod était chargé, etc., ce qui était plus simple. tome. Je vais supprimer cela complètement de la question.
goldilocks
Les pages de manuel pour iproute2 sont assez bonnes de nos jours, je suppose que vous utilisez une version plus ancienne du paquet.
Pavel Šimerda

Réponses:

93

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
Elliott Frisch
la source
3
Si je venais de regarder la page de manuel! Il est intéressant de savoir s’il ipexiste un parallèle, car supposément ifconfig est "obsolète" au profit de cette commande (OMI) plus obtuse et moins conviviale.
goldilocks
2
Première chose dans mon man ifconfig: "NOTE: Ce programme est obsolète! Pour le remplacement de l'adresse IP ..." Cela peut être spécifique à Linux. Espérons qu'ils devront le conserver pour assurer la compatibilité ascendante avec quelque chose.
goldilocks
4
ifconfig est obsolète, TMK, nous devrions donc essayer de montrer des exemples avec ip. Voir l'article de ifconfig dans wikipedia: en.wikipedia.org/wiki/Ifconfig .
slm
3
@slm Bien que la question soit (était) spécifique à Linux, un exemple utilisant les deux semble bien, car les utilisateurs de BSD ont peut-être l'habitude de regarder les pages "linux" de toute façon - en fait, je vais retirer Linux du titre et éditer une peu (à l'origine c'était auto-répondu et je ne pensais pas qu'il y avait une méthode portable).
goldilocks
5
ifconfig obsolète? Allons. Cette commande existe depuis environ 30 ans.
Michael Martinez
72

Le noyau les répertorie par nom /sys, les deux séparément (par exemple) dans l’arborescence des périphériques PCI - bien qu’il soit difficile de les trouver si vous ne savez pas par où commencer, il faut les regrouper 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 simplement les mettre tous avec:

ifconfig [name] up 

Ou:

ip link set [name] up

Et puis regardez les indices (assez clairs) listés par ifconfig(sans arguments). Le code source systemd lié au 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.

boucle d'or
la source
Le préfixe que je reçois pour Ethernet est eth. Je crois que enc'est pour le réseau local sans fil.
Kaushal Modi
4
@kaushalmodi ethest une chose du noyau Linux; systemd implémente via les noms d'interface prévisibles d' udev Freedesktop.org - ceux du noyau ne sont pas prévisibles dans le même sens, ce qui est à l'origine de toute la confusion. La citation ci-dessus est explicitement coupée et collée à partir d'ici . Il y a plus que cela, vu que je n'ai aucune machine systemd utilisant enEthernet; le plus proche est em, d'autres sont complètement différents. Vous pouvez lire le lien Freedesk.org dans la question vous-même pour plus d'explications.
goldilocks
4
[Plus tard] Au cours de l’année écoulée, Fedora ou systemd a corrigé cela? Mon PCI Ethernet est maintenant eno1.
goldilocks
10

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

Mohammad Rafiee
la source
4
mais cela ne donne que des interfaces actives, pas toutes les interfaces
Grant Bowman
4

ifconfig= Solaris
ipconfig= Windows
ip= Linux

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

Mick Myhera
la source
2
Hein? ifconfig c'est aussi Linux.
fpmurphy
4
@ fpmurphy1 Lisez le premier paragraphe (après le synopsis) de man ifconfigsur un système Linux.
goldilocks