Commandes réseau sous Linux

Objectifs et prérequis

Prérequis : notions de réseau vues en première (adresses IP, masque de sous-réseau, modèle TCP/IP), protocoles de routage

À l’issue de ce chapitre, vous saurez :

  • utiliser ip a pour afficher et interpréter la configuration réseau d’une machine ;
  • tester la connectivité entre deux machines avec ping ;
  • tracer le chemin emprunté par un paquet grâce à traceroute ;
  • interroger un serveur DNS avec nslookup ou dig ;
  • examiner les connexions réseau actives avec ss ;
  • consulter la table ARP d’une machine avec arp ou ip neigh.

Introduction

Les systèmes d’exploitation de type UNIX (Linux, macOS, BSD) fournissent un ensemble de commandes en ligne permettant de configurer, tester et diagnostiquer le réseau. Ces outils sont indispensables à tout administrateur système, mais aussi à quiconque cherche à comprendre concrètement le fonctionnement des réseaux étudiés en cours.

Toutes les commandes présentées ici s’exécutent dans un terminal (aussi appelé shell). Sous Linux, on ouvre un terminal avec le raccourci Ctrl + Alt + T ou via le menu des applications.

Remarque : certaines commandes historiques (ifconfig, netstat, route) sont progressivement remplacées par des alternatives plus modernes (ip, ss). Nous présenterons les commandes modernes en priorité, avec une mention des commandes historiques encore très répandues.

Afficher la configuration réseau : ip a

Principe

La commande ip a (abréviation de ip addr show) affiche la liste de toutes les interfaces réseau de la machine ainsi que leurs adresses IP, masques de sous-réseau et adresses MAC.

Exemple d’utilisation

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
    link/loopback 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    link/ether 4c:ed:fb:a2:33:7e
    inet 192.168.1.42/24 brd 192.168.1.255 scope global enp3s0
    inet6 fe80::4eed:fbff:fea2:337e/64 scope link
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500
    link/ether 60:f2:62:c4:11:a0

Lecture du résultat

Chaque bloc correspond à une interface réseau :

  • lo est l’interface de loopback (boucle locale). Son adresse est toujours 127.0.0.1. Elle permet à la machine de communiquer avec elle-même, ce qui est utile pour tester des services localement.
  • enp3s0 est une interface Ethernet filaire. On y lit :
    • l’adresse MAC : 4c:ed:fb:a2:33:7e (après link/ether) ;
    • l’adresse IPv4 : 192.168.1.42 avec le masque /24 (soit 255.255.255.0) ;
    • l’adresse de diffusion (broadcast) : 192.168.1.255.
  • wlp2s0 est une interface Wi-Fi. Ici, elle n’a pas d’adresse IP : elle n’est pas connectée à un réseau.

Commande historique : ifconfig affiche des informations similaires. Elle reste disponible sur la plupart des systèmes mais est considérée comme obsolète sur les distributions Linux récentes.

Exercice

Exécutez ip a sur votre machine (ou sur un simulateur). Identifiez le nom de chaque interface, son adresse IP et son masque de sous-réseau. Quelle est l’adresse réseau associée à chaque interface ?

Tester la connectivité : ping

Principe

La commande ping envoie des paquets ICMP (Internet Control Message Protocol) à une machine distante et attend une réponse. Elle permet de vérifier que la communication avec une machine distante est possible et de mesurer le temps d’aller-retour (round-trip time, ou RTT).

ping fonctionne au niveau de la couche internet du modèle TCP/IP.

Exemple d’utilisation

$ ping -c 4 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.23 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.98 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.05 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=1.12 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.980/1.095/1.230/0.091 ms

Lecture du résultat

Pour chaque paquet envoyé, on obtient :

  • icmp_seq : le numéro de séquence du paquet ;
  • ttl (time to live) : le nombre maximal de routeurs que le paquet peut encore traverser avant d’être détruit ;
  • time : le temps d’aller-retour en millisecondes.

Le résumé final indique le nombre de paquets envoyés, reçus, le pourcentage de perte et les statistiques de temps (minimum, moyenne, maximum).

Remarque : l’option -c 4 limite l’envoi à 4 paquets. Sans cette option, ping continue indéfiniment sous Linux (on l’arrête avec Ctrl + C).

Diagnostic

SituationInterprétation possible
Réponse normaleLa machine distante est joignable
Destination Host UnreachablePas de route vers la destination
aucune réponse, puis 100% packet lossLa machine ne répond pas (pare-feu, machine éteinte)
Perte partielle de paquetsLiaison instable ou saturée

Exercice

  1. Exécutez ping -c 4 127.0.0.1. Que testez-vous exactement ? Quel TTL obtenez-vous et pourquoi ?
  2. Exécutez ping -c 4 suivi de l’adresse de votre passerelle par défaut (souvent 192.168.1.1 ou 192.168.0.1). Interprétez le résultat.

Tracer le chemin d’un paquet : traceroute

Principe

La commande traceroute affiche la liste de tous les routeurs traversés par un paquet entre la machine locale et une destination.

Pour comprendre son fonctionnement, il faut d’abord rappeler le rôle du champ TTL (time to live) des paquets IP. Ce champ existe pour empêcher un paquet de circuler indéfiniment dans le réseau en cas d’erreur de routage : chaque routeur traversé décrémente le TTL de 1, et si celui-ci atteint 0, le routeur détruit le paquet et renvoie un message d’erreur ICMP Time Exceeded à l’expéditeur.

traceroute détourne ce mécanisme de protection : elle envoie un premier paquet avec TTL = 1, qui est donc détruit par le premier routeur, lequel révèle son adresse IP dans le message d’erreur. Puis elle envoie un paquet avec TTL = 2, détruit par le deuxième routeur, et ainsi de suite jusqu’à atteindre la destination.

Exemple d’utilisation

$ traceroute www.education.gouv.fr
traceroute to www.education.gouv.fr (185.75.143.36), 30 hops max
 1  box (192.168.1.1)  1.234 ms  1.102 ms  1.089 ms
 2  10.45.128.1  5.678 ms  5.432 ms  5.501 ms
 3  lag-10.nantes.francetelecom.net  12.34 ms  12.12 ms  12.45 ms
 4  ae41.paris1.francetelecom.net  18.56 ms  18.23 ms  18.67 ms
 5  185.75.143.36  19.12 ms  18.98 ms  19.23 ms

Lecture du résultat

Chaque ligne correspond à un routeur intermédiaire (un hop). On y trouve :

  • le numéro du saut ;
  • le nom et l’adresse IP du routeur. Pour chaque routeur, traceroute tente une résolution DNS inverse (de l’adresse IP vers un nom de domaine) : si elle aboutit, le nom apparaît à côté de l’adresse (par exemple lag-10.nantes.francetelecom.net), sinon seule l’adresse IP est affichée ;
  • trois mesures de temps d’aller-retour.

Des étoiles * * * indiquent qu’un routeur n’a pas répondu (pare-feu ou configuration ICMP restrictive).

Variante : sous Windows, la commande équivalente est tracert. Elle utilise des paquets ICMP au lieu d’UDP.

Exercice

En observant la sortie ci-dessus, combien de routeurs le paquet traverse-t-il ? Identifiez le routeur qui introduit le plus grand saut de latence et proposez une explication.

Interroger le DNS : nslookup et dig

Principe

Le DNS (Domain Name System) est le service qui traduit les noms de domaine (comme www.education.gouv.fr) en adresses IP. Les commandes nslookup et dig permettent d’interroger manuellement un serveur DNS.

Exemple avec nslookup

$ nslookup www.education.gouv.fr
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	www.education.gouv.fr
Address: 185.75.143.36

Le résultat indique :

  • le serveur DNS interrogé (192.168.1.1, ici la box internet, sur le port 53) ;
  • l’adresse IP associée au nom de domaine demandé ;
  • la mention non-authoritative answer, qui signifie que la réponse provient du cache du serveur DNS et non du serveur faisant autorité pour ce domaine.

Exemple avec dig

$ dig www.education.gouv.fr +short
185.75.143.36

dig est plus complet que nslookup et donne davantage de détails techniques. L’option +short permet d’obtenir uniquement l’adresse IP.

Rappel : la résolution DNS intervient au niveau de la couche application du modèle TCP/IP. Le protocole DNS utilise le port UDP 53 par défaut.

Exercice

  1. Utilisez nslookup pour trouver l’adresse IP de www.python.org. Quel serveur DNS a répondu ?
  2. Utilisez dig www.python.org (sans +short). Identifiez le type d’enregistrement DNS retourné (champ A pour une adresse IPv4).

Examiner les connexions réseau : ss

Principe

La commande ss (socket statistics) affiche les connexions réseau actives, les ports en écoute et les protocoles utilisés. Elle remplace l’ancienne commande netstat.

Options courantes

OptionSignification
-tConnexions TCP uniquement
-uConnexions UDP uniquement
-lPorts en écoute (listening) uniquement
-nAfficher les numéros de port au lieu des noms de service
-pAfficher le processus associé à chaque connexion

Exemple d’utilisation

$ ss -tln
State    Recv-Q   Send-Q   Local Address:Port   Peer Address:Port
LISTEN   0        128      0.0.0.0:22            0.0.0.0:*
LISTEN   0        5        127.0.0.1:631         0.0.0.0:*
LISTEN   0        128      0.0.0.0:80            0.0.0.0:*

Lecture du résultat

Cette sortie montre trois services en écoute :

  • le port 22 : serveur SSH (accès distant sécurisé) ;
  • le port 631 : service CUPS (impression), qui n’écoute que sur 127.0.0.1 donc uniquement en local ;
  • le port 80 : serveur HTTP (pages web).

Commande historique : netstat -tln produit un résultat équivalent. On la retrouve encore dans de nombreux tutoriels et sujets d’examen.

Exercice

Exécutez ss -tln sur votre machine. Quels services sont en écoute ? Pour chaque port, recherchez le service associé (les ports standards sont documentés dans le fichier /etc/services).

Consulter la table ARP : arp et ip neigh

Principe

Le protocole ARP (Address Resolution Protocol) permet de trouver l’adresse MAC associée à une adresse IP dans un réseau local. Chaque machine maintient une table ARP (ou cache ARP) qui mémorise les correspondances récemment résolues.

ARP intervient au niveau de la couche accès réseau (couche la plus basse du modèle TCP/IP).

Exemple d’utilisation

$ ip neigh
192.168.1.1 dev enp3s0 lladdr e4:5d:51:a3:22:f0 REACHABLE
192.168.1.15 dev enp3s0 lladdr 3c:a6:f6:12:bb:cc STALE

Ou avec la commande historique :

$ arp -a
box (192.168.1.1) at e4:5d:51:a3:22:f0 [ether] on enp3s0
portable (192.168.1.15) at 3c:a6:f6:12:bb:cc [ether] on enp3s0

Lecture du résultat

Chaque ligne associe une adresse IP à une adresse MAC sur une interface donnée. L’état indique la fraîcheur de l’entrée :

  • REACHABLE : la correspondance est récente et confirmée ;
  • STALE : la correspondance est ancienne et pourrait ne plus être valide ;
  • INCOMPLETE : une requête ARP a été envoyée mais aucune réponse n’a été reçue.

Exercice

  1. Exécutez ip neigh (ou arp -a) sur votre machine. Identifiez l’adresse MAC de votre passerelle par défaut.
  2. Exécutez ping -c 1 192.168.1.X (une adresse du réseau local), puis consultez à nouveau la table ARP. Qu’observez-vous ?

Récapitulatif des commandes

CommandeCouche TCP/IPRôle
ip a / ifconfigAccès réseauAfficher la configuration des interfaces
pingInternet (ICMP)Tester la connectivité
traceroute / tracertInternet (ICMP/UDP)Tracer le chemin d’un paquet
nslookup / digApplication (DNS)Résoudre un nom de domaine
ss / netstatTransport (TCP/UDP)Examiner les connexions actives
ip neigh / arpAccès réseau (ARP)Consulter la table ARP
L'essentiel à retenir
  • Chaque commande réseau opère à un niveau précis du modèle TCP/IP, depuis la couche accès réseau (arp, ip a) jusqu’à la couche application (nslookup, dig).
  • ip a affiche la configuration des interfaces (adresse IP, masque, adresse MAC) ; c’est le point de départ de tout diagnostic réseau.
  • ping vérifie la connectivité entre deux machines grâce au protocole ICMP et mesure le temps d’aller-retour.
  • traceroute révèle le chemin complet d’un paquet en exploitant le mécanisme du TTL, ce qui permet de localiser les goulets d’étranglement.
  • nslookup et dig interrogent le DNS pour résoudre un nom de domaine en adresse IP (port UDP 53).
  • ss (ou netstat) liste les connexions réseau actives et les ports en écoute, utile pour vérifier quels services tournent sur une machine.
  • ip neigh (ou arp) affiche la table ARP qui associe adresses IP et adresses MAC au sein d’un réseau local.
  • Les commandes modernes (ip, ss) remplacent progressivement les commandes historiques (ifconfig, netstat, route) mais ces dernières restent courantes dans les sujets d’examen.
Vérifiez votre compréhension
  1. Un élève exécute ping 192.168.1.1 et obtient Destination Host Unreachable. Quelle est la cause la plus probable et à quel niveau du modèle TCP/IP se situe le problème ?
    RéponseLe message Destination Host Unreachable signifie qu'aucune route n'a été trouvée vers la destination. Le problème se situe au niveau de la couche internet (couche réseau) : soit la machine n'a pas de passerelle configurée, soit le routeur ne connaît pas de route vers le réseau demandé. On peut vérifier la configuration avec ip a et la table de routage avec ip route.
  2. Quelle est la différence fondamentale entre les informations fournies par ip a et celles fournies par ip neigh ?
    Réponseip a affiche la configuration propre à la machine : ses interfaces, ses adresses IP et ses adresses MAC. ip neigh affiche la table ARP, c'est-à-dire les correspondances IP ↔ MAC des autres machines du réseau local avec lesquelles la machine a récemment communiqué. L'une concerne la machine locale, l'autre ses voisins.
  3. traceroute envoie successivement des paquets avec TTL = 1, puis TTL = 2, etc. Pourquoi cette technique permet-elle de découvrir les routeurs intermédiaires ?
    RéponseChaque routeur qui reçoit un paquet décrémente son TTL de 1. Si le TTL atteint 0, le routeur détruit le paquet et renvoie un message d'erreur ICMP Time Exceeded à l'expéditeur, révélant ainsi son adresse IP. En augmentant progressivement le TTL, on force chaque routeur successif à se dévoiler.