25/03/2025

Commandes et Système

Top 15 des commandes Linux pour administrer et diagnostiquer le réseau

I. Présentation

Découvrez 15 commandes indispensables pour gérer le réseau en ligne de commande sous Linux. Que ce soit pour afficher la configuration réseau, diagnostiquer un problème de connectivité, tester un port ou encore analyser le trafic réseau, il y a des commandes à connaître.

Si vous débutez dans l'administration de Linux, si vous souhaitez approfondir vos compétences, ou simplement si vous recherchez un mémo des commandes réseau à connaître sur Linux, vous êtes au bon endroit. En effet, cet article évoque des commandes variées correspondantes à différents types de besoins !

II. Linux : afficher la configuration réseau

A. La commande ip a

Fut un temps où il était nécessaire d'utiliser la commande "ifconfig" sur Linux pour afficher sa configuration réseau. Cela pouvait être utile pour afficher l'adresse IP d'une machine ou simplement récupérer le nom de la carte réseau. Désormais, la commande "ip a", qui est une abréviation de "ip addr show", doit être utilisée. Elle est intégrée à la collection d'utilitaires nommée iproute2.

C'est la méthode à privilégier, et surtout, la commande "ifconfig" n'est plus reconnue (même si cela dépend de l'environnement sur lequel vous exécutez la commande). Si la commande "ifconfig" est introuvable sur une machine, vous savez pourquoi.

Exemples d'utilisation de la commande ip a :

ip a

Ce simple appel affiche toutes les interfaces réseau et leurs informations détaillées, notamment les adresses IPv4 et IPv6. Si vous souhaitez afficher des informations sur une interface précise uniquement, vous pouvez utiliser cette commande :

ip a show <nom de l'interface>
ip a show ens33
ip a s ens33

B. La commande netplan

En matière de gestion du réseau, il y a également Netplan, un outil de configuration du réseau, positionné au-dessus des gestionnaires de configuration réseau "systemd-networkd" et "NetworkManager". Il est présent par défaut sur Ubuntu, et compte tenu de la popularité de ce système et de la disponibilité de Netplan sur Debian, il me semble important de vous en parler dans cet article.

Ainsi, vous devez être capable, à minima, d'afficher la configuration de Netplan lorsqu'il est utilisé pour gérer le réseau sur une machine Linux.

Exemple d'utilisation de la commande netplan :

netplan status --all

Cette commande affiche la configuration détaillée de toutes les interfaces. Les adresses MAC sont aussi précisées, tout comme les routes.

Vous pouvez approfondir le sujet en lisant ce tutoriel :

C. La commande ip route

La commande "ip a" n'affiche pas la route par défaut utilisée par la machine Linux. Pour afficher et modifier la table de routage sur Linux, et donc afficher l'itinéraire par défaut, il convient de s'orienter vers la commande "ip route".

Exemples d'utilisation de la commande ip route :

ip route show

Cette commande affiche les routes en cours d'utilisation, notamment la passerelle par défaut et les itinéraires spécifiques définis sur le système.

Pour définir une nouvelle passerelle par défaut, voici la syntaxe à adopter. Ici, l'adresse IP "192.168.14.2" sera définie comme passerelle par défaut.

sudo ip route add default via 192.168.14.2

Si besoin, vous pouvez aussi spécifier l'interface de sortie, ici "ens33" :

sudo ip route add default via 192.168.14.2 dev ens33

III. Linux : tester la connectivité réseau

A. La commande ping

Doit-on encore présenter la commande "ping" ? À la fois incontournable et basique, elle reste très utile pour le diagnostic de premier niveau sur un réseau. La commande ping envoie une série de paquets ICMP (Internet Control Message Protocol) à un hôte de destination (adresse IP, nom) pour vérifier s'il est joignable et mesurer le temps de réponse.

Exemples d'utilisation de la commande ping :

Vous pouvez effectuer un simple ping en spécifiant la commande suivante. Par défaut, le ping est continu sur Linux, donc vous devez l'arrêter avec CTRL + C.

ping www.it-connect.fr
ping 1.1.1.1

Si vous souhaitez limiter le nombre de paquets envoyés à quatre, vous pouvez utiliser l'option "-c 4".

ping -c 4 1.1.1.1

Ce qui donne :

Pour forcer le ping en IPv4 ou en IPv6, selon vos besoins, vous pouvez utiliser ces options :

# IPv4
ping -4 www.google.fr

# IPv6
ping -6 www.google.fr

Pour approfondir le sujet, vous pouvez lire cet article :

B. La commande traceroute

La commande "traceroute" permet d’afficher le chemin emprunté par un paquet jusqu’à sa destination, en identifiant chaque routeur traversé. Si vous n'arrivez pas à joindre un hôte, vous pouvez tenter d'identifier un point de blocage grâce à l'utilisation de cette commande. Cela peut aussi aider à comprendre où se situe la coupure sur un réseau, en cas d'échec de connectivité, même si la non-réponse de certains équipements peut rendre l'analyse plus difficile.

Exemples d'utilisation de la commande traceroute :

traceroute 1.1.1.1

Si vous n'avez pas accès à cette commande, vous devez installer traceroute :

sudo apt update && sudo apt install traceroute

Ensuite, vous obtenez l'itinéraire en guise de résultat. Néanmoins, lorsque vous exécutez traceroute, des astérisques (*) peuvent s'afficher dans la console lorsque l’outil ne reçoit pas de réponse d’un routeur intermédiaire (timeout). Il peut s'agir simplement d'un filtrage effectué au niveau de l'équipement.

Par défaut, l'outil traceroute utilise des paquets UDP pour déterminer l'itinéraire. Si un pare-feu filtre ces paquets, vous pouvez essayer d’utiliser l’option "-I" pour basculer sur des paquets ICMP :

sudo traceroute -I 1.1.1.1

Sinon, vous pouvez aussi utiliser l’option "-T" pour utiliser des paquets TCP à la place d'UDP (et d'ICMP). Néanmoins, l'itinéraire pourra être déterminé de façon moins précise.

sudo traceroute -T 1.1.1.1

C. La commande mtr (My Traceroute)

Derrière la commande "mtr" se cache en réalité un outil nommé My Traceroute qui présente l'avantage de combiner à la fois le ping et le traceroute. Bien qu'il s'utilise en mode console, son interface est claire et surtout, les données sont actualisées en temps réel. Nous avons donc droit à une visualisation plus dynamique du chemin réseau emprunté.

Exemples d'utilisation de la commande mtr :

mtr google.fr

Un résultat comme celui-ci est obtenu :

Ici, le résultat contient peu d'informations, car il y a un filtrage sur le réseau. Mais, sur une autre machine, je suis parvenu à obtenir un résultat beaucoup plus réaliste. Ci-dessous, il s'agit de l'affichage de My Traceroute via WSL (cela ouvre une petite fenêtre indépendante avec les résultats). Par défaut, My Traceroute fonctionne en mode interactif.

Découvrez ci-dessous des exemples d'utilisation de My Traceroute pour mettre en pratique certaines options.

# Limiter le nombre de paquets envoyés à 10
mtr -c 10 google.fr

# Afficher uniquement des statistiques via le mode rapport 
# Avec 5 cycles au lieu de 10 par défaut
mtr --report --report-cycles 5 google.fr

# Effectuer un test en utilisant des paquets TCP sur le port 443
mtr -T -P 443 google.fr

# Désactiver la résolution DNS pour afficher uniquement les adresses IP
mtr -n google.fr

# Installation de My Traceroute sur Ubuntu / Debian
sudo apt-get install mtr

IV. Linux : analyser les connexions et le trafic réseau

A. La commande lsof

La commande "lsof ", dont le nom signifie "List Open Files", est un outil permettant d'afficher les fichiers ouverts par les processus du système, y compris les connexions réseau actives.

Exemple d'utilisation de la commande lsof :

sudo lsof -i -Pn

Décortiquons cette commande pour comprendre l'intérêt de chaque option :

  • L'option "-i" affiche les connexions réseau ouvertes
  • L'otpion "-P" désactive la résolution des numéros de port en noms de service
  • L'option "-n" empêche la résolution DNS (augmente la rapidité d'exécution)

B. La commande ss

La commande "ss", dont le nom signifie "socket statistics", est une version plus moderne et plus rapide de l'outil netstat. Elle va donc nous permettre d'obtenir des informations sur les connexions réseau. La transition de netstat à ss est facile puisqu'il y a les mêmes options.

Exemple d'utilisation de la commande ss :

sudo ss -tulnp

Cela fournit une vue détaillée des connexions réseau en cours et des processus associés. C'est notamment très utile pour obtenir la liste des ports en écoute sur la machine locale, grâce à la lecture de la colonne "Local Address:Port".

Voici d'autres exemples d'utilisation de ss :

# Lister les sockets TCP
ss -t

# Lister les sockets UDP
ss -u

# Lister les sockets TCP en écoute sur le port source 22 (SSH)
ss -tl "sport == :22"

# Lister les connexions TCP dans un état particulier (établie, par exemple)
ss state established

Remarque : la commande netstat, bien que très utile et encore populaire aujourd'hui, est considérée comme obsolète. C'est pour cette raison qu'elle n'a pas été mise en avant dans cet article.

Vous pouvez approfondir ce sujet avec ces tutoriels :

C. La commande tcpdump

L'outil "tcpdump", associé à une commande du même nom, est très utile pour capturer et analyser les paquets réseau en temps réel. Il est souvent utilisé pour diagnostiquer des problèmes de communication réseau, examiner le trafic entrant et sortant, ou détecter d’éventuels flux malveillants. C'est en quelque sorte une alternative à Wireshark, mais en ligne de commande.

Il intègre de nombreuses options pour créer des filtres et ainsi capturer uniquement certains paquets. Par exemple, il permet de filtrer les paquets en fonction de critères comme l’adresse IP, le port ou le protocole utilisé.

Exemples d'utilisation de tcpdump :

Commençons par l'exemple le plus basique, mais qui n'est pas forcément le plus pratique. Avec cette commande, tcpdump capture et affiche tous les paquets sur l’interface ens33, en temps réel.

sudo tcpdump -i ens33

Vous pouvez arrêter la capture à tout moment avec le raccourci clavier CTRL + C.

Pour capturer uniquement les requêtes DNS avec tcpdump, vous pouvez utiliser la commande suivante pour ajouter un filtre sur le port 53 :

sudo tcpdump -i ens33 port 53

L'image ci-dessous montre les échanges DNS entre la machine locale et un serveur DNS, en l'occurrence ici le serveur 1.1.1.1.

Nous pourrions aussi capturer uniquement les paquets échangés avec l'hôte dont l'adresse IP est 192.168.1.254. Nous ajoutons pour cela un filtre basé sur l'option dst host.

sudo tcpdump -i ens33 dst host 192.168.1.254

Ici, nous pouvons constater que des paquets ICMP (ping) sont échangés entre les deux machines :

Remarque : vous pouvez coupler l'utilisation de tcpdump avec grep pour affiner en temps réel la sortie de la capture de paquets.

V. Linux : diagnostiquer la résolution DNS

A. La commande nslookup

La commande "nslookup" que l'on retrouve aussi sur d'autres OS comme Windows, permet d'interroger un serveur DNS pour obtenir l’adresse IP associée à un nom de domaine (ou l'inverse). Voici quelques cas d'utilisation de cette commande :

  • Résolution d'un nom de domaine en adresse IP.
  • Interrogation d'un serveur DNS spécifique pour une résolution.
  • Obtention des enregistrements DNS (MX, CNAME, TXT, etc.).
  • Test de la résolution inverse (enregistrements PTR) pour obtenir le nom de domaine associé à une adresse IP.

Exemples d'utilisation de nslookup :

nslookup it-connect.fr

Cela renvoie l’adresse IP correspondant au domaine it-connect.fr. La réponse peut varier, notamment lorsqu'il s'agit d'un site web derrière une solution comme Cloudflare. Au-delà de la réponse, nous savons également quel serveur DNS a été interrogé, ici le serveur 1.1.1.1.

Pour interroger un serveur DNS spécifique, vous n'avez qu'à préciser son adresse IP, après le nom d'hôte à résoudre.

nslookup it-connect.fr 8.8.8.8

Vous pouvez également consulter des enregistrements spécifiques, par exemple, ceux de type "TXT" qui fourniront des informations plus spécifiques (sur le SPF, par exemple).

nslookup -query=TXT it-connect.fr

Si nslookup n'est pas installé sur votre machine, vous pouvez l'obtenir à partir des dépôts officiels. Sur Ubuntu et Debian, cet enchaînement de commandes suffira :

sudo apt update && sudo apt install dnsutils

Pour approfondir le sujet et en savoir plus sur cet outil, consultez cet article :

B. La commande dig

Lorsqu'il est question de diagnostiquer un problème DNS ou d'obtenir des informations sur un hôte, la commande "dig" est aussi très intéressante. Cet outil, dont le nom signifie "Domain Information Groper" est un véritable couteau-suisse pour effectuer des requêtes DNS.

En comparaison de nslookup, l'outil dig fournit des informations plus détaillées sur les enregistrements DNS d’un domaine. Il est particulièrement utilisé analyser précisément les réponses des serveurs DNS.

Exemples d'utilisation de dig :

Il peut s'utiliser de façon aussi simple que nslookup où l'on précise simplement le nom d'hôte à résoudre.

dig it-connect.fr

Cette commande affiche l'enregistrement DNS correspondant au domaine ciblé, ainsi que le temps de réponse et le serveur DNS sollicité.

Un exemple de commande dig que l'on ne peut pas faire avec nslookup est la requête permettant d'afficher la chaîne complète de la résolution DNS ! Pour cela, vous devez simplement ajouter l'option "+trace" comme ceci :

dig google.fr +trace

Cette commande permet de suivre toutes les étapes de la résolution DNS (donc toutes les réponses), depuis les serveurs racine jusqu'au serveur de noms final du domaine. La sortie affiche d'abord la requête envoyée au serveur racine, puis le chemin suivi à travers les serveurs de noms successifs jusqu'à la résolution complète du domaine. Ci-dessous un aperçu du résultat, qui peut être exploité pour diagnostiquer un problème de propagation DNS.

Ci-dessous d'autres exemples d'utilisation pratiques de cette commande :

# Solliciter un serveur DNS spécifique (ici 8.8.8.8)
dig @8.8.8.8 it-connect.fr

# Indiquer le type d'enregistrements à lire (A, AAA, CNAME, TXT, etc.)
dig it-connect.fr txt

# Résoudre plusieurs noms d'hôtes en même temps
dig it-connect.fr google.fr

# Afficher uniquement la réponse de la requête DNS (l'IP, par exemple)
dig +short it-connect.fr

VI. Linux : scanner et tester des ports

A. L'outil netcat et la commande nc

Netcat, que l'on abrège bien souvent en "nc" puisqu'il s'agit du nom de la commande, est un outil polyvalent capable d'accomplir des tâches variées. En effet, nous pouvons l'utiliser dans une grande variété de cas d'usage, parmi lesquels :

  • Scanner des ports pour détecter ceux qui sont ouverts
  • Tester l’ouverture d’un port sur une machine distante.
  • Écouter sur un port en mode serveur pour recevoir des connexions.
  • Établir une connexion TCP/UDP vers un hôte distant.
  • Effectuer un transfert de fichiers entre deux machines.
  • Etc....

Exemples d'utilisation de nc :

Commençons par utiliser netcat pour voir si le port 3389 est ouvert sur une machine :

nc -zv serveur.it-connect.local 3389

L'option "-z" est utilisée pour effectuer les scans de port, tandis que la seconde option correspond au mode verbeux. Si la connexion réussie, le message suivant sera retourné :

Connection to serveur.it-connect.local 3389 port [tcp/ms-wbt-server] succeeded!

Dans le cas où le port n'est pas ouvert, un message semblable à celui-ci sera retourné :

nc: connect to serveur.it-connect.local port 3389 (tcp) failed: Connection timed out

Pour scanner une plage de ports, vous pouvez utiliser cette syntaxe (de 10 à 1000, ici) :

nc -zv serveur.it-connect.local 10-1000

Le résultat du test, pour chaque port, sera indiqué dans la console. Pour définir un délai d'expiration (timeout) personnalisé, vous devez utiliser l'option "-w" avec une valeur en seconde à la suite. Voici un exemple :

nc -zv serveur.it-connect.local 10-1000 -w 3

En complément, découvrez d'autres exemples d'utilisation de la commande nc :

# Transférer un fichier entre deux machines
# Côté réception : se mettre en écoute sur le port 2025
nc -lvp 2025 > data.txt

# Côté envoi : envoyer le contenu d'un fichier vers 192.168.14.130:2025
cat fichier.txt | nc 192.168.14.130 2025

# Tester un serveur SMTP en envoyant une commande
nc smtp.it-connect.fr 25

# Initier un shell entre deux machines
# Côté réception (machine sur laquelle se connecter) sur le port 2025
nc -lvp 2025 -e /bin/bash

# Côté envoi : machine depuis laquelle on exécute les commandes
nc 192.168.14.99 2025

Les exemples ci-dessus montrent qu'il est même possible de lancer un shell entre deux machines avec netcat ! Cette commande très polyvalente doit donc être utilisée de façon responsable et éthique.

Pour approfondir le sujet, vous pouvez lire cet article :

B. L'outil nmap

Faut-il encore présenter l'outil Nmap ? Surtout sur IT-Connect où nous avons publié un cours complet pour apprendre à utiliser Nmap. Cet outil est très puissant pour effectuer des scans de port, détecter les machines connectées à un réseau et même effectuer de la recherche de vulnérabilités. Il s'utilise avec une commande nommée tout simplement "nmap" qui prend en charge de nombreux paramètres.

Exemples d'utilisation de nmap :

L'exemple ci-dessous est utile pour scanner les ports 80, 22 et 3389 sur une machine. Nous pourrions aussi scanner plusieurs machines, un réseau complet, et même une plage de ports.

nmap 192.168.14.201 -p 22,80,3389
# ou
nmap 192.168.14.201 -p 22,80,3389 -Pn

Ici, le port 3389 semble bien ouvert sur la machine analysée, contrairement aux deux autres ports testés.

Ci-dessous, d'autres exemples d'utilisation, mais ce n'est qu'un aperçu très réduit des possibilités offertes par cet outil. Consultez notre cours si vous désirez approfondir le sujet.

# Scanner tous les ports d'une machine (1-65535)
nmap -p- serveur.it-connect.local

# Scanner les 100 ports TCP les plus fréquemments utilisés
nmap serveur.it-connect.local --top-ports 100

# Détecter les hôtes sur un réseau complet avec un Ping Scan
nmap -sP 192.168.10.0/24

# Détecter les versions sur l'hôte
nmap -sV serveur.it-connect.local

VII. Linux : tester la bande-passante

A. La commande iperf

La commande "iperf" correspond à un outil de mesure de la bande passante réseau permettant d’évaluer les performances d’une connexion en générant du trafic entre deux machines. Il convient donc de disposer de l'outil iperf sur les deux machines.

Pour rappel, trois caractéristiques fondamentales déterminent la qualité d’un lien :

  • la latence (aussi appelé temps de réponse et abrégé en RTT) se mesurant la plupart du temps via une commande ping.
  • La gigue (aussi appelée jitter ou variation de la latence).
  • La perte de paquets.

Exemples d'utilisation de la commande iperf :

Vous devez commencer par installer l'outil sur chaque machine :

sudo apt update && sudo apt install iperf

Puis, mettez en écoute la première machine qui va réceptionner le trafic (serveur) :

iperf -s

Ensuite, sur la machine cliente (qui envoie du trafic vers le serveur), exécutez cette commande :

iperf -c <adresse IP du serveur>
iperf -c 192.168.14.130

Ainsi, nous obtenons un résultat tel que celui présenté sur l'image ci-dessous. Il montre que le serveur iperf écoute sur le port TCP 5001. Il a reçu une connexion depuis une machine cliente (192.168.14.99). Le test de débit a duré environ 10 secondes, transférant 5.99 Go de données à un débit de 5.15 Gbit/s. Ce résultat indique la bande passante disponible entre les deux machines, avec une connexion TCP !

Ci-dessous, d'autres exemples d'utilisation de cet outil afin de ne pas utiliser les options par défaut :

# Exécuter un test bidirectionnel pour mesurer les performances dans les deux sens
iperf -c 192.168.14.130 -d

# Exécuter un test de débit en parallèle avec 4 flux simultanés
iperf -c 192.168.14.130 -P 4

# Lancer un test sur une durée définie (30 secondes)
iperf -c 192.168.14.130 -t 30

# Lancer un test de débit en UDP (client / serveur)
iperf -s -u
iperf -c 192.168.14.130 -u

Pour approfondir le sujet, vous pouvez lire cet article :

B. La commande speedtest

Vous connaissez le service Speedtest de chez Ookla ? Sachez qu'il existe un outil en ligne de commande nommé simplement "speedtest-cli" permettant de mesurer la vitesse de connexion Internet. Ce test de débit s'appuie donc sur les services d'Ookla.

Exemple d'utilisation de speedtest-cli :

Commencez par installer l'outil sur votre machine en utilisant les commandes officielles fournies sur le site de Speedtest.

sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest

Ensuite, vous pouvez exécuter un test de débit via cette commande :

speedtest

Cela lance un test de vitesse de téléchargement et d’envoi en interrogeant le serveur le plus proche. Vous pouvez explorer les options pour sélectionner le serveur Speedtest de votre choix, notamment via l'option "-L" pour lister les serveurs disponibles.

Pour approfondir le sujet, voici notre tutoriel dédié à Speedtest :

VIII. Conclusion

Ces 15 commandes couvrent un large éventail de besoin pour administrer le réseau sous Linux, mais aussi pour effectuer un diagnostic sur un problème lié au réseau ! Maîtriser ces outils et ces commandes est une bonne base pour tout administrateur réseau ou sysadmin souhaitant être à l'aise sous Linux.

Qu'en pensez-vous ? Auriez-vous aimé voir d'autres commandes ajoutées à cette liste ? Nous attendons vos réactions en commentaire !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “Top 15 des commandes Linux pour administrer et diagnostiquer le réseau

  • Bonjour,
    Sur mon mac et le terminal, la commande ip a ne fonctionne pas. Je dois faire ifconfig.
    Les autres commandes ne fonctionnent pas non plus.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.