Aller au contenu
Réseaux high

Module 2 :La boîte à outils réseau

27 min de lecture

Vous savez ce qu’est une IP et comment faire un ping, mais face à un problème réseau vous ne savez pas par où commencer ? Ce module vous donne les 10 commandes essentielles pour diagnostiquer n’importe quel problème réseau sur Linux. Chaque commande est expliquée avec des exemples concrets et des sorties commentées.

  • ip addr : voir vos interfaces et adresses IP
  • ss -tlnp : voir les ports en écoute
  • ping : tester la connectivité de base
  • nc -zv : tester si un port TCP répond
  • dig : résoudre un nom DNS
  • ip addr me montre mes interfaces réseau
  • ss -tlnp me montre les services en écoute
  • dig +short google.com retourne une IP
Fenêtre de terminal
# 1. Mon IP et mes interfaces
ip addr
# 2. Ports ouverts localement
ss -tlnp
# 3. Test de connectivité
ping -c 2 8.8.8.8
# 4. Test d'un port TCP
nc -zv google.com 443
# 5. Résolution DNS
dig +short github.com
  • Module 1 complété : vous savez ce qu’est une IP, une passerelle, et vous avez déjà utilisé ping
  • Une machine Linux connectée à votre réseau local
  • Un terminal ouvert
  • Concepts clés : port, protocole, DNS — les bases pour comprendre les commandes
  • ip : voir et configurer les interfaces réseau
  • ss : lister les ports ouverts et connexions actives
  • ping : tester la connectivité (rappel + options avancées)
  • nslookup / dig : résoudre un nom de domaine en IP
  • curl / wget : tester un service HTTP
  • nc (netcat) : tester si un port TCP est ouvert

Avant de plonger dans les commandes, assurez-vous de comprendre ces 4 concepts fondamentaux. Sans eux, les commandes n’auront pas de sens.

Dans le module 1, vous avez appris qu’une adresse IP identifie une machine sur le réseau. Mais une machine peut faire tourner plusieurs services en même temps : un serveur web, une base de données, un serveur SSH…

Comment distinguer ces services ? C’est là qu’intervient le port.

Un serveur avec plusieurs services écoutant sur des ports différents

Un port est un numéro (de 0 à 65535) qui identifie un service sur une machine. L’adresse complète d’un service, c’est donc :

IP:PORT

Par exemple : 192.168.1.100:80 désigne le service HTTP (port 80) sur la machine 192.168.1.100.

Analogie : si l’adresse IP est l’adresse d’un immeuble, le port est le numéro d’appartement. L’immeuble (la machine) peut héberger plusieurs résidents (services), chacun à un numéro différent.

Certains ports sont réservés par convention pour des services standards. Vous les rencontrerez constamment :

PortServiceDescription
22SSHConnexion à distance sécurisée
80HTTPSites web (non chiffré)
443HTTPSSites web (chiffré TLS/SSL)
53DNSRésolution de noms
25SMTPEnvoi d’emails
3306MySQLBase de données MySQL
5432PostgreSQLBase de données PostgreSQL
6379RedisCache/base de données Redis
8080HTTP alternatifSouvent utilisé pour les tests

Un protocole est un ensemble de règles qui définissent comment deux machines communiquent. C’est comme une langue commune : si vous parlez français et votre interlocuteur parle chinois, vous ne vous comprendrez pas.

Les deux protocoles de transport que vous rencontrerez sont :

ProtocoleCaractéristiquesUtilisé pour
TCPFiable, connexion établie, ordre garantiHTTP, SSH, email, bases de données
UDPRapide, sans connexion, pas de garantieDNS, streaming vidéo, jeux en ligne

Analogie :

  • TCP = courrier recommandé avec accusé de réception. Plus lent, mais vous êtes sûr que ça arrive.
  • UDP = carte postale. Rapide, mais pas de garantie de livraison ni d’ordre.

Quand vous verrez tcp ou udp dans les sorties de commandes, vous saurez de quoi il s’agit.

Vous tapez google.com dans votre navigateur, mais les machines ne comprennent que les adresses IP. Qui fait la traduction ? Le DNS (Domain Name System).

Le DNS traduit un nom de domaine en adresse IP

Le DNS est un système qui traduit les noms de domaine (google.com, github.com) en adresses IP (142.250.178.142). C’est l’annuaire d’Internet.

Le processus :

  1. Vous tapez google.com dans votre navigateur
  2. Votre machine demande au serveur DNS : “Quelle est l’IP de google.com ?”
  3. Le serveur DNS répond : “142.250.178.142”
  4. Votre navigateur peut maintenant contacter cette IP

Sur Linux, le serveur DNS utilisé par votre machine est configuré dans /etc/resolv.conf :

Fenêtre de terminal
cat /etc/resolv.conf

Sortie typique :

nameserver 192.168.1.1
nameserver 8.8.8.8
  • 192.168.1.1 : votre box fait souvent office de serveur DNS local
  • 8.8.8.8 : serveur DNS de Google (en secours)

Si ce fichier est vide ou mal configuré, aucune résolution DNS ne fonctionnera.

Imaginez : vous venez de déployer une application, mais elle ne répond pas. Avant de paniquer, vous devez diagnostiquer méthodiquement. Voici les questions que vous allez vous poser, et les commandes qui y répondent :

QuestionCommandeSection
Ma machine a-t-elle une IP ? Est-elle connectée ?ip addr, ip linkLa commande ip
Quels services tournent sur ma machine ? Sur quels ports ?ss -tlnpLa commande ss
Mon serveur répond-il sur le réseau ?pingLa commande ping
Le nom de domaine est-il résolu correctement ?nslookup, digRésolution DNS
Le service HTTP répond-il ? Quel code retour ?curl, wgetTester HTTP
Le port est-il ouvert et accessible ?nc (netcat)La commande nc

La commande ip remplace les anciennes commandes ifconfig et route. C’est la commande moderne pour gérer le réseau sur Linux.

Cette commande liste toutes les interfaces réseau de votre machine, qu’elles soient actives ou non :

Fenêtre de terminal
ip link show

Sortie :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

Lecture :

ÉlémentSignification
loInterface loopback (votre machine qui parle à elle-même)
eth0Carte réseau Ethernet filaire
wlan0Carte réseau Wi-Fi
state UPInterface active et connectée
state DOWNInterface inactive (câble débranché ou désactivée)
link/ether 52:54:00:...Adresse MAC (identifiant physique unique de la carte)

Vous connaissez déjà cette commande du Module 1. Elle affiche les adresses IP attribuées à chaque interface :

Fenêtre de terminal
ip addr show

Sortie :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet 192.168.1.45/24 brd 192.168.1.255 scope global dynamic eth0
inet6 fe80::5054:ff:fe12:3456/64 scope link

Nouveaux éléments :

ÉlémentSignification
inet 192.168.1.45/24Adresse IPv4 attribuée par votre box (DHCP)
inet6 fe80::...Adresse IPv6 locale (auto-générée)
dynamicL’adresse a été obtenue par DHCP (automatiquement)
brd 192.168.1.255Adresse de broadcast (pour envoyer à tout le réseau)

Raccourci : ip a fait la même chose que ip addr show.

Rappel du Module 1 — cette commande montre comment votre machine sait où envoyer les paquets :

Fenêtre de terminal
ip route show

Sortie :

default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.45

Lecture rapide :

  • default via 192.168.1.1 : pour Internet, envoyer à la box (192.168.1.1)
  • 192.168.1.0/24 dev eth0 : pour le réseau local, envoyer directement via eth0

Raccourci : ip r fait la même chose.

ss (Socket Statistics) remplace l’ancienne commande netstat. Elle permet de voir quels programmes écoutent sur quels ports et quelles connexions sont actives.

C’est LA commande à connaître pour savoir ce qui tourne sur votre machine :

Fenêtre de terminal
ss -tuln

Signification des options :

OptionSignification
-tAfficher les connexions TCP
-uAfficher les connexions UDP
-lAfficher uniquement les ports en écoute (listening)
-nAfficher les numéros de port (pas les noms de service)

Sortie :

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:*

Lecture :

Local Address:PortCe que ça signifie
0.0.0.0:22SSH écoute sur toutes les interfaces, port 22
0.0.0.0:80Un serveur web écoute sur toutes les interfaces, port 80
127.0.0.1:5432PostgreSQL écoute uniquement en local (pas accessible de l’extérieur)
0.0.0.0:68Client DHCP (UDP) en attente

Ajoutez -p pour voir le nom du processus qui utilise chaque port :

Fenêtre de terminal
sudo ss -tulnp

Sortie :

Netid State Local Address:Port Process
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=1234,fd=3))
tcp LISTEN 0.0.0.0:80 users:(("nginx",pid=5678,fd=6))
tcp LISTEN 127.0.0.1:5432 users:(("postgres",pid=9012,fd=5))

Maintenant vous savez que :

  • sshd écoute sur le port 22
  • nginx écoute sur le port 80
  • postgres écoute sur le port 5432

Pour voir les connexions établies (pas seulement les ports en écoute) :

Fenêtre de terminal
ss -tan

Sortie :

State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
ESTAB 0 0 192.168.1.45:22 192.168.1.100:54321
ESTAB 0 0 192.168.1.45:80 203.0.113.50:12345

Lecture :

  • LISTEN : le service attend des connexions
  • ESTAB (Established) : une connexion est active
  • 192.168.1.100:54321 → 192.168.1.45:22 : quelqu’un est connecté en SSH depuis 192.168.1.100

Vous connaissez ping du Module 1. Voici quelques options utiles :

Fenêtre de terminal
ping 8.8.8.8

Sans -c, le ping continue indéfiniment. Utile pour surveiller une connexion.

Fenêtre de terminal
ping -i 0.2 8.8.8.8

Envoie un ping toutes les 0.2 secondes au lieu d’une seconde (utile pour détecter des micro-coupures).

Fenêtre de terminal
ping -s 1400 8.8.8.8

Envoie des paquets de 1400 octets au lieu de 56. Utile pour tester les problèmes de MTU.

Le DNS traduit les noms de domaine (google.com) en adresses IP. Quand un site “ne répond pas”, c’est souvent un problème DNS.

Fenêtre de terminal
nslookup google.com

Sortie :

Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: google.com
Address: 142.250.185.46

Lecture :

LigneSignification
Server: 192.168.1.1Votre box a répondu à la requête DNS
Address: 142.250.185.46L’adresse IP de google.com

dig donne beaucoup plus d’informations :

Fenêtre de terminal
dig google.com

Sortie (simplifiée) :

; <<>> DiG 9.18.1 <<>> google.com
;; ANSWER SECTION:
google.com. 300 IN A 142.250.185.46
;; Query time: 12 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)

Éléments importants :

ÉlémentSignification
A 142.250.185.46Enregistrement de type A (IPv4)
300TTL (Time To Live) : le cache garde cette info 300 secondes
Query time: 12 msecTemps de réponse du serveur DNS

Si vous suspectez un problème avec le DNS de votre box, testez avec Google ou Cloudflare :

Fenêtre de terminal
dig @8.8.8.8 google.com
dig @1.1.1.1 google.com

Le @ indique quel serveur DNS interroger.

  1. Tester la résolution DNS

    Fenêtre de terminal
    nslookup monsite.com

    Si “server can’t find monsite.com” → problème DNS ou nom inexistant.

  2. Tester avec un autre serveur DNS

    Fenêtre de terminal
    dig @8.8.8.8 monsite.com

    Si ça marche ici mais pas avec votre box → problème de configuration DNS locale.

  3. Vérifier quel DNS votre machine utilise

    Fenêtre de terminal
    cat /etc/resolv.conf

    Vous verrez les serveurs DNS configurés (ligne nameserver).

Pour tester si un service web répond, curl et wget sont indispensables.

Fenêtre de terminal
curl -I https://google.com

L’option -I récupère uniquement les en-têtes (sans télécharger la page) :

Sortie :

HTTP/2 200
content-type: text/html; charset=ISO-8859-1
date: Fri, 24 Jan 2026 08:00:00 GMT

Lecture :

ÉlémentSignification
HTTP/2 200Le serveur répond avec le code 200 OK (succès)
content-type: text/htmlLe serveur renvoie du HTML
CodeSignificationCause probable
200OKTout fonctionne
301/302RedirectionLe site redirige vers une autre URL
403ForbiddenAccès interdit (permissions)
404Not FoundLa page n’existe pas
500Internal Server ErrorErreur côté serveur
502Bad GatewayLe reverse proxy ne peut pas joindre le backend
503Service UnavailableService surchargé ou en maintenance

Pour débugger, l’option -v (verbose) montre tout le processus :

Fenêtre de terminal
curl -v https://google.com

Vous verrez :

  • La résolution DNS
  • La connexion TCP
  • La négociation TLS
  • Les en-têtes envoyés et reçus
Fenêtre de terminal
wget https://example.com/fichier.zip

wget télécharge le fichier dans le répertoire courant. Utile pour tester si le téléchargement fonctionne.

Netcat est le couteau suisse du réseau. Son usage le plus courant : tester si un port est ouvert.

Fenêtre de terminal
nc -zv google.com 443

Options :

OptionSignification
-zMode scan : teste juste si le port est ouvert, sans envoyer de données
-vMode verbose : affiche le résultat

Sortie si le port est ouvert :

Connection to google.com 443 port [tcp/https] succeeded!

Sortie si le port est fermé :

nc: connect to google.com port 12345 (tcp) failed: Connection refused

Sortie si le port est filtré (pare-feu) :

nc: connect to google.com port 12345 (tcp) failed: Connection timed out
Fenêtre de terminal
nc -zv google.com 80 443

Ou une plage de ports :

Fenêtre de terminal
nc -zv 192.168.1.1 20-25
  1. Vérifier que le DNS fonctionne

    Fenêtre de terminal
    nslookup api.example.com
  2. Tester si le port est ouvert

    Fenêtre de terminal
    nc -zv api.example.com 443
  3. Tester la réponse HTTP

    Fenêtre de terminal
    curl -I https://api.example.com

Si le port est ouvert mais curl échoue → problème applicatif (pas réseau).

CommandeCe qu’elle faitQuand l’utiliser
ip link showListe les interfacesVérifier si une interface est UP
ip addr showAffiche les adresses IPVoir quelle IP a été attribuée
ip route showAffiche les routesVérifier la passerelle par défaut
ss -tulnPorts en écouteVoir quels services tournent
ss -tulnpPorts + processusIdentifier quel programme écoute
ss -tanConnexions activesVoir qui est connecté
ping -c 4 <ip>Test connectivitéVérifier qu’une machine répond
nslookup <nom>Résolution DNS simpleTraduire un nom en IP
dig <nom>Résolution DNS détailléeDébugger un problème DNS
curl -I <url>En-têtes HTTPTester si un site répond
curl -v <url>Détails connexionDébugger une connexion HTTP
nc -zv <host> <port>Test port TCPVérifier si un port est ouvert
Service inaccessible ?
├─► ping <ip> échoue ?
│ └─► Problème réseau (Module 1 : diagnostic en 3 étapes)
├─► nslookup <nom> échoue ?
│ └─► Problème DNS (tester avec @8.8.8.8)
├─► nc -zv <host> <port> timeout ?
│ └─► Port filtré (pare-feu)
├─► nc -zv <host> <port> refused ?
│ └─► Service non démarré (vérifier avec ss -tuln sur le serveur)
└─► curl -I <url> erreur 5xx ?
└─► Problème applicatif (logs du serveur)

Mettons en pratique toutes les commandes vues dans ce module. Vous allez diagnostiquer un serveur web étape par étape, comme si vous deviez débugger un problème en production.

Vous devez vérifier qu’un serveur web est accessible. Nous allons utiliser GitHub (github.com) comme cible — un service que vous utiliserez souvent dans un contexte DevOps.

Avant de tester un serveur distant, assurez-vous que votre machine est bien configurée.

  1. Vérifiez que vous avez une IP

    Fenêtre de terminal
    ip addr show | grep "inet "

    Vous devez voir une ligne avec votre IP locale (ex: 192.168.1.x).

  2. Vérifiez que votre interface est UP

    Fenêtre de terminal
    ip link show | grep -E "state UP|state DOWN"

    Votre interface principale (eth0, wlan0, ens33…) doit être UP.

  3. Vérifiez votre passerelle

    Fenêtre de terminal
    ip route | grep default

    Vous devez voir default via <IP de votre box>.

  1. Ping vers votre passerelle (votre box)

    Fenêtre de terminal
    ping -c 3 $(ip route | grep default | awk '{print $3}')

    Cette commande récupère automatiquement l’IP de votre passerelle et la ping.

  2. Ping vers Internet (IP publique)

    Fenêtre de terminal
    ping -c 3 8.8.8.8

    Si ça fonctionne, vous avez accès à Internet.

  3. Ping vers un nom de domaine

    Fenêtre de terminal
    ping -c 3 google.com

    Si ça fonctionne, le DNS fonctionne aussi (Google résout et répond au ping).

  1. Résoudre le nom de domaine

    Fenêtre de terminal
    nslookup github.com

    Vous devez obtenir une ou plusieurs IP (GitHub utilise plusieurs serveurs).

  2. Vérifier avec un serveur DNS spécifique

    Fenêtre de terminal
    dig github.com @8.8.8.8 +short

    Comparez le résultat avec la commande précédente. Les IP peuvent différer selon la localisation.

  3. Voir les détails de la résolution

    Fenêtre de terminal
    dig github.com

    Repérez la section ANSWER SECTION et le Query time.

  1. Vérifier que le port 443 (HTTPS) est ouvert

    Fenêtre de terminal
    nc -zv github.com 443

    Vous devez voir Connection to github.com 443 port [tcp/https] succeeded!.

  2. Tester le port SSH de GitHub (pour git clone en SSH)

    Fenêtre de terminal
    nc -zv github.com 22

    GitHub accepte les connexions SSH sur le port 22.

  3. Tester la réponse HTTPS

    Fenêtre de terminal
    curl -I https://github.com

    Vous devez voir HTTP/2 200 (GitHub utilise HTTP/2).

  4. Tester l’API GitHub

    Fenêtre de terminal
    curl -I https://api.github.com

    L’API répond aussi en HTTP/2 200. Notez les headers X-RateLimit-*.

Maintenant, regardons ce qui tourne sur votre machine :

  1. Lister tous les ports en écoute

    Fenêtre de terminal
    ss -tuln

    Notez les ports ouverts sur votre machine.

  2. Identifier les processus (nécessite sudo)

    Fenêtre de terminal
    sudo ss -tulnp

    Vous voyez maintenant quel programme écoute sur chaque port.

  3. Filtrer un port spécifique (exemple : SSH)

    Fenêtre de terminal
    ss -tuln | grep :22

    Si le port 22 apparaît, un serveur SSH tourne.

Vous venez de réaliser un diagnostic complet. Voici ce que vous avez vérifié :

ÉtapeCommandes utiliséesCe que vous avez vérifié
1ip addr, ip link, ip routeConfiguration locale
2pingConnectivité réseau
3nslookup, digRésolution DNS
4nc -zv, curl -IAccessibilité du service
5ss -tuln, ss -tulnpServices locaux
  1. ip remplace ifconfig et route — commande moderne pour tout
  2. ss -tuln : première commande pour voir ce qui tourne sur une machine
  3. ss -tulnp avec sudo pour voir les processus associés aux ports
  4. 0.0.0.0 = accessible de partout, 127.0.0.1 = local uniquement
  5. nslookup pour tester DNS rapidement, dig pour débugger
  6. curl -I pour tester un service HTTP sans télécharger
  7. nc -zv pour tester si un port TCP est ouvert
  8. refused = port fermé, timeout = port filtré (pare-feu)

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
10 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre