5 Commandes Essentielles pour Déboguer le Réseau sur Linux Minimal

5 Commandes Essentielles pour Déboguer le Réseau sur Linux Minimal

[Dernière mise à jour: 30 octobre 2025]
Table des matières

Si vous êtes développeur et devez diagnostiquer des problèmes réseau dans des conteneurs ou sur Linux minimal, vous remarquerez que beaucoup d’outils courants comme netcat, telnet, dig, nmap, netstat, lsof ou curl/wget sont souvent absents.

Installer ces outils peut être peu pratique dans des conteneurs, en raison de contraintes de taille ou de sécurité.

Cet article couvre cinq commandes essentielles pour le débogage réseau sur Linux que vous pouvez utiliser sans dépendre de ces outils classiques. Ces commandes exploitent des fonctionnalités natives de Linux présentes sur quasiment toutes les distributions — même dans les conteneurs les plus légers.

Que vous ayez besoin de vérifier rapidement des ports, de rechercher des IP, de lister les connexions ou de tester la santé d’un service, maîtriser ces commandes améliorera votre efficacité lorsque les outils réseau standards ne sont pas disponibles.

Pourquoi utiliser ces commandes réseau Linux ?

Les conteneurs et distributions Linux minimalistes suppriment les paquets jugés inutiles, laissant souvent de côté les outils réseau classiques :

  • netcat (nc), nmap ou telnet pour tester les ports TCP/UDP
  • dig ou host pour la résolution DNS
  • netstat ou ss pour surveiller les connexions
  • lsof pour lister les fichiers et sockets ouverts
  • ip ou ifconfig pour la configuration IP
  • curl ou wget pour tester les réponses HTTP

Au lieu d’installer ces outils volumineux, utilisez les mécanismes intégrés de Linux :

  • Les pseudo-fichiers Bash /dev/tcp et /dev/udp
  • hostname -I pour récupérer l’adresse IP
  • getent pour les recherches DNS
  • Les fichiers /proc/net/ pour lister les connexions actives
  • La redirection de descripteurs de fichiers Bash pour tester les services

Ces commandes offrent des alternatives légères et fiables pour le débogage réseau, parfaites pour les environnements conteneurisés.

1. Tester la connectivité TCP sans netcat, nmap ou telnet

Utilisez la fonctionnalité intégrée /dev/tcp de Bash combinée avec timeout pour vérifier si un port TCP est ouvert :

1timeout 1 bash -c "echo > /dev/tcp/example.com/80" 2>/dev/null && echo "Le port 80 est ouvert" || echo "Le port 80 est fermé"

Explications :

  • /dev/tcp/HOST/PORT est une fonctionnalité Bash — un pseudo-chemin, pas un vrai fichier. Bash tente d’ouvrir une connexion TCP vers l’hôte et le port donnés.
  • La commande echo envoie un saut de ligne au socket, mais le succès dépend de l’établissement de la connexion TCP.
  • timeout empêche que la commande reste bloquée si le port est fermé ou filtré.
  • La redirection des erreurs (2>/dev/null) supprime les messages indésirables.

Exemple de sortie :

Le port 80 est ouvert

Cette commande est essentielle pour le test de ports TCP sur Linux dans des conteneurs ou environnements minimalistes sans netcat, nmap ou telnet.

Pour plus d’informations sur /dev/tcp, consultez la documentation Bash.

Tip

Même < /dev/tcp/HOST/PORT seul déclenche une tentative de connexion. La redirection initie la connexion TCP.

1< /dev/tcp/example.com/80

Note

L’équivalent UDP se trouve sous /dev/udp.

2. Récupérer votre adresse IP sans ip ou ifconfig

De nombreux conteneurs (par exemple Ubuntu) n’incluent pas ip ou ifconfig. Utilisez cette commande Bash simple pour obtenir rapidement votre IP :

1hostname -I

Elle liste toutes les adresses IP attribuées aux interfaces réseau du système et permet de trouver son IP sur Linux.

Exemple :

172.17.0.3

C’est une méthode simple et fiable pour obtenir l’adresse IP sur Linux (environnements minimalistes).

Pour plus d’informations, consultez le manuel Linux de hostname.

3. Effectuer une recherche DNS sans dig ou host

Pour résoudre un nom de domaine sans dig ou host, utilisez :

1getent ahostsv4 example.com

Exemple de sortie :

93.184.216.34 STREAM example.com
93.184.216.34 DGRAM

getent interroge les bibliothèques résolvant le DNS du système, ce qui en fait un outil robuste pour vérifier le fonctionnement du DNS et résoudre des problèmes DNS dans les conteneurs.

Tip

getent peut également résoudre les adresses IPv6 avec ahostsv6 ou toutes les familles d’adresses avec ahosts.

Pour plus d’informations, consultez le manuel Linux de getent.

4. Lister les connexions TCP sans netstat, ss ou lsof

Quand netstat, ss ou lsof ne sont pas installés, inspecter /proc/net/tcp permet de vérifier les ports à l’écoute et les connexions actives.

Ce fichier contient des informations brutes détaillées sur les connexions TCP. Pour récupérer les données hexadécimales :

1cat /proc/net/tcp | awk 'NR>1 {print $2, $3, $4}'

Exemple :

0100007F:1F90 00000000:0000 0A
C0A80101:0050 0100007F:8A3B 01

Pour convertir ces données en IP, ports et états lisibles par l’homme, utilisez le script suivant :

 1awk '
 2function hex2ip(hex) {
 3  return strtonum("0x" substr(hex,7,2)) "." \
 4         strtonum("0x" substr(hex,5,2)) "." \
 5         strtonum("0x" substr(hex,3,2)) "." \
 6         strtonum("0x" substr(hex,1,2));
 7}
 8function hex2port(hex) { return strtonum("0x" hex); }
 9function tcpstate(code) {
10  return (code=="01")?"ESTABLISHED":
11         (code=="02")?"SYN_SENT":
12         (code=="03")?"SYN_RECV":
13         (code=="04")?"FIN_WAIT1":
14         (code=="05")?"FIN_WAIT2":
15         (code=="06")?"TIME_WAIT":
16         (code=="07")?"CLOSE":
17         (code=="08")?"CLOSE_WAIT":
18         (code=="09")?"LAST_ACK":
19         (code=="0A")?"LISTEN":
20         (code=="0B")?"CLOSING":"UNKNOWN";
21}
22NR>1 {
23  split($2,local,":"); split($3,remote,":");
24  lip=hex2ip(local[1]); lport=hex2port(local[2]);
25  rip=hex2ip(remote[1]); rport=hex2port(remote[2]);
26  printf "%-21s %-21s %-12s\n", lip ":" lport, rip ":" rport, tcpstate($4);
27}' /proc/net/tcp

Exemple de sortie :

0.0.0.0:22             0.0.0.0:0              LISTEN
172.17.0.3:50510       93.184.216.30:80       ESTABLISHED

Note

Accéder à /proc/net/tcp peut nécessiter des privilèges root ou élevés dans certains environnements.

Cette méthode est un excellent moyen de lister les connexions TCP sans outils supplémentaires.

Pour plus de détails, consultez la documentation du kernel Linux sur /proc/net/tcp.

Note

Vous pouvez adapter ce script pour le TCP sur IPv6, l’UDP et l’UDP sur IPv6 en utilisant /proc/net/tcp6, /proc/net/udp et /proc/net/udp6.

5. Obtenir une réponse HTTP sans curl ou wget

Cette commande est un bonus pour vérifier non seulement si un port est ouvert, mais si le serveur web répond réellement à une requête HTTP, sans curl, wget ou netcat (mode client).

Elle utilise la redirection de descripteurs de fichiers de Bash.

1exec 3<>/dev/tcp/example.com/80
2echo -e "GET / HTTP/1.1\nHost: example.com\nConnection: close\n\n" >&3
3cat <&3
4exec 3<&-

Explications :

  • exec 3<>/dev/tcp/example.com/80 : ouvre une connexion TCP sur le descripteur de fichier 3 (lecture/écriture).
  • echo -e "..." >&3 : envoie une requête HTTP minimale correctement formatée. L’en-tête Connection: close force le serveur à répondre et à fermer le socket proprement.
  • cat <&3 : lit la réponse (en-têtes et corps HTTP) et l’affiche.
  • exec 3<&- : ferme le descripteur 3 et libère la ressource.

Cette technique est idéale pour le débogage au niveau du service web dans Linux minimal ou conteneurisé, prouvant que l’application fonctionne, pas seulement le réseau.

Bonus : Outils Linux souvent absents

Tâche Outils souvent absents Alternatives intégrées / Notes
Test port TCP netcat, nmap, telnet Bash /dev/tcp + timeout
Adresse IP ip, ifconfig hostname -I
Résolution DNS dig, host getent ahostsv4
Liste connexions netstat, ss, lsof Lire et parser /proc/net/tcp; lsof souvent absent en conteneur
Vérif. HTTP curl, wget, netcat Bash /dev/tcp + descripteurs de fichiers
Capture paquets tcpdump Souvent indisponible en conteneur; utiliser tcpdump minimal ou externe

Résumé

Lorsque vous travaillez dans des conteneurs ou des environnements Linux minimalistes, le débogage réseau sans netcat, dig, nmap, telnet, netstat, lsof, curl ou wget est simple si vous connaissez les bonnes commandes intégrées :

  • Tester les ports TCP : Utilisez /dev/tcp de Bash avec timeout
  • Obtenir l’adresse IP : Utilisez hostname -I
  • Résoudre le DNS : Utilisez getent ahostsv4
  • Lister les connexions TCP : Analysez /proc/net/tcp avec awk
  • Obtenir la réponse HTTP : Utilisez /dev/tcp avec des descripteurs de fichiers (3)

Maîtriser ces commandes vous permettra de déboguer le réseau Linux en toute confiance, même lorsque les outils classiques sont absents.

Vous avez trouvé ces commandes utiles ? Vous avez des astuces ou des questions sur le débogage réseau dans Linux minimal ? Laissez un commentaire ci-dessous et partagez votre expérience !

Articles Connexes

Mise en Place et Utilisation de Rust Hors Ligne pour un Développement Sans Faille : Un Tutoriel Étape par Étape

Mise en Place et Utilisation de Rust Hors Ligne pour un Développement Sans Faille : Un Tutoriel Étape par Étape

[Dernière mise à jour: 23 août 2025]

C’est un processus simple de mettre en place Rust lorsque vous avez accès à Internet, mais que se passe-t-il si vous êtes hors ligne? Rust est …

Lire la suite
Comment Faire Parler Votre Terminal en Couleur (avec les Codes ANSI)

Comment Faire Parler Votre Terminal en Couleur (avec les Codes ANSI)

Transformez un terminal gris et monotone en texte coloré et lisible qui parle vraiment votre langage. Vous êtes déjà resté plissé devant un mur de …

Lire la suite