Linux sans magie #58 — ifconfig ou ip : comprendre les différences et retrouver ses commandes
Comparer ifconfig et iproute2 sur Linux : interfaces, adresses IPv4/IPv6, routes, statistiques et voisins, avec des commandes en lecture seule et leurs limites.
Vous intervenez sur un serveur que vous ne connaissez pas. Votre premier réflexe est ifconfig, mais le terminal répond « command not found ». Un collègue lance ip a et affiche aussitôt des interfaces, des adresses IPv4 et IPv6 et des informations qui n'apparaissaient pas dans votre ancienne commande. Le réseau a-t-il changé ? Ou seulement l'outil qui permet de le lire ?
Après le #57, qui expliquait pourquoi Linux dispose de plusieurs familles d'outils réseau, ce #58 se concentre sur un cas précis : retrouver ses repères de ifconfig dans ip, sans imaginer qu'il suffit de remplacer une commande par une autre à l'identique.
Notre objectif est pratique : lire la configuration, identifier les différences de sortie, comprendre les limites et adopter une routine de diagnostic sûre, que vous soyez sur un serveur sans interface graphique ou sur un poste Desktop.
Deux familles, mais le même noyau Linux
ifconfig appartient à net-tools, une famille historique d'outils qui comprend aussi route, arp et netstat. L'outil a longtemps été incontournable pour examiner une interface.
ip appartient à iproute2. Son interface est organisée par objets : link pour les liens et interfaces, address pour les adresses IP, route pour le routage et neighbour pour les voisins réseau. Un même programme couvre donc plusieurs besoins qui étaient répartis entre plusieurs utilitaires.
Ancienne boîte à outils iproute2
ifconfig → interfaces ip link / ip address
route → routage ip route
arp → voisins IPv4 ip neighbour
netstat → sujets variés ss, ip -s link, autres outils
Le dernier rapprochement est volontairement partiel : ss est un autre utilitaire iproute2, pas un sous-objet de ip. Les outils ne produisent pas tous les mêmes données et ne couvrent pas des périmètres parfaitement identiques.
La documentation d'ifconfig signale elle-même une limite concernant certaines longues adresses matérielles, et oriente vers ip link. Cela illustre pourquoi iproute2 constitue le choix de référence pour une inspection moderne.
Objectif du lab : comparer sans modifier
Pré-requis : une machine Linux avec ip installé, un terminal utilisateur et aucune nécessité de droits root pour les consultations proposées. ifconfig est facultatif : ne l'installez pas uniquement pour ce lab. Les sorties varient selon la distribution, le noyau, la virtualisation et les droits.
Commencez par identifier les exécutables présents :
command -v ip
command -v ifconfig || echo "ifconfig non installé"
ip -V
Un chemin retourné par command -v prouve seulement qu'une commande est accessible dans votre environnement. Il ne dit rien du gestionnaire responsable de la configuration réseau ; c'est le sujet des #59 à #66.
Toutes les commandes de lecture ci-dessous peuvent être utilisées sur un poste Desktop, une VM ou un serveur, mais elles décrivent l'espace de noms réseau dans lequel elles sont lancées. Dans un conteneur, elles peuvent donc ne montrer qu'une vue isolée.
1 — Afficher les interfaces : ifconfig -a et ip link
L'ancienne commande utile pour afficher toutes les interfaces, y compris inactives, est :
ifconfig -a
Si ifconfig n'est pas installé, sautez cette ligne. Un ifconfig sans -a affiche généralement les interfaces actives : comparer cette sortie avec toutes les interfaces retournées par ip link peut conduire à une conclusion erronée.
L'équivalent de travail moderne est :
ip link show
ip -br link
ip link show présente les interfaces avec leurs drapeaux et informations de couche liaison. L'option -br produit une sortie plus compacte, adaptée à l'inventaire.
Exemple fictif :
lo UNKNOWN 00:00:00:00:00:00
ens160 UP 02:42:ac:11:00:02
veth-demo DOWN 8a:2b:00:00:00:01
Les adresses MAC et les noms sont inventés. UP ne prouve pas qu'un service distant est joignable, et UNKNOWN est fréquent pour lo ou certaines interfaces virtuelles : ces étiquettes ne suffisent pas à conclure à une panne.
Pour inspecter uniquement une interface vérifiée sur votre hôte, remplacez ens160 par son vrai nom :
ip -d link show dev <nom-interface-verifie>
Cette commande est en lecture seule, mais le nom de l'interface doit être relevé avant utilisation. Le détail -d peut révéler notamment le type d'interface virtuelle.
2 — Lire les adresses IPv4 et IPv6
ifconfig affiche des informations d'adressage selon son implémentation et ses options, mais son format n'est pas le référentiel le plus commode pour les fonctionnalités réseau modernes.
Avec iproute2 :
ip address show
ip -br address
ip -4 address show
ip -6 address show
address peut s'abréger en addr ou en a. Lorsqu'on apprend, écrire le nom complet facilite la lecture ; ip a est pratique au quotidien.
-4 limite l'affichage à IPv4 et -6 à IPv6. Une même interface peut porter plusieurs adresses, avec des portées différentes, et parfois des durées de validité liées à leur acquisition.
Exemple documentaire :
ens160 UP 192.0.2.25/24 2001:db8::25/64
Ces plages sont réservées à la documentation. /24 et /64 expriment des préfixes réseau ; ils ne sont pas des ports. Le #68 abordera en détail les préfixes CIDR et les sous-réseaux.
Un piège fréquent consiste à conclure qu'une interface sans adresse IPv4 est inutilisable. Elle peut être configurée uniquement en IPv6, ou n'être qu'un composant de niveau liaison d'un bridge ou d'une autre architecture.
3 — Les routes : ifconfig ne remplace pas route
Il faut corriger une habitude de vocabulaire : ifconfig n'a jamais été l'outil principal pour lire la table de routage. Historiquement, on utilisait notamment route -n, distinct de ifconfig.
route -n
Si net-tools n'est pas installé, sa sortie n'est pas disponible. Avec iproute2, préférez :
ip route show
ip -6 route show
ip rule show
Les deux premières commandes montrent les routes IPv4 et IPv6 de la table principale par défaut. La dernière montre les règles de sélection de tables utilisées pour le routage avancé. Un diagnostic complexe peut donc exiger d'examiner d'autres tables : la présence d'une route ne suffit pas à expliquer toutes les décisions de routage.
Une route par défaut peut apparaître comme suit :
default via 192.0.2.1 dev ens160
192.0.2.0/24 dev ens160 proto kernel scope link src 192.0.2.25
Cela décrit la configuration visible, pas une preuve de connectivité. Il faudra vérifier ensuite le chemin, le filtrage et le service distant. Le routage sera traité en profondeur au #70.
4 — Les voisins : arp et ip neighbour
Autre ancienne commande, autre rôle : arp -n consultait notamment les associations IPv4 vers adresses de liaison sur le segment local.
arp -n
L'outil moderne est :
ip neighbour show
ip -4 neighbour show
ip -6 neighbour show
ip neigh est une abréviation de ip neighbour. Contrairement à une vue strictement ARP IPv4, le concept de voisins couvre aussi les entrées IPv6 liées à NDP.
Des états tels que REACHABLE, STALE ou FAILED doivent être interprétés dans leur contexte. Une entrée STALE n'est pas automatiquement une panne : elle indique que l'information n'a pas été récemment confirmée. Les articles #73 et #76 compléteront cette lecture.
Une table vide ne signifie pas nécessairement « réseau coupé » : le système peut simplement ne pas avoir eu à contacter de voisin dans cette interface ou cet espace de noms.
5 — Statistiques, compteurs et erreurs
Dans ifconfig, les compteurs RX/TX sont souvent visibles directement. Pour examiner les statistiques avec iproute2 :
ip -s link show
ip -s -s link show
Ces commandes permettent de voir les octets, paquets, erreurs et pertes connus du noyau et du pilote. La signification précise des compteurs dépend toutefois du périphérique et de la couche d'observation.
Ne concluez pas à une panne sur un compteur non nul isolé. Comparez les mesures à deux instants et corrélez-les avec la supervision, les journaux et la charge. Un compteur total depuis le démarrage n'exprime pas nécessairement un incident en cours.
Pour les statistiques détaillées du pilote ou d'une carte Ethernet, ethtool peut compléter le diagnostic, mais c'est un autre outil, pas un remplacement d'ifconfig par ip.
Tableau pratique : retrouver ses commandes
| Besoin | Ancien outil | Commande moderne de lecture |
|---|---|---|
| Toutes les interfaces | ifconfig -a | ip link show |
| Vue courte des liens | Variable selon version | ip -br link |
| Adresses IP | ifconfig -a | ip address show |
| IPv4 uniquement | Affichage ifconfig à interpréter | ip -4 address show |
| IPv6 uniquement | Affichage ifconfig à interpréter | ip -6 address show |
| Routes IPv4 | route -n | ip route show |
| Routes IPv6 | Outils et options spécifiques | ip -6 route show |
| Voisins IPv4 | arp -n | ip -4 neighbour show |
| Voisins IPv6 | Pas d'équivalent ARP IPv4 | ip -6 neighbour show |
| Compteurs interfaces | ifconfig -a | ip -s link show |
Ce tableau établit des correspondances de diagnostic, pas des substitutions caractère pour caractère. Les colonnes ne garantissent ni des résultats identiques ni les mêmes possibilités de configuration.
Quel outil sur Debian, Ubuntu, RHEL, serveur ou Desktop ?
Sur un serveur Debian ancien, net-tools peut être présent par habitude. Sur une installation minimale récente, ifconfig peut être absent sans que cela constitue un dysfonctionnement. Sur un poste Desktop, le réseau peut être piloté par NetworkManager même lorsque l'on consulte les interfaces avec ip.
La commande de lecture ne définit pas le gestionnaire responsable du réseau. Vous pouvez exécuter ip address show sur une machine gérée par NetworkManager, par systemd-networkd ou par ifupdown. Cela ne dit pas où enregistrer durablement une adresse.
Le bon réflexe reste le même pour Debian, Ubuntu, RHEL, Rocky Linux ou une VM cloud : identifier la distribution et les interfaces, puis déterminer le mécanisme qui configure réellement chaque périphérique avant de modifier quoi que ce soit.
cat /etc/os-release
ip -br link
ip -br address
ip route show
Ces commandes fonctionnent sans présumer qu'un outil historique ou un environnement graphique est installé. Pour le gestionnaire et les profils persistants, le #59 détaillera la différence entre état courant et état souhaité.
Petit lab reproductible : cinq observations, zéro changement
Sur un hôte de test ou un serveur où vous êtes autorisé à consulter la configuration :
- Exécutez
ip -br linket repérez les interfaces sans supposer queeth0existe. - Exécutez
ip -br address: quelles interfaces ont une adresse IPv4 ? IPv6 ? - Affichez
ip route showetip -6 route show: les deux familles disposent-elles d'une route par défaut ? - Exécutez
ip neighbour show: y a-t-il des voisins connus ? Ne déduisez rien d'une liste vide. - Exécutez
ip -s link showet comparez les compteurs après un délai raisonnable sans générer de trafic artificiel.
Pour vérifier votre interprétation, notez dans votre compte rendu : l'interface, son état administratif, les adresses, les routes, les voisins et les compteurs. Séparez faits observés et hypothèses : « aucune route IPv6 affichée » n'équivaut pas à « le réseau est en panne ».
Le résultat attendu est une carte descriptive du réseau visible depuis votre session, pas un changement de configuration.
Limites, sécurité et retour arrière
Toutes les commandes exécutables proposées dans le lab sont des commandes d'observation. Les exemples de paramètres dev <...> restent volontairement fictifs dans un bloc non exécutable. Aucun changement de route, d'adresse ou d'état d'interface n'est demandé.
Les deux familles permettent aussi des modifications : ifconfig ... down et ip link set ... down peuvent interrompre brutalement une connexion distante. Évitez également d'essayer ip addr flush ou ip route flush pour « remettre à zéro » un diagnostic.
Pour les commandes présentées ici, aucun rollback n'est nécessaire, car aucune configuration n'est modifiée. Pour toute future écriture, identifiez d'abord le gestionnaire persistant, préparez un accès console hors bande et un retour arrière validé.
Les affichages peuvent contenir des adresses IP, noms d'interfaces ou détails de topologie confidentiels. Anonymisez les extraits avant de les publier.
Références officielles
- ifconfig(8) — net-tools
- ip(8) — iproute2
- ip-link(8) — liens et interfaces
- ip-address(8) — adresses IPv4 et IPv6
- ip-route(8) — routes et tables
- ip-neighbour(8) — ARP et voisins
Conclusion — Moderniser sans effacer l'historique
ifconfig reste utile pour comprendre des systèmes et des procédures hérités. ip fournit une interface plus large aux objets réseau actuels du noyau. L'enjeu n'est pas de connaître des raccourcis par cœur, mais de savoir quelle donnée chaque commande vous montre et quelles informations elle ne garantit pas.
Dans le #59, nous aborderons le piège suivant : une adresse est visible avec ip, mais qui l'a configurée, qui peut la réécrire, et pourquoi ne survit-elle pas toujours au redémarrage ?
