4 façons d'identifier les pannes de réseau inévitables sous Linux
Combien de fois avez-vous résolu vos problèmes de réseau en redémarrant votre routeur ou votre ordinateur ? Cela fonctionne à la rigueur, mais cela ne résout pas les problèmes persistants ; au lieu de cela, vous devez identifier la cause profonde. J'ai quatre outils que j'utilise souvent pour identifier avec précision la plupart des problèmes de réseau sous Linux.
Sommaire
Ping : la première escale
Ping devrait être familier à la plupart des gens et c'est toujours le premier outil pour commencer à dépanner un réseau. Ping tire son nom du sonar car il fonctionne de la même manière. Lorsque vous envoyez un ping, il reçoit une réponse, un peu comme un ping de sonar lorsqu'il reflète les sons des objets. Ping envoie un paquet spécial appelé paquet ICMP (Internet Control Message Protocol) et attend la réponse.
Lorsque vous exécutez la commande ping, elle enverra périodiquement un paquet toutes les secondes. Dans la fenêtre du terminal, ping affiche le temps d'aller-retour (RTT), qui est le temps total nécessaire pour envoyer et recevoir une réponse.
ping 8.8.8.8
Vous utiliserez généralement ping dans les scénarios suivants :
-
Déterminer si un hôte est actif
-
Déterminer si une connexion a une latence élevée
-
Déterminez si votre connexion fonctionne
Lorsque ma connexion est interrompue (généralement mon Wi-Fi), je cingle souvent un hôte en bon état. Lorsque le ping échoue, ce n’est pas concluant, car n’importe quelle partie de votre connexion pourrait en être la cause. Cependant, il détermine rapidement qu'il y a un problème avec votre réseau. Vous pouvez maintenant creuser un peu plus en utilisant les outils suivants.
Ping est un outil GNU standard et fait partie de chaque système Linux. Cependant, pour l’utiliser, vous souhaiterez peut-être apprendre à comprendre les statistiques de ping, qui ne sont pas évidentes.
Creuse : lorsque Ping fonctionne, mais que votre page Web ne se charge toujours pas
Lorsque le ping fonctionne correctement, cela signifie que vous disposez d’une connexion fonctionnelle au niveau IP. Cependant, pour établir une connexion réussie, les applications telles que les navigateurs Web doivent traduire les noms de domaine en adresses IP. Parfois, ce processus de traduction est en cause, et nous avons donc besoin d’un moyen de détecter ces problèmes.
Le processus de traduction des noms de domaine en adresses IP est appelé résolution DNS (Domain Name System). Lorsque vous saisissez example.com dans la barre d'URL de votre navigateur Web, celui-ci envoie une demande à votre système pour résoudre le nom en adresse IP. Le système envoie à son tour la requête à un serveur DNS configuré (souvent fourni par votre FAI). Le processus est plus compliqué que cela, mais c’est l’essentiel. La réponse est un enregistrement DNS qui mappe le nom de domaine à une adresse IP.
Il est tout à fait possible que vous disposiez d'une connexion Internet fonctionnelle, mais vous ne pouvez pas résoudre les noms de domaine. Par exemple, si vous exécutez une commande ping et recevez une réponse, mais que vous ne pouvez visiter aucune page Web dans votre navigateur, c'est le signe que votre résolution DNS est défectueuse.
Dig est un outil fantastique qui révèle de nombreuses informations DNS pour un hôte souhaité. À son niveau le plus élémentaire, nous pouvons utiliser dig pour voir si nous pouvons résoudre un nom de domaine. Par exemple, exécutez la commande suivante pour voir quelle adresse IP possède example.com.
dig example.com
Parfois, votre système ou vos serveurs DNS mettent en cache les réponses pendant une courte période, ce qui signifie qu'ils peuvent renvoyer des valeurs obsolètes. Le paramètre « +trace » dans l'exemple suivant fait que dig contourne le cache et démarre avec les serveurs racine DNS. Le DNS est un sujet complexe mais fascinant, et les serveurs racine sont essentiellement le point de départ de toute résolution DNS sur Internet. Le paramètre « +short » maintient simplement la sortie propre.
dig +trace +short example.com
J'utilise fréquemment la commande dig. J'utilise d'abord ping, et si nécessaire, j'exécuterai dig pour déterminer si j'ai un problème de résolution DNS. En règle générale, vous résoudrez la plupart de vos problèmes de réseau à ce stade.
Pour installer dig sur Debian, exécutez la commande suivante.
sudo apt install knot-dnsutils
Pour installer dig sur Fedora, exécutez la commande suivante.
sudo dnf install bind-utils
Pour installer dig sur Arch Linux, exécutez la commande suivante.
sudo pacman -S bind-tools
Nmap : lorsque vous n'êtes pas sûr que votre cible héberge un service
Nmap est mon outil incontournable pour tester si un service peut recevoir mes demandes de connexion, par exemple un service auto-hébergé ou un service distant sur Internet.
Nmap est un outil d'analyse de ports bien connu dans le monde du pentesting (sécurité informatique). Il est extrêmement polyvalent et peut exécuter de nombreux types de requêtes réseau, émulant divers scénarios. Pour la plupart, nous ne nous intéressons qu’au TCP car c’est l’épine dorsale d’Internet. Pour initier une connexion TCP, les ordinateurs effectuent d’abord une négociation à trois. Le processus suit les étapes suivantes :
-
SYN (bonjour) : Demande de synchronisation (client→serveur)
-
SYN-ACK (bonjour, comment vas-tu ?) : Accusé de réception de synchronisation (serveur→client)
-
ACK (bien, merci) : accusé de réception (client → serveur)
La première minute de la vidéo suivante peut vous aider à mieux comprendre le processus.
Nous ne nous intéressons qu'à l'étape 1 : la synchronisation. Nous voulons envoyer une demande de synchronisation à un port spécifique (par exemple, un serveur Web sur le port 80 ou 443) et voir si le serveur répond.
sudo nmap -sS example.com -p 80,443
Les indicateurs de la commande sont les suivants :
-
« -sS »: Effectuer un scan SYN
-
« -p »: Spécifiez les ports TCP avec lesquels communiquer
Nous envoyons un paquet SYN aux ports TCP 80 et 443, qui sont les ports de service HTTP et HTTPS.
N'oubliez pas d'utiliser l'indicateur « -p » pour limiter votre analyse à des ports spécifiques, car sinon vous analyserez les 1000 premiers ports (comportement par défaut), ce qui semble suspect.
Il est important de noter qu'il s'agit de simples requêtes de synchronisation TCP et que chaque connexion TCP que vous établissez, y compris avec un navigateur Web, envoie de telles requêtes, elles sont donc inoffensives. Utilisez simplement l'indicateur « -p » pour éviter la synchronisation avec de nombreux ports.
Pour installer Nmap sur Debian, exécutez la commande suivante.
sudo apt install nmap
Pour installer Nmap sur Fedora, exécutez la commande suivante.
sudo dnf install nmap
Pour installer Nmap sur Arch Linux, exécutez la commande suivante.
sudo pacman -S nmap
Si vous souhaitez en savoir plus, nous avons un tutoriel qui couvre les bases de Nmap, comme comment effectuer des analyses.
Wireshark : Quand vous n'avez aucune idée de ce qui se passe
Wireshark est un renifleur de réseau, qui constitue le moyen le plus complet de surveiller un réseau. En termes simples, un renifleur de réseau enregistre toutes les formes de trafic qui traversent le réseau. C'est un outil complexe, mais nous pouvons en tirer beaucoup de profit simplement en comprenant les bases des réseaux, comme le DNS, l'ICMP, les ports TCP ou les adresses IP. Si vous comprenez les bases, vous pouvez alors identifier quand quelque chose est cassé.
Lorsque je ne suis pas sûr de ce qui se passe sur mon réseau, je peux utiliser Wireshark pour enregistrer tout le trafic. Je vais lancer Wireshark et commencer à sonder le réseau avec des pings et des requêtes, en essayant d'utiliser les zones qui pourraient être en panne. Wireshark enregistre le trafic capturé dans des fichiers de capture de paquets (pcap). Ces fichiers me permettent d'analyser le trafic (via Wireshark) plus tard, lorsque je pourrai me concentrer plus attentivement.
Wireshark fournit de nombreux filtres avancés qui me permettent de me concentrer sur les paquets dotés de propriétés spécifiques et d'exclure tout autre trafic bruyant. Si vous êtes intéressé par les filtres, la documentation sur les filtres de Wireshark est complète et utile.
Pour révéler plus d'informations sur votre réseau, vous devrez peut-être capturer le trafic sur plusieurs nœuds. L'aspect le plus utile des fichiers pcap est que de nombreux outils d'analyse de réseau les prennent en charge ; tcpdump les prend également en charge. Vous pouvez vous connecter à votre routeur (si possible) et capturer le trafic à l'aide de tcpdump (s'il y a suffisamment d'espace), puis l'analyser à l'aide de Wireshark ou d'autres outils.
Wireshark me donne une visibilité totale sur mon réseau. Sans cela, je ne fais que deviner.
Pour installer Wireshark sur Debian, exécutez la commande suivante.
sudo apt install wireshark
Pour installer Wireshark sur Fedora, exécutez la commande suivante.
sudo dnf install wireshark
Pour installer Wireshark sur Arch Linux, exécutez la commande suivante.
sudo pacman -S wireshark-qt
Ces outils offrent une couverture suffisante pour les problèmes de réseau domestique les plus courants. Avec eux, je peux :
-
Identifiez rapidement l'état de la connexion avec ping
-
Déterminer les problèmes de résolution de noms avec dig
-
Déterminer si un service distant doit accepter ma connexion avec Nmap
-
Obtenir une vue complète de mon trafic réseau avec Wireshark
Ces outils m'ont bien servi au fil des années pour identifier 99 % des problèmes de réseau lorsqu'ils surviennent. Cependant, il existe de nombreuses autres commandes réseau de base que tout utilisateur Linux devrait connaître.
