5 Commandes Essentielles pour Déboguer le Réseau sur Linux Minimal
- 21 mai 2025
- 6 mins de lecture
- Programmation bash , Débogage et troubleshooting
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),nmapoutelnetpour tester les ports TCP/UDPdigouhostpour la résolution DNSnetstatousspour surveiller les connexionslsofpour lister les fichiers et sockets ouvertsipouifconfigpour la configuration IPcurlouwgetpour 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/tcpet/dev/udp hostname -Ipour récupérer l’adresse IPgetentpour 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/PORTest 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
echoenvoie un saut de ligne au socket, mais le succès dépend de l’établissement de la connexion TCP. timeoutempê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êteConnection: closeforce 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/tcpde Bash avectimeout - Obtenir l’adresse IP : Utilisez
hostname -I - Résoudre le DNS : Utilisez
getent ahostsv4 - Lister les connexions TCP : Analysez
/proc/net/tcpavec awk - Obtenir la réponse HTTP : Utilisez
/dev/tcpavec 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 !