NetworkGuide

Commandes reseau Linux : antiseche ip et ss

Sur cette page
  1. Dis-moi juste mon adresse IP
  2. ip a, ip link : adresses et interfaces
  3. Monter ou descendre une interface, ajouter une adresse
  4. Routage : ip route et le seul tour à connaître
  5. ss : le remplaçant de netstat où tu vas vraiment vivre
  6. ip neigh : la table ARP, renommée
  7. Ancienne commande vers nouvelle, l'antisèche
  8. Sources

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.

ip avoir tes adresses
ss -tulpnports en ecoute plus process
ip routetable de routage et passerelle
Carte reponse : ifconfig devient ip a, netstat -tulpn devient ss -tulpn, route devient ip route, arp devient ip neigh, avec les quatre sous-commandes ip de base listees a cote.
Le vieux reflexe a gauche, ce qu'il faut taper maintenant a droite. Une seule carte. PNG

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 a montre tout : chaque interface, l'IPv4, l'IPv6, la MAC, l'état du lien. C'est le tableau complet, et un poil bavard.
  • ip -4 a filtre pour ne garder que l'IPv4, ce qui est en général ce que tu voulais vraiment.
  • hostname -I recrache 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.

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.

CommandeCe qu'elle fait
ip a · ip addr showAffiche toutes les interfaces avec leurs adresses IPv4 et IPv6
ip -4 aPareil, mais IPv4 seulement (mets -6 pour l'IPv6 seulement)
ip a show dev eth0Une seule interface, par son nom
ip linkListe les interfaces avec état et MAC, sans les adresses IP
ip -br aVue 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.

CommandeCe qu'elle fait
ip routeAffiche toute la table de routage ; la ligne default via est ta passerelle
ip route get 1.1.1.1Montre 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.1Ajoute une route statique
sudo ip route del 10.0.0.0/24La 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.

CommandeCe qu'elle fait
sudo ss -tulpnTous les ports TCP et UDP en écoute, plus le process derrière chacun
ss -sRésumé : nombre de sockets par type, coup d'oeil santé rapide
ss -tanToutes les sockets TCP (pas que en écoute), en numérique
ss -tp state establishedSeulement les connexions TCP vivantes, établies
sudo ss -tulpn | grep :443Qui 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.

Terminal montrant ss -tulpn listant les ports en ecoute avec leur process proprietaire, et ip route get affichant la route et l'IP source qu'un paquet utiliserait.
Les deux commandes a memoriser : ss -tulpn pour les ports plus le process, ip route get pour la route qu'un paquet emprunte vraiment. PNG

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 neigh liste les entrées voisines actuelles avec leurs états (REACHABLE, STALE, et compagnie)
  • ip neigh show dev eth0 resserre sur une seule interface
  • sudo ip neigh flush dev eth0 vide 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
ifconfigip aAfficher interfaces et adresses
ifconfig eth0 upip link set dev eth0 upMonter ou descendre une interface
ifconfig eth0 192.168.1.10/24ip addr add 192.168.1.10/24 dev eth0Assigner une adresse
netstat -tulpnss -tulpnPorts en écoute plus process
netstat -tanss -tanToutes les connexions TCP
route -nip routeAfficher la table de routage
route add ...ip route add ...Ajouter une route statique
arp · arp -aip neighAfficher 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

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.