Configuration réseau, diagnostics et dépannage Linux général sont parties essentielles de l'administration du système. Même pour un développeur qui travaille avec des systèmes Linux, la connaissance des commandes réseau Linux est un atout supplémentaire.
Plus précisément, si vous souhaitez devenir ingénieur DevOps ou faire partie de SRE, il est essentiel de connaître toutes les commandes de dépannage Linux car ils feront partie de vos activités quotidiennes.
Cet article couvrira les importantescommandes de mise en réseau et de dépannage de Linux qui sont nativement disponibles dans les systèmes Linux.
Quelles sont les meilleures commandes de mise en réseau et de dépannage Linux ?
Voici la liste des commandes de dépannage nativement disponibles.
Commande | Description |
hostname | Pour vérifier et définir le nom d'hôte du serveur. |
host | Pour obtenir les détails du DNS de l'hôte |
ping | Vérifie si le serveur distant est accessible en utilisant le protocole ICMP. Il indique également le temps d'aller-retour des paquets. |
curl | Un utilitaire multiplateforme utilisé pour transférer des données. Il peut être utilisé pour résoudre plusieurs problèmes de réseau. |
wget | Utilitaire pour télécharger des fichiers. Peut être utilisé pour dépanner les connexions proxy et la connectivité. |
ip | Un remplacement pour ifconfig . Peut être utilisé pour configurer et récupérer des informations sur les interfaces réseau des systèmes |
arp | Utilitaire pour afficher et gérer le cache arp. |
ss/netstat | Principalement utilisé pour vérifier les connexions et le PID sur les ports et les sockets Unix. |
tracerout e | Cet utilitaire utilise le protocole ICMP et trouve les sauts impliqués dans la lecture du serveur de destination. Il montre également le temps qu'il faut entre les sauts. |
mtr | mtr est un mélange de ping et traceroute . Il fournit également des informations supplémentaires telles que les hôtes intermédiaires et la réactivité. |
dig | Vous aide à obtenir les enregistrements DNS associés à un nom de domaine. |
nslookup | Commande similaire à creuser. |
nc | utilitaire pour déboguer les sockets TCP/UDP. |
telnet | Il peut être utilisé pour tester la connectivité à distance sur les ports |
route | Vous aide à obtenir toutes les informations sur la table de routage |
tcpdump | Cet utilitaire vous aide à capturer les paquets réseau et à les analyser pour les problèmes de réseau. |
lsof | liste tous les fichiers ouverts et les informations de processus qui l'ont ouvert |
Comprenons chaque commande et voyons comment nous pouvons l'utiliser pour dépanner Linux.
Remarque importante : Chaque commande/utilitaire mentionné dans cet article a de nombreuses options et drapeaux. Chaque commande a une page de manuel et vous pouvez l'utiliser pour identifier les indicateurs et les options requis pour votre cas d'utilisation. Par exemple, pour
ip
commande, vous pouvez simplement la taperman ip
dans le terminal pour obtenir tous les détails sur cette commande.
1. nom d'hôte
La commande Hostname est utilisée pour afficher le nom d'hôte de la machine et pour définir le nom d'hôte.
hostname
Vous pouvez utiliser la commande hostname pour définir un nouveau nom d'hôte pour la machine. Par exemple,
sudo hostname temp.com
Si vous définissez le nom d'hôte à l'aide de "hostname
”, lorsque vous redémarrez la machine, le nom d'hôte changera pour le nom spécifié dans le fichier de nom d'hôte (par exemple :/etc/hostname).
Donc, si vous voulez changer le nom d'hôte de façon permanente, vous pouvez utiliser le /etc/hosts
fichier ou fichier de nom d'hôte pertinent présent sur le serveur.
- Pour les machines Ubuntu, vous pouvez le modifier dans le
/etc/hostname
fichier. - Pour RHEL, CentOS et Fedora, vous pouvez le modifier dans le
/etc/sysconfig/network
fichier.
2. hébergeur
La commande Host est pour la recherche inversée d'IP ou d'un nom DNS.
Par exemple, si vous voulez trouver un DNS attaché avec une adresse IP, vous pouvez utiliser les commandes de l'hôte comme suit.
host 8.8.8.8
Vous pouvez également faire l'inverse pour trouver l'adresse IP associée au nom de domaine. Par exemple,
host devopscube.com
3. ping
L'utilitaire de mise en réseau ping est utilisé pour vérifier si le serveur distant est accessible ou non. Il est principalement utilisé pour vérifier la connectivité et dépanner le réseau.
Il fournit les détails suivants.
- Octets envoyés et reçus
- Paquets envoyés, reçus et perdus
- Durée approximative de l'aller-retour (en millisecondes)
La commande Ping a la syntaxe suivante.
ping <IP or DNS>
Par exemple,
ping devopscube.com
Pour cingler l'adresse IP
ping 8.8.8.8
Si vous souhaitez limiter la sortie du ping sans utiliser ctrl+c, vous pouvez utiliser le drapeau "-c" avec un nombre comme indiqué ci-dessous.
ping -c 1 devopscube.com
4. boucler
L'utilitaire Curl est principalement utilisé pour transférer des données depuis ou vers un serveur. Cependant, vous pouvez l'utiliser pour le dépannage du réseau.
Pour le dépannage du réseau, curl
prend en charge des protocoles tels que DICT
, FILE
, FTP
, FTPS
, GOPHER
, HTTP
, HTTPS
, IMAP
, IMAPS
, LDAP
, LDAPS
, MQTT
, POP3
, POP3S
, RTMP
, RTMPS
, RTSP
, SCP
, SFTP
, SMB
, SMBS
, SMTP
, SMTPS
, TELNET
et TFTP
Par exemple, curl
peut vérifier la connectivité sur le port 22 en utilisant telnet.
curl -v telnet://192.168.33.10:22
Vous pouvez vérifier la connectivité FTP à l'aide de curl.
curl ftp://ftptest.net
Vous pouvez également dépanner la connectivité du serveur Web.
curl http://devopscube.com -I
5. wget
Le wget
La commande est principalement utilisée pour récupérer des pages Web.
Vous pouvez utiliser wget
pour résoudre également les problèmes de réseau.
Par exemple, vous pouvez dépanner les connexions au serveur proxy à l'aide de wget.
wget -e use_proxy=yes http_proxy=<proxy_host:port> http://externalsite.com
Vous pouvez vérifier si un site Web est en ligne en récupérant les fichiers.
wget www.google.com
6. ip (ifconfig)
ip
La commande est utilisée pour afficher et manipuler les routes et les interfaces réseau. ip la commande est la version la plus récente de ifconfig
. ifconfig fonctionne sur tous les systèmes, mais il est préférable d'utiliser la commande ip au lieu de ifconfig.
Voyons quelques exemples de ip
commande.
Afficher les périphériques réseau et la configuration
ip addr
Vous pouvez utiliser cette commande avec pipes et grep pour obtenir une sortie plus granulaire comme l'adresse IP de l'interface eth0. C'est très utile lorsque vous travaillez sur des outils d'automatisation qui nécessitent une récupération dynamique de l'IP.
La commande suivante obtient l'adresse IP de eth0
interface réseau.
ip a | grep eth0 | grep "inet" | awk -F" " '{print $2}'
Obtenir les détails d'une interface spécifique
ip a show eth0
Vous pouvez lister les tables de routage.
ip route
ip route list
7. arp
ARP (Protocole de résolution d'adresse ) affiche la table de cache des adresses IP et des adresses MAC des réseaux locaux avec lesquelles le système a interagi.
arp
Exemple de sortie,
[email protected]:~$ arp
Address HWtype HWaddress Flags Mask Iface
10.0.2.3 ether 52:54:00:12:35:03 C eth0
192.168.33.1 ether 0a:00:27:00:00:00 C eth1
10.0.2.2 ether 52:54:00:12:35:02 C eth0
8. ss (netstat)
Le ss
la commande remplace netstat
. Vous pouvez toujours utiliser le netstat
commande sur tous les systèmes.
Utiliser ss
commande, vous pouvez obtenir plus d'informations que netstat
commande. La commande ss est rapide car elle obtient toutes les informations de l'espace utilisateur du noyau.
Voyons maintenant quelques utilisations de ss
commande.
Liste de toutes les connexions
Le "ss
" la commande répertoriera toutes les connexions de socket TCP, UDP et Unix sur votre machine.
[email protected]:~$ ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 7594 * 0 u_str ESTAB 0 0 @/com/ubuntu/upstart 7605 * 0 u_str ESTAB 0 0 * 29701 * 0 u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 29702 * 0 tcp ESTAB 0 400 172.31.18.184:ssh 1.22.167.31:61808
La sortie du ss
La commande sera grande pour que vous puissiez utiliser ” ss | less
” commande pour rendre la sortie défilable.
Filtrage des sockets TCP, UDP et Unix
Si vous souhaitez filtrer les détails des sockets TCP, UDP ou UNIX, utilisez les indicateurs "-t" "-u" et "-x" avec la commande "ss". Il affichera toutes les connexions établies aux ports spécifiques. Si vous souhaitez répertorier à la fois les ports connectés et les ports d'écoute, utilisez "a" avec l'indicateur spécifique, comme indiqué ci-dessous.
ss -ta ss -ua ss -xa
Répertorier tous les ports d'écoute
Pour répertorier tous les ports d'écoute, utilisez l'indicateur "-l" avec la commande ss. Pour répertorier des sockets TCP, UDP ou UNIX spécifiques, utilisez les indicateurs "-t", "-u" et "-x" avec "-l" comme indiqué ci-dessous.
[email protected]:~$ ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 50 :::http-alt :::* LISTEN 0 50 :::55857 :::* LISTEN 0 128 :::ssh :::* LISTEN 0 50 :::53285 :::* [email protected]:~$
Liste de tous les établis
Pour lister tous les ports établis, utilisez le state established
drapeau comme indiqué ci-dessous.
ss -t -r state established
Pour lister toutes les sockets en état d'écoute,
ss -t -r state listening
9. traceroute
Si vous n'avez pas de traceroute
utilitaire dans votre système ou serveur, vous pouvez l'installer à partir du référentiel natif.
traceroute
est un utilitaire de dépannage réseau. En utilisant traceroute, vous pouvez trouver le nombre de sauts requis pour qu'un paquet particulier atteigne la destination.
Par exemple,
traceroute google.com
Voici le résultat.
traceroute to google.com (173.194.33.163), 30 hops max, 60 byte packets 1 ec2-50-112-0-84.us-west-2.compute.amazonaws.com (50.112.0.84) 1.974 ms 1.895 ms 1.899 ms 2 100.64.1.247 (100.64.1.247) 1.414 ms 100.64.1.137 (100.64.1.137) 1.127 ms 100.64.1.97 (100.64.1.97) 1.313 ms 3 100.64.0.198 (100.64.0.198) 1.443 ms 100.64.0.62 (100.64.0.62) 2.160 ms 100.64.0.60 (100.64.0.60) 2.116 ms 10 66.249.94.214 (66.249.94.214) 6.313 ms 7.104 ms 209.85.249.34 (209.85.249.34) 5.986 ms 11 209.85.244.65 (209.85.244.65) 6.157 ms 6.341 ms 6.574 m. . 12 sea09s18-in-f3.1e100.net (173.194.33.163) 6.302 ms 6.517 ms 6.071 ms [email protected]:~$
La sortie ci-dessus montre le nombre de sauts (12) pour atteindre google.com à partir du serveur devopscube AWS ec2.
10. mètres
Le mtr
L'utilitaire est un outil de diagnostic réseau pour dépanner les goulots d'étranglement du réseau. Il combine les fonctionnalités de ping
et traceroute
Par exemple, la commande suivante affiche le traceroute
sortie en temps réel.
mtr google.com
Voici le résultat.
rapport mtr
Vous pouvez générer un rapport à l'aide de l'indicateur –report. Lorsque vous exécutez le rapport mtr, il envoie 10 paquets à la destination et crée le rapport.
mtr -n --report google.com
11. creuser
Si vous avez une tâche liée à la recherche DNS, vous pouvez utiliser "dig
” pour interroger les serveurs de noms DNS.
Obtenir tous les enregistrements DNS avec dig
La commande suivante renvoie tous les enregistrements DNS et les informations TTL d'un twitter.com
dig twiter.com ANY
Utilisez +short
pour obtenir la sortie sans verbeux.
dig google.com ANY +short
Obtenir un enregistrement DNS spécifique avec dig
Par exemple, si vous souhaitez obtenir l'enregistrement A record
pour le nom de domaine particulier, vous pouvez utiliser la commande dig. +short
fournira les informations sans verbeux
dig www.google.com A +short
De même, vous pouvez obtenir les autres informations d'enregistrement séparément à l'aide des commandes suivantes.
dig google.com CNAME +short
dig google.com MX +short
dig google.com TXT +short
dig google.com NS +short
Recherche DNS inversée avec dig
Vous pouvez effectuer une recherche DNS inversée avec dig en utilisant la commande suivante. Remplacer 8.8.8.8
avec l'IP requise
dig -x 8.8.8.8
12. nslookup
Nslookup (Name Server Lookup) est utilisé pour vérifier les entrées DNS. C'est similaire à la commande dig.
Pour vérifier les enregistrements DNS d'un domaine, vous pouvez utiliser la commande suivante.
nslookup google.com
Vous pouvez également faire une recherche inversée avec l'adresse IP.
nslookup 8.8.8.8
Pour obtenir tous les enregistrements DNS d'un nom de domaine, vous pouvez utiliser ce qui suit.
nslookup -type=any google.com
De même, vous pouvez interroger des enregistrements tels que mx
, soa
etc
13. nc (netcat)
Le nc
(netcat) est connue comme l'armée suisse des commandes réseau.
Utilisation de nc
, vous pouvez vérifier la connectivité d'un service exécuté sur un port spécifique.
Par exemple, pour vérifier si ssh
port est ouvert, vous pouvez utiliser la commande suivante.
nc -v -n 192.168.33.10 22
netcat
peut également être utilisé pour le transfert de données via TCP/UDP et l'analyse des ports.
L'analyse des ports n'est pas recommandée dans les environnements cloud. Vous devez demander au fournisseur de cloud d'effectuer des opérations d'analyse de ports dans votre environnement.
14. telnet
La commande telnet est utilisée pour dépanner les connexions TCP sur un port.
Pour vérifier la connectivité des ports à l'aide de telnet, utilisez la commande suivante.
telnet 10.4.5.5 22
15. itinéraire
Le "route
” est utilisée pour obtenir les détails de la table de routage de votre système et pour la manipuler. Examinons quelques exemples pour la commande route.
Liste de toutes les routes
Exécutez la "route
” sans aucun argument pour répertorier toutes les routes existantes dans votre système ou serveur.
[email protected]:~$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default ip-172-31-16-1. 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0 172.31.16.0 * 255.255.240.0 U 0 0 0 eth0 [email protected]:~$
Si vous souhaitez obtenir la sortie complète sous forme numérique sans aucun nom d'hôte, vous pouvez utiliser le drapeau "-n" avec la commande route.
[email protected]:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.31.16.1 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0 [email protected]:~$
16. tcpdump
Le tcpdump
La commande est principalement utilisée pour dépanner le trafic réseau.
Remarque : Pour analyser la sortie de
tcpdump
La commande nécessite un certain apprentissage, donc l'expliquer n'entre pas dans le cadre de cet article.
tcpdump
La commande fonctionne avec les interfaces réseau du système. Vous devez donc utiliser les privilèges administratifs pour exécuter la commande.
Répertorier toutes les interfaces réseau
Utilisez la commande suivante pour lister toutes les interfaces.
sudo tcpdump --list-interfaces
Capturer des paquets sur une interface spécifique
Pour obtenir le vidage des paquets sur une interface spécifique, vous pouvez utiliser la commande suivante.
Remarque : appuyez sur
ctrl + c
pour arrêter de capturer les paquets.
sudo tcpdump -i eth0
Pour limiter la capture de paquets, vous pouvez utiliser le -c
drapeau avec le numéro.
Par exemple,
sudo tcpdump -i eth0 -c 10
Capturer des paquets sur toutes les interfaces
Pour capturer des paquets sur toutes les interfaces, utilisez le any
drapeau comme indiqué ci-dessous.
sudo tcpdump -i any
17. lsof
lsof
est une commande qui serait utilisée dans le dépannage quotidien de Linux. Cette commande est tout aussi importante pour quiconque travaille avec des systèmes Linux.
Pour lister tous les fichiers ouverts, exécutez le lsof
commande.
lsof
L'une des erreurs courantes rencontrées par les développeurs et les ingénieurs DevOps est "Erreur d'échec de la liaison :adresse déjà utilisée “. Vous pouvez trouver l'ID de processus associé à un port à l'aide de la commande suivante. Ensuite, vous pouvez tuer le processus pour libérer le port.
lsof -i :8080
Utilitaires de dépannage réseau tiers
Il existe d'autres utilitaires de ligne de commande de dépannage réseau disponibles à partir de solutions tierces.
Vous devez les installer séparément et les utiliser à des fins de dépannage. Pour des raisons de conformité de sécurité, toutes les organisations ne vous permettront pas de le faire. Cependant, si vous avez la possibilité d'utiliser des outils tiers, vous pouvez les explorer.
Conclusion
Dans cet article, nous avons couvert les utilitaires de ligne de commande Linux importants pour le dépannage et la configuration du réseau.
Si vous débutez avec des rôles d'administration système, DevOps ou SRE, il est essentiel de se familiariser avec ces utilitaires pour prendre en charge les projets sur lesquels vous travaillez.
Chaque utilitaire possède de nombreuses fonctionnalités, et vous pouvez explorer davantage pour répondre à vos besoins.
Si vous pensez que nous avons manqué des commandes importantes, faites-le nous savoir dans la section des commentaires.
De plus, si vous souhaitez apprendre les scripts shell, consultez notre guide sur la façon d'apprendre les scripts shell. Si vous êtes développeurs, consultez mon guide sur les commandes Linux que tout développeur devrait connaître.