Problèmes courants de connectivité réseau Linux et comment les résoudre
Diagnostiquez les problèmes réseau Linux avec ip, ping, dig, ethtool, tcpdump, les vérifications de pare-feu et des correctifs clairs pour les pannes courantes.
Problèmes courants de connectivité réseau Linux et comment les résoudre
Les problèmes réseau Linux se manifestent généralement par l'un des quatre symptômes suivants : pas de route, pas de DNS, trafic lent ou un port de service qui ne répond pas. Des configurations domestiques simples aux environnements d'entreprise complexes, rencontrer des problèmes réseau sur les systèmes Linux est courant. Ces problèmes peuvent aller de pannes de connectivité complètes à des vitesses réseau frustrantes. Heureusement, Linux fournit un ensemble robuste d'outils et de commandes qui peuvent aider à diagnostiquer et résoudre la plupart des problèmes réseau courants. Travaillez de l'hôte local vers l'extérieur : état du lien, adresse IP, route, DNS, pare-feu, puis le service distant.
Comprendre la pile réseau
Avant de plonger dans le dépannage, une compréhension de base de la pile réseau Linux est bénéfique. La pile réseau est un modèle en couches (similaire au modèle OSI ou TCP/IP) qui gère la communication réseau. Les composants clés incluent :
- Cartes d'interface réseau (NIC) : Le matériel physique responsable de l'envoi et de la réception des données.
- Configuration de l'interface réseau : Paramètres logiciels qui définissent le fonctionnement des NIC (adresse IP, masque de sous-réseau, passerelle, etc.).
- Routage IP : Le processus de direction du trafic réseau entre différents réseaux.
- DNS (Domain Name System) : Traduit les noms de domaine lisibles par l'homme en adresses IP.
- Pare-feu (iptables/nftables) : Contrôle le flux du trafic réseau en fonction de règles prédéfinies.
Lors du dépannage, vous interagirez souvent avec des outils qui inspectent et manipulent ces composants.
Problèmes de connectivité réseau courants et solutions
1. Aucune connectivité réseau / Impossible d'atteindre les ressources externes
C'est le problème le plus basique et souvent le plus perturbateur. Cela signifie que votre système ne peut pas envoyer ou recevoir de paquets de données au-delà de son réseau local.
Étapes de diagnostic :
Vérifier l'état de l'interface réseau :
ip aouifconfig -a: Liste toutes les interfaces réseau et leur état actuel. Recherchez votre interface principale (par exemple,eth0,ens33) et vérifiez si elle a une adresse IP et est dans un étatUP.ip a show eth0 # ou ifconfig eth0- Si l'interface est inactive, activez-la :
sudo ip link set eth0 up # ou sudo ifconfig eth0 up
Vérifier l'adresse IP, le masque de sous-réseau et la passerelle :
- Assurez-vous que votre système a une adresse IP et un masque de sous-réseau valides pour son réseau. L'adresse IP de la passerelle est essentielle pour atteindre les réseaux externes.
- Vérifiez votre configuration de passerelle :
Vous devriez voir une route par défaut (commençant généralement parip r # ou route -n0.0.0.0/0oudefault) pointant vers votre adresse IP de passerelle. - Si vous utilisez DHCP, essayez de renouveler le bail :
sudo dhclient -r eth0 # Libérer le bail actuel sudo dhclient eth0 # Obtenir un nouveau bail - Si vous utilisez une IP statique, vérifiez le gestionnaire réseau actif pour votre distribution, comme Netplan sur de nombreux serveurs Ubuntu, les profils de connexion NetworkManager, ou les fichiers hérités comme
/etc/network/interfaceset/etc/sysconfig/network-scripts/ifcfg-*là où ils sont encore utilisés.
Tester la connectivité réseau locale :
pingl'adresse IP de la passerelle : Cela vérifie si vous pouvez atteindre votre routeur ou passerelle par défaut.
(par exemple,ping <ip_passerelle>ping 192.168.1.1)
Tester la résolution DNS :
pingun nom d'hôte externe : Si pinger une adresse IP fonctionne mais pas un nom d'hôte, cela indique un problème DNS.ping example.comnslookupoudig: Ces outils interrogent les serveurs DNS.nslookup example.com # ou dig example.com- Vérifiez votre configuration de serveur DNS dans
/etc/resolv.conf.
Assurez-vous qu'elle liste des entréescat /etc/resolv.confnameservervalides.
Vérifier le gestionnaire réseau (si applicable) :
- Si vous utilisez NetworkManager (courant sur les postes de travail Linux), vérifiez son état :
nmcli networking off nmcli networking on nmcli device status nmcli connection show
- Si vous utilisez NetworkManager (courant sur les postes de travail Linux), vérifiez son état :
Correctifs :
- Redémarrer les services réseau :
sudo systemctl restart networking # Pour Debian/Ubuntu (ancien) sudo systemctl restart NetworkManager # Pour les systèmes utilisant NetworkManager sudo systemctl restart network # Pour RHEL/CentOS - Corriger les fichiers de configuration : Modifiez manuellement les fichiers de configuration pour définir l'IP correcte, le masque de sous-réseau, la passerelle et les serveurs DNS.
- Vérifier le serveur DHCP : Assurez-vous que votre serveur DHCP fonctionne et a des baux disponibles.
- Remplacer le matériel défectueux : Si
ip ane montre aucun lien, essayez un câble réseau ou un port différent, ou même une NIC différente.
2. Vitesses réseau lentes
Lorsque votre réseau est techniquement fonctionnel mais lent, cela peut être tout aussi frustrant.
Étapes de diagnostic :
Isoler le goulot d'étranglement :
- Tester la vitesse localement : Utilisez des outils comme
iperf3pour tester le débit entre deux machines sur votre réseau local. Cela aide à déterminer si la lenteur est dans votre LAN ou avec votre connexion WAN.- Sur le serveur (une machine) :
iperf3 -s - Sur le client (une autre machine) :
iperf3 -c <ip_serveur>
- Sur le serveur (une machine) :
- Tester la vitesse externe : Utilisez des sites web de test de vitesse en ligne ou des outils comme
speedtest-cli.sudo apt install speedtest-cli # Debian/Ubuntu sudo yum install speedtest-cli # RHEL/CentOS (peut nécessiter le dépôt EPEL) speedtest-cli
- Tester la vitesse localement : Utilisez des outils comme
Vérifier les erreurs de l'interface réseau :
- Utilisez
ethtoolpour vérifier les erreurs, les paquets perdus ou les problèmes matériels sur l'interface.
Recherchez des métriques commesudo ethtool -S eth0rx_dropped,tx_droppedourx_errors.
- Utilisez
Examiner le trafic réseau :
iftopounethogs: Ces outils montrent l'utilisation du réseau en temps réel par connexion ou par processus, respectivement. Ils peuvent aider à identifier quelle application ou hôte consomme de la bande passante.sudo apt install iftop nethogs # Debian/Ubuntu sudo yum install iftop nethogs # RHEL/CentOS sudo iftop -i eth0 sudo nethogs eth0tcpdump: Pour une analyse plus approfondie des paquets (plus avancé).sudo tcpdump -i eth0 -n
Vérifier la congestion :
- Si vous avez de nombreux appareils sur votre réseau, la congestion pourrait en être la cause. Vérifiez l'état de votre routeur et la bande passante disponible.
Examiner les performances DNS :
- Les recherches DNS lentes peuvent rendre la navigation lente. Essayez d'utiliser un serveur DNS différent (par exemple, Google DNS 8.8.8.8, Cloudflare 1.1.1.1) dans
/etc/resolv.confou les paramètres de votre gestionnaire réseau et retestez.
- Les recherches DNS lentes peuvent rendre la navigation lente. Essayez d'utiliser un serveur DNS différent (par exemple, Google DNS 8.8.8.8, Cloudflare 1.1.1.1) dans
Correctifs :
- Mettre à jour les pilotes : Assurez-vous que les pilotes de votre carte réseau sont à jour.
- Ajuster le MTU : Parfois, un paramètre de Maximum Transmission Unit (MTU) incorrect peut causer des problèmes de performance, surtout avec les VPN ou certaines configurations réseau. (Avancé : Utilisez
ip link set eth0 mtu <valeur>). - Remplacer le matériel : Une NIC ou un port de commutateur défaillant peut causer des ralentissements.
- Optimiser les règles du pare-feu : Des règles de pare-feu trop complexes ou inefficaces peuvent parfois affecter les performances.
- Mettre à niveau l'infrastructure réseau : Si votre réseau est saturé, vous pourriez avoir besoin d'un routeur, d'un commutateur ou d'une connexion Internet plus rapide.
3. Problèmes de connectivité intermittents
C'est peut-être le type de problème le plus difficile, car les connexions se coupent de manière aléatoire.
Étapes de diagnostic :
Surveiller les journaux système :
- Vérifiez les journaux système pour toute erreur ou déconnexion liée au réseau. Les journaux clés incluent :
/var/log/syslogou/var/log/messagesjournalctl -xe(pour les systèmes utilisant systemd)- Recherchez des messages liés à
NetworkManager,dhclient,kernelou des interfaces réseau spécifiques.
- Vérifiez les journaux système pour toute erreur ou déconnexion liée au réseau. Les journaux clés incluent :
Vérifier
dmesg:dmesgaffiche les messages du tampon en anneau du noyau, ce qui peut révéler des problèmes matériels ou de pilote.dmesg | grep -i eth0 dmesg | grep -i net
Tester avec
pingen continu :- Sous Linux,
pings'exécute en continu par défaut jusqu'à ce que vous l'arrêtiez avec Ctrl+C. Utilisez-clorsque vous voulez un nombre fixe.ping <ip_passerelle> ping -c 1000 <ip_passerelle> - Pingez à la fois la passerelle et un hôte externe simultanément pour différencier les problèmes locaux des problèmes externes.
- Sous Linux,
Vérifier la connectivité sans fil (si applicable) :
- Si vous utilisez le Wi-Fi, vérifiez la force du signal, les interférences et réassociez-vous au réseau.
iwconfig nmcli device wifi list nmcli device wifi connect <SSID> password <mot_de_passe>
- Si vous utilisez le Wi-Fi, vérifiez la force du signal, les interférences et réassociez-vous au réseau.
Vérifications matérielles :
- Essayez un câble réseau différent, un port sur le commutateur, ou même une NIC différente.
- Si sans fil, essayez de vous rapprocher du point d'accès.
Correctifs :
- Mettre à jour les pilotes et le noyau : Les problèmes intermittents peuvent parfois être causés par des pilotes ou des modules du noyau bogués. Assurez-vous que votre système est entièrement mis à jour.
- Désactiver l'économie d'énergie : Certaines NIC ont des fonctionnalités d'économie d'énergie agressives qui peuvent causer des déconnexions. Cela peut parfois être ajusté via
ethtoolou par des paramètres de module du noyau. - Simplifier la configuration réseau : Désactivez temporairement NetworkManager ou d'autres démons de gestion réseau pour exclure les conflits.
- Vérifier les baux DHCP : Assurez-vous que votre serveur DHCP ne manque pas de baux ou n'a pas de problèmes de renouvellement.
4. Pare-feu bloquant le trafic
Les pare-feu sont essentiels pour la sécurité, mais des erreurs de configuration peuvent bloquer le trafic légitime.
Étapes de diagnostic :
Vérifier l'état du pare-feu :
iptables: Liste les règlesiptablesactuelles.sudo iptables -L -n -vnftables: Liste les règlesnftablesactuelles (systèmes plus récents).sudo nft list ruleset- Vérifiez si
ufw(Uncomplicated Firewall) oufirewalldest en cours d'exécution et quelles règles sont actives.sudo ufw status verbose sudo systemctl status firewalld sudo firewall-cmd --list-all
Tester des ports spécifiques :
- Si vous ne pouvez pas accéder à un service (par exemple, SSH sur le port 22), essayez de vous connecter en utilisant
telnetounc(netcat) depuis une autre machine.telnet <ip_serveur> <port> # ou nc -zv <ip_serveur> <port>
- Si vous ne pouvez pas accéder à un service (par exemple, SSH sur le port 22), essayez de vous connecter en utilisant
Correctifs :
- Désactiver temporairement le pare-feu : À des fins de test uniquement, vous pouvez désactiver temporairement le pare-feu pour voir si la connectivité revient. N'oubliez pas de le réactiver ensuite.
sudo ufw disable sudo systemctl stop firewalld # ou gérez les règles iptables directement - Ajouter des règles spécifiques : Si le pare-feu est le problème, ajoutez des règles pour autoriser le trafic nécessaire. Par exemple, pour autoriser SSH :
ufw:sudo ufw allow ssh # ou sudo ufw allow 22/tcpfirewalld:sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reloadiptables(exemple pour autoriser le HTTP sortant) :sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
Meilleures pratiques pour l'administration réseau
- Documentez votre réseau : Conservez des enregistrements des adresses IP, sous-réseaux, passerelles, serveurs DNS et règles de pare-feu.
- Utilisez la journalisation centralisée : Transférez les journaux vers un serveur central pour suivre facilement les problèmes sur plusieurs machines.
- Surveillez les performances réseau : Mettez en œuvre des outils de surveillance (par exemple, Nagios, Zabbix, Prometheus) pour détecter les problèmes de manière proactive.
- Maintenez les systèmes à jour : Appliquez régulièrement les correctifs de sécurité et les mises à jour, car ils incluent souvent des correctifs pour les bogues liés au réseau.
- Comprenez votre matériel : Connaissez les capacités et les limites de vos interfaces réseau, commutateurs et routeurs.
- Testez les modifications : Avant d'apporter des modifications importantes à la configuration réseau, testez-les dans un environnement non productif si possible.
À retenir
Commencez par les bases : lien physique, état de l'interface, adresse IP, route par défaut, DNS et règles de pare-feu. Si ceux-ci passent, testez le port de service spécifique avec nc et inspectez les paquets avec tcpdump. Cet ordre vous évite de chercher des problèmes d'application alors que l'hôte n'a tout simplement pas de route ou de résolution de nom.