Aller au contenu
Réseaux medium

Méthodologie de diagnostic réseau

12 min de lecture

Un service ne répond pas ? Une connexion timeout ? Avant de blâmer le réseau, appliquez une méthode de diagnostic systématique. Ce guide synthétise tout ce que vous avez appris dans les modules précédents et vous donne un arbre de décision, une checklist rapide et un tableau des outils par symptôme. L'objectif : identifier en quelques minutes si le problème vient du réseau ou de l'application.

  • Appliquer une méthode systématique : diagnostiquer du plus proche au plus loin.
  • Suivre un arbre de décision réseau : localhost, passerelle, Internet, DNS, service.
  • Interpréter les erreurs courantes : refused, timeout, name not found, no route.
  • Choisir le bon outil selon le symptôme (ip, ping, dig, nc, traceroute, mtr).
  • Éviter les pièges du diagnostic : redémarrage réflexe, changer plusieurs variables à la fois.
  • Avoir suivi les modules précédents (IP, DNS, TCP/UDP, ICMP, HTTP)
  • Un terminal Linux, macOS ou WSL
  • Connaissances des commandes : ip, ping, dig, nc, curl, ss

Le diagnostic réseau suit toujours la même logique : du plus proche au plus loin. On vérifie d'abord la machine locale, puis la passerelle, puis Internet, puis le DNS, puis le service distant.

Arbre de décision pour diagnostiquer un problème réseau : de localhost jusqu'au service applicatif

  1. Vérifier la connectivité locale

    Votre machine a-t-elle une adresse IP ? L'interface réseau est-elle active ?

    Fenêtre de terminal
    ip addr show
    ping -c 2 127.0.0.1

    Si ça échoue : Interface down, pas d'IP (DHCP ?)

  2. Vérifier la passerelle

    Pouvez-vous atteindre votre routeur (gateway) ?

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

    Si ça échoue : Route manquante, passerelle down, câble débranché

  3. Vérifier Internet

    Pouvez-vous atteindre une IP publique connue ?

    Fenêtre de terminal
    ping -c 2 8.8.8.8

    Si ça échoue : Problème de routage Internet, firewall, FAI

  4. Vérifier le DNS

    La résolution de noms fonctionne-t-elle ?

    Fenêtre de terminal
    dig google.com +short

    Si ça échoue : Problème DNS, /etc/resolv.conf mal configuré

  5. Vérifier le service distant

    Le port du service est-il ouvert et répond-il ?

    Fenêtre de terminal
    nc -zv <host> <port>
    curl -I https://<host>/

    Si ça échoue : Service arrêté, firewall applicatif, erreur applicative

Avant de lancer des commandes, posez-vous ces questions qui orientent le diagnostic :

QuestionImplication
Est-ce que ça marchait avant ?Si oui, qu'est-ce qui a changé ? (mise à jour, config, firewall)
Est-ce que ça marche en local ?Distingue problème réseau vs applicatif
Est-ce que ça marche depuis une autre machine ?Distingue problème client vs serveur
D'autres services sont-ils affectés ?Problème global (réseau) vs isolé (service)
L'erreur est-elle immédiate ou après un délai ?Immédiate = refusé, Délai = filtré/timeout

Copiez-collez cette checklist pour un diagnostic express :

#!/bin/bash
# Checklist diagnostic réseau
echo "=== 1. Interface et IP ==="
ip addr show | grep -E "state|inet "
echo -e "\n=== 2. Route par défaut ==="
ip route show | grep default
echo -e "\n=== 3. Ping passerelle ==="
GATEWAY=$(ip route | grep default | awk '{print $3}')
ping -c 2 $GATEWAY
echo -e "\n=== 4. Ping Internet ==="
ping -c 2 8.8.8.8
echo -e "\n=== 5. Résolution DNS ==="
dig google.com +short
echo -e "\n=== 6. Test port (modifier host/port) ==="
# nc -zv <host> <port>
echo "Exécuter : nc -zv <host> <port>"

Résultat attendu : chaque étape doit réussir. La première qui échoue indique la zone du problème.

Le service écoute mais refuse la connexion, ou le port est fermé.

Cause probableVérificationSolution
Service non démarrésystemctl status <service>Démarrer le service
Port mal configuréss -tuln | grep <port>Vérifier la config du service
Firewall localiptables -L ou nft list rulesetOuvrir le port

Le paquet ne revient jamais. Souvent un firewall qui drop silencieusement.

Cause probableVérificationSolution
Firewall distanttraceroute <host>Contacter l'admin du firewall
Routage incorrectip route get <ip>Vérifier les routes
FAI bloquantTester depuis un autre réseauVPN ou contacter le FAI

La résolution DNS a échoué.

Cause probableVérificationSolution
Serveur DNS downdig @8.8.8.8 example.comUtiliser un DNS alternatif
/etc/resolv.conf videcat /etc/resolv.confAjouter nameserver 8.8.8.8
Domaine inexistantdig example.comVérifier l'orthographe
Cache DNSresolvectl flush-caches (systemd-resolved)Vider le cache

La machine ne sait pas comment atteindre la destination.

Cause probableVérificationSolution
Pas de route par défautip routeAjouter la gateway
Gateway downping <gateway>Vérifier le routeur
VLAN/subnet incorrectip addrVérifier l'adresse IP

La destination est connue mais inaccessible (souvent ICMP unreachable reçu).

Cause probableVérificationSolution
Machine éteinteip neigh (présence dans la table de voisinage ?)Allumer la machine
Firewall bloquanttraceroute <host>Vérifier les règles firewall
Problème réseau intermédiairemtr <host>Identifier le routeur défaillant
SymptômeOutils à utiliserCe qu'on cherche
Pas d'IPip addr, dhclient -vInterface UP, adresse assignée
Pas de routeip route, tracerouteRoute par défaut, chemin vers destination
DNS KOdig, nslookup, /etc/resolv.confRésolution fonctionnelle, serveur DNS accessible
Port fermé/filtrénc -zv, ss -tuln, nmapPort ouvert, service écoutant
Latence élevéeping, mtr, tracerouteRTT, routeur lent identifié
Paquets perdusping -c 100, mtr% de perte, localisation
Erreur HTTPcurl -v, logs serveurCode de statut, message d'erreur
Certificat TLScurl -v, openssl s_clientValidité, chaîne de confiance

Un curl https://api.example.com/health ne répond pas.

  1. Tester la résolution DNS

    Fenêtre de terminal
    dig api.example.com +short

    Résultat : 203.0.113.42

  2. Tester la connectivité IP

    Fenêtre de terminal
    ping -c 2 203.0.113.42

    Résultat : timeout ❌

  3. Tester le port directement

    Fenêtre de terminal
    nc -zv 203.0.113.42 443

    Résultat : timeout ❌

  4. Tracer le chemin

    Fenêtre de terminal
    traceroute 203.0.113.42

    Résultat : s'arrête à un routeur intermédiaire

  5. Conclusion

    Firewall ou problème de routage entre vous et le serveur. Contacter l'admin réseau.

Un curl http://localhost:8080/api retourne "Connection refused".

  1. Vérifier si le service écoute

    Fenêtre de terminal
    ss -tuln | grep 8080

    Résultat : rien ❌

  2. Vérifier l'état du service

    Fenêtre de terminal
    systemctl status mon-api

    Résultat : inactive (dead)

  3. Démarrer le service

    Fenêtre de terminal
    sudo systemctl start mon-api
  4. Revérifier

    Fenêtre de terminal
    ss -tuln | grep 8080
    curl http://localhost:8080/api

    Résultat : LISTEN sur 8080 ✅, réponse API ✅

Un curl https://mon-service.internal/ échoue avec "Could not resolve host".

  1. Tester avec dig

    Fenêtre de terminal
    dig mon-service.internal +short

    Résultat : rien ❌

  2. Vérifier le serveur DNS configuré

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

    Résultat : nameserver 10.0.0.1

  3. Tester ce serveur DNS

    Fenêtre de terminal
    dig @10.0.0.1 mon-service.internal +short

    Résultat : timeout ❌

  4. Tester un DNS public

    Fenêtre de terminal
    dig @8.8.8.8 mon-service.internal +short

    Résultat : rien (domaine .internal non public)

  5. Conclusion

    Le DNS interne (10.0.0.1) est down ou le domaine n'y est pas configuré. Contacter l'admin DNS.

  • Toujours tester du plus proche au plus loin
  • Noter ce qui fonctionne ET ce qui échoue
  • Tester une seule variable à la fois
  • Vérifier les logs (journalctl, /var/log/)
  • Comparer avec une machine qui fonctionne
  • Documenter le problème et la solution

Testez votre méthodologie avec ces exercices :

  1. Simuler un problème DNS

    Modifiez temporairement /etc/resolv.conf pour pointer vers un serveur inexistant, puis diagnostiquez.

  2. Bloquer un port avec iptables

    Fenêtre de terminal
    sudo iptables -A INPUT -p tcp --dport 22 -j DROP

    Diagnostiquez pourquoi SSH ne répond plus (depuis une autre session !), puis retirez la règle.

  3. Arrêter un service

    Arrêtez un service web et utilisez la checklist pour identifier le problème.

SymptômePremière commandeSi ça échoue
Pas de réseau du toutip addrInterface down, pas d'IP
Ping gateway échoueip routeRoute manquante
Ping 8.8.8.8 échouetraceroute 8.8.8.8Routage/firewall intermédiaire
DNS ne résout pasdig @8.8.8.8 domainProblème DNS local
Port timeoutnc -zv host portFirewall distant
Port refusedss -tuln | grep portService non démarré
HTTP 5xxcurl -v URLLogs serveur
Certificat invalideopenssl s_client -connect host:443Date/CN/CA
  • Toujours diagnostiquer du plus proche au plus loin : localhost → gateway → Internet → DNS → service
  • « Connection refused » = port fermé ou service arrêté → vérifier ss -tuln
  • « Connection timeout » = firewall qui drop silencieusement → vérifier avec traceroute
  • « Name not found » = problème DNS → vérifier /etc/resolv.conf et dig
  • Les logs sont vos meilleurs amis : journalctl -u service, /var/log/
  • Documenter le problème ET la solution pour la prochaine fois
  • Le redémarrage masque le problème, le diagnostic le résout

FAQ : questions fréquentes sur le diagnostic réseau

Section intitulée « FAQ : questions fréquentes sur le diagnostic réseau »

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn