Les commandes reseau Linux ont change sous tes pieds : tu te connectes en ssh sur une machine, tu tapes ifconfig par pur reflexe, et tu te prends un command not found. La vieille bande net-tools (ifconfig, netstat, route, arp) n'est pas juste depreciee dans un futur flou, sur beaucoup de distros elle a carrement disparu, pas installee par defaut, et personne ne compte la ramener. Voila donc le jeu de remplacement livre aujourd'hui : ip et ss, venant d'iproute2. Les reponses les plus demandees d'abord (ip a pour tes adresses, ss -tulpn pour les ports en ecoute plus le process qui les tient), puis le tableau de correspondance pour que les commandes coincees dans tes doigts se traduisent en un jour.
The short answer
Vois tes IP avec ip a (forme longue ip addr show), ou ip -4 a pour l'IPv4
seulement, ou hostname -I quand tu la veux scriptable. Les ports en ecoute plus le
process qui les tient : ss -tulpn. La table de routage c'est ip route, et
ip route get 1.1.1.1 montre quelle route un paquet emprunterait. La table ARP est
maintenant ip neigh. net-tools (ifconfig, netstat, route, arp) est deprecie
en amont et absent de la plupart des installs minimales, alors apprends plutot le jeu
iproute2.
Tu te connectes en ssh sur une machine, tu tapes ifconfig par pur réflexe, et la machine te répond command not found. Bienvenue sur une Debian fraîche, une Arch, à peu près n'importe quelle install minimale moderne. La vieille bande net-tools (ifconfig, netstat, route, arp) n'est pas juste dépréciée dans un futur flou. Sur beaucoup de distros elle a carrément disparu, pas installée par défaut, et personne ne compte la ramener.
Voilà donc le jeu de remplacement, ce qui est livré aujourd'hui pour de vrai : ip et ss, le tout venant d'iproute2. C'est l'antisèche que j'aurais aimé qu'on me file la première fois qu'un serveur m'a dit que ma commande favorite n'existait pas. Les réponses les plus demandées d'abord, puis le tableau de correspondance pour traduire ce que tes doigts connaissent déjà.
Dis-moi juste mon adresse IP
La raison la plus fréquente pour laquelle on dégaine ces outils, franchement. Tu veux savoir sur quelle adresse la machine est posée. Trois façons, selon le bruit que tu peux supporter.
ip amontre tout : chaque interface, l'IPv4, l'IPv6, la MAC, l'état du lien. C'est le tableau complet, et un poil bavard.ip -4 afiltre pour ne garder que l'IPv4, ce qui est en général ce que tu voulais vraiment.hostname -Irecrache juste les adresses, séparées par des espaces, sans étiquettes. Parfait dans un script. Le flag est un I majuscule, pas minuscule, ça pège les gens en permanence.
Pour ton IP publique, aucune de ces commandes n'aide, au passage : elles affichent toutes l'adresse locale/privée. La machine derrière un NAT n'a aucune idée de ce que le monde voit. Pour ça tu interroges un service extérieur, ou tu utilises notre outil quelle est mon adresse IP depuis le même réseau.
ip a, ip link : adresses et interfaces
La commande ip est bâtie autour d'objets. Tu nommes l'objet, puis l'action. ip address pour les adresses, ip link pour les interfaces elles-mêmes, ip route pour le routage, ip neighbour pour la table ARP. Presque tout se raccourcit, donc ip a, ip l, ip r, ip n marchent tous. Ça ménage tes doigts une fois que le déclic se fait.
| Commande | Ce qu'elle fait |
|---|---|
ip a · ip addr show | Affiche toutes les interfaces avec leurs adresses IPv4 et IPv6 |
ip -4 a | Pareil, mais IPv4 seulement (mets -6 pour l'IPv6 seulement) |
ip a show dev eth0 | Une seule interface, par son nom |
ip link | Liste les interfaces avec état et MAC, sans les adresses IP |
ip -br a | Vue brève, une ligne par interface, bien plus facile à parcourir |
La dernière, ip -br a (brief), est criminellement sous-utilisée. Elle replie le mur de texte en une colonne nette : interface, état, adresse. Quand tu veux juste jeter un oeil et passer à autre chose, c'est celle-là.
La vraie première impression : ouais, ip paraît lourd quand tu viens d'ifconfig. Plus de mots, une grammaire objet-puis-verbe qui se lit à l'envers au début. J'ai râpé dessus pendant une bonne semaine. Et puis un jour tu tends la main vers ifconfig sur un nouveau serveur, il n'est pas là, et tu réalises qu'en fait il ne te manque pas. La cohérence finit par te convaincre. Accorde-lui cette semaine.
Monter ou descendre une interface, ajouter une adresse
C'est là que ip justifie sa place, parce qu'il fait aussi la configuration, pas que l'affichage en lecture seule. Changer l'état d'un lien et assigner des adresses demandent les droits root, donc sudo devant ou tu te prends une erreur de permission.
- Monter une interface :
sudo ip link set dev eth0 up - La descendre :
sudo ip link set dev eth0 down - Ajouter une adresse :
sudo ip addr add 192.168.1.10/24 dev eth0 - Retirer cette adresse :
sudo ip addr del 192.168.1.10/24 dev eth0
Un truc qui mérite d'être dit à voix haute : les changements faits avec ip sont actifs mais pas sauvegardés. Tu redémarres, ils sont partis. Pour quoi que ce soit de permanent, tu édites la config qui possède l'interface, Netplan, NetworkManager, systemd-networkd, selon ta distro. Les commandes ip sont parfaites pour tester un correctif tout de suite, ou rustiner un truc en urgence. Faut juste pas compter qu'elles survivent à un reboot.
Routage : ip route et le seul tour à connaître
Ta table de routage dit au noyau où envoyer les paquets. ip route (ou ip r) l'affiche, et la ligne de la passerelle par défaut est en général celle qui t'intéresse.
| Commande | Ce qu'elle fait |
|---|---|
ip route | Affiche toute la table de routage ; la ligne default via est ta passerelle |
ip route get 1.1.1.1 | Montre exactement quelle route et quelle IP source un paquet vers cet hôte utiliserait |
sudo ip route add 10.0.0.0/24 via 192.168.1.1 | Ajoute une route statique |
sudo ip route del 10.0.0.0/24 | La supprime |
Cette commande ip route get, c'est la pépite cachée. Au lieu de plisser les yeux sur la table et de faire le plus-long-préfixe dans ta tête, tu lui donnes une destination et elle te dit la vraie route que le noyau choisirait, plus l'adresse source qu'il prendrait. Pour déboguer le fameux "pourquoi ce trafic ne part pas là où je crois," c'est la réponse la plus rapide qui existe. Combine-la avec notre calculateur de subnet IP quand le calcul d'une route devient flou.
ss : le remplaçant de netstat où tu vas vraiment vivre
Bon, ss (socket statistics). C'est la grosse. Elle remplace netstat, elle est plus rapide sur les systèmes chargés parce qu'elle lit les données du noyau plus directement, et la combinaison de flags à graver dans ta mémoire, c'est ss -tulpn.
On la décortique, parce que les lettres ne sont pas évidentes : t c'est TCP, u c'est UDP, l c'est les sockets en écoute seulement, p montre le process propriétaire (faut root pour voir ceux que tu ne possèdes pas), n garde les ports en numérique pour ne pas ralentir à résoudre les noms. Colle-les ensemble et tu obtiens une liste propre de chaque service en écoute sur la machine et exactement quel programme tient chaque port.
| Commande | Ce qu'elle fait |
|---|---|
sudo ss -tulpn | Tous les ports TCP et UDP en écoute, plus le process derrière chacun |
ss -s | Résumé : nombre de sockets par type, coup d'oeil santé rapide |
ss -tan | Toutes les sockets TCP (pas que en écoute), en numérique |
ss -tp state established | Seulement les connexions TCP vivantes, établies |
sudo ss -tulpn | grep :443 | Qui tient le port 443 ? Réponse en une ligne |
Si un autre truc squatte un port dont ton service a besoin, ss -tulpn passé dans grep te trouve le coupable en quelques secondes. Tu vérifies plutôt un port depuis une autre machine ? Notre vérificateur de ports TCP s'occupe du côté distant. Et le résumé ss -s fait un joli contrôle de pouls en cinq secondes : total des sockets, combien dans chaque état, est-ce qu'un truc fuit des connexions.
ip neigh : la table ARP, renommée
La table ARP fait correspondre les adresses IP aux adresses MAC sur ton segment local. L'ancienne commande, c'était arp -a. Maintenant c'est ip neigh (neighbour, abrégé ip n).
ip neighliste les entrées voisines actuelles avec leurs états (REACHABLE, STALE, et compagnie)ip neigh show dev eth0resserre sur une seule interfacesudo ip neigh flush dev eth0vide le cache d'une interface quand une entrée t'a ranci dessus
La plupart du temps tu n'y toucheras pas. Mais quand une machine du LAN est injoignable et que tu cherches à savoir si elle répond ne serait-ce qu'au niveau 2, ip neigh est exactement là où tu regardes. Une entrée FAILED là-dedans te dit que l'hôte ne répond pas du tout à l'ARP, ce qui resserre le problème vite fait.
Ancienne commande vers nouvelle, l'antisèche
Voilà celle à mettre en favori. Si tes doigts connaissent net-tools, lis juste la colonne de gauche et apprends celle de droite. La correspondance est assez proche pour que le réapprentissage prenne un jour, pas une semaine.
| Ancien (net-tools) | Nouveau (iproute2) | Pour |
|---|---|---|
ifconfig | ip a | Afficher interfaces et adresses |
ifconfig eth0 up | ip link set dev eth0 up | Monter ou descendre une interface |
ifconfig eth0 192.168.1.10/24 | ip addr add 192.168.1.10/24 dev eth0 | Assigner une adresse |
netstat -tulpn | ss -tulpn | Ports en écoute plus process |
netstat -tan | ss -tan | Toutes les connexions TCP |
route -n | ip route | Afficher la table de routage |
route add ... | ip route add ... | Ajouter une route statique |
arp · arp -a | ip neigh | Afficher la table ARP / voisins |
Si t'as vraiment besoin des vieux binaires sur une machine moderne, le paquet s'appelle en général net-tools et tu peux toujours l'installer. Je te le déconseillerais, ceci dit. Tu apprends le truc déprécié pour éviter d'apprendre l'actuel, et l'actuel est meilleur. Passe la journée dessus à la place.
Sources
- man7.org : page de manuel ip(8) (iproute2)
- man7.org : page de manuel ss(8) (iproute2)
- man7.org : page de manuel ip-route(8)
Questions fréquentes
Pourquoi ifconfig est introuvable sur mon serveur Linux ?
Parce que net-tools n'est plus installe par defaut sur la plupart des distros modernes. Debian, Ubuntu serveur, Arch, Fedora et d'autres livrent iproute2 a la place, ou la commande est ip. Tu peux installer le vieux paquet net-tools si tu tiens vraiment a recuperer ifconfig, mais le remplacant prevu c'est ip a. C'est celle a apprendre.
Qu'est-ce qui a remplace netstat sous Linux ?
C'est ss, pour socket statistics, qui vient aussi d'iproute2. Elle fait le meme boulot et tourne plus vite sur les machines chargees parce qu'elle lit les donnees de sockets du noyau plus directement. La commande de tous les jours c'est ss -tulpn : TCP et UDP, en ecoute seulement, avec le process proprietaire, ports gardes en numerique. Lance-la avec sudo pour voir les process que tu ne possedes pas.
Comment voir quel process utilise un port ?
Lance sudo ss -tulpn et regarde la colonne Process, ou passe-le dans un pipe comme sudo ss -tulpn | grep :8080 pour sauter direct au port qui t'interesse. Le flag -p est ce qui montre le programme, et il te faut root pour voir les process appartenant a d'autres utilisateurs. C'est la facon la plus rapide de trouver ce qui squatte un port dont t'as besoin.
Comment trouver mon adresse IP en ligne de commande ?
Utilise ip a pour la vue complete, ou ip -4 a pour reduire a l'IPv4 seulement. Pour une reponse propre et scriptable, utilise hostname -I (I majuscule), qui affiche juste les adresses. Toutes ces commandes montrent ton adresse locale. Ton IP publique vit en dehors du NAT, donc pour ca tu interroges un service externe ou tu utilises une page quelle-est-mon-adresse-ip.
ip et ss sont-elles permanentes ? Survivent-elles a un reboot ?
Non. Tout ce que tu poses avec ip, une adresse, une route, une interface qui monte, est actif immediatement mais ne vit qu'en memoire et disparait au reboot. Pour une config permanente tu edites ce qui possede l'interface sur ta distro : Netplan, NetworkManager ou systemd-networkd. Traite les commandes ip comme l'outil pour tester ou depanner en urgence, puis ecris-le dans la vraie config.