Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 14 / Notion

Debug réseau local : méthode hôte

La méthode Réseaux dit QUOI tester ; ici le COMMENT côté hôte : sockets, firewall local, namespaces/conteneurs, et les pièges specimens (localhost menteur, DNS local,…

◷ 14 minutesTravail sur votre machine

Prérequis : Réseaux ch. 9 (méthode) + cours précédent.

Pourquoi

La méthode Réseaux dit QUOI tester ; ici le COMMENT côté hôte : sockets, firewall local, namespaces/conteneurs, et les pièges specimens (localhost menteur, DNS local, proxy env).

Concepts

  • Écoute réelle : ss -tlnp + regarder L'ADRESSE (127.0.0.1 vs 0.0.0.0) et le processus. Service « démarré » ≠ service qui écoute (config, crash silencieux, port pris → Address already in use dans journalctl !).
  • Chaîne locale : appli → loopback ? → firewall local (nft/ufw + iptables -L résiduel !) → réseau → … Chaque maillon testé : curl localhost:port, curl IP-lan:port, puis depuis dehors.
  • Namespaces/conteneurs : ip netns (namespaces), docker network inspect (quel conteneur a quelle IP, quel réseau). « Injoignable » entre conteneurs = souvent pas le même réseau.
  • Variables proxy (http_proxy/https_proxy/no_proxy) : shell qui passe par un proxy fossilisé → curl qui timeout bizarrement. env | grep -i proxy fait partie du rituel.

Exemple : rituel en 2 minutes

ss -tlnp | grep 3000        # écoute ? où ? quel pid ?
curl -s -o /dev/null -w "%{http_code}\n" localhost:3000   # local ?
curl -s -o /dev/null -w "%{http_code}\n" 192.168.1.10:3000 # LAN ?
sudo nft list ruleset | grep 3000   # firewall local ?
env | grep -i proxy         # proxy fossilisé ?

Cas réel

API « down » : systemd green, port en LISTEN… sur ::1 (IPv6 localhost !) pendant que tout teste en IPv4. ss montrait ::1:3000, personne n'avait lu l'adresse. Fix : HOST=0.0.0.0. Depuis : toujours lire l'adresse, jamais juste le port.

Pièges

  • localhost qui résout en ::1 : pile v6 testée, v4 ignorée (ou l'inverse). Tester les deux explicitement.
  • Règles iptables résiduelles + nftables actif : deux firewalls qui se marchent dessus (migration iptables→nft incomplète).
  • Conteneurs sur réseaux différents : docker network inspect avant tout (le classique compose qui a changé de nom de projet !).

À retenir

Adresse lue toujours, maillons testés dans l'ordre, proxy env vérifié, namespaces inspectés.

Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.