GNU/Linux >> Tutoriels Linux >  >> Linux

5 commandes de dépannage du réseau Linux

La configuration et le dépannage du réseau sont des tâches cruciales que les administrateurs système doivent effectuer régulièrement. Certaines de ces tâches peuvent être difficiles. Cependant, en cas de problèmes de connectivité, l'utilisation des bons outils vous aidera à obtenir les résultats de manière plus rapide et cohérente.

La commande ip

L'ip La commande est un utilitaire complet pour afficher et manipuler les objets réseau sur votre système Linux, y compris les adresses IP, les routes et les tables ARP. C'est un outil utile pour configurer le réseau, ainsi que pour résoudre les problèmes de connectivité réseau.

L'ip La commande remplace la fonctionnalité de nombreuses commandes fournies avec l'ancien net-tools package tel que ifconfig , route , et arp , mais il ajoute de nombreuses autres fonctionnalités.

Dans sa forme la plus basique, vous pouvez simplement exécuter ip et fournir un objet réseau à manipuler, tel qu'une adresse, un lien ou un itinéraire, et une sous-commande pour effectuer une action. Si vous ne donnez pas de sous-commande, de nombreux objets par défaut sont show sous-commande pour afficher les informations relatives à cet objet.

Voici la syntaxe de base :

ip <OBJECT> [COMMAND]

Par exemple, pour voir l'état du lien sur tous les périphériques réseau, exécutez ip link show :

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff

Parce que show est la sous-commande par défaut, vous pouvez également obtenir le même résultat en exécutant ip link ou encore ip l (de nombreux objets reconnaissent une abréviation).

L'ip commande gère de nombreux objets. Les principaux sont :

  • link ou l - contrôle l'état des périphériques réseau
  • address ou a - manipule les adresses IP sur les appareils
  • route ou r - gère les entrées de la table de routage
  • neighbor ou n - contrôle les entrées de la table ARP

Vous pouvez voir une liste complète des objets et des commandes en exécutant ip help .

Quelques exemples utiles de la commande ip

Afficher les statistiques du réseau -s au format lisible par l'homme -h pour une interface réseau spécifique :

$ ip -s -h l show dev enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    820M       303k     0       182k    0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    19.9M      60.9k    0       0       0       0    

Afficher les adresses IP de toutes les interfaces :

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.169/24 brd 192.168.122.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::7ecf:5cc8:5c1f:1009/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Afficher l'adresse IP d'une seule interface, par exemple enp1s0 :

$ ip a show dev enp1s0

Ajouter une autre adresse IP à une interface (nécessite sudo ou root utilisateur):

$ sudo ip a change 192.168.122.170 dev enp1s0

Affichez la table de routage :

$ ip route
default via 192.168.122.1 dev enp1s0 proto static metric 100 
192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.169 metric 100

Ajouter une route (passerelle par défaut) :

$ sudo ip route add default via 192.168.122.1 dev enp1s0

L'ip La commande est une interface de niveau inférieur pour configurer les options réseau sur votre système Linux. Bien qu'il soit utile comme outil de dépannage, il peut être plus difficile de configurer le réseau avec. Pour cette raison, de nombreuses distributions fournissent une interface de niveau supérieur pour accomplir la même tâche. Examinons ensuite l'outil de configuration de Network Manager nmcli , qui fournit un moyen intégré de configurer le réseau.

L'outil nmcli

Network Manager est une application de configuration réseau disponible par défaut avec de nombreuses distributions Linux, notamment RHEL et Fedora. Network Manager s'exécute en tant que démon et son objectif est de fournir une interface de niveau supérieur pour faciliter et automatiser la configuration du réseau.

Il est courant pour les utilisateurs de Linux de bureau ou de serveurs dotés d'une interface graphique d'utiliser les clients GUI de Network Manager pour configurer le réseau. Pour les cas où vous travaillez avec des serveurs sans tête ou si vous souhaitez automatiser la configuration via des scripts shell, le nmcli outil est pratique.

Gestionnaire de réseau et nmcli sont une combinaison polyvalente qui vous permet de vérifier et de configurer de nombreuses options de réseau. La syntaxe de base pour nmcli est :

nmcli <OBJECT> [COMMAND] [ARGUMENTS]

Les objets les plus courants sont :

  • general - affiche l'état et les autorisations de Network Manager
  • networking - affiche, active et désactive la mise en réseau
  • radio - affiche, active et désactive le Wi-Fi et le WWAN
  • device - affiche et manipule l'état des périphériques réseau
  • connection - gère les profils de connexion Network Manager

Il est impossible de couvrir toutes les options sur un seul article de blog. Voyons quelques exemples d'utilisation de nmcli pour les tâches de configuration réseau courantes. Pour plus d'exemples, consultez la page officielle nmcli-examples ou les pages de manuel avec man nmcli-examples .

Vérifiez l'état des périphériques réseau :

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION 
enp1s0  ethernet  connected  enp1s0
enp7s0  ethernet  disconnected  --
lo      loopback  unmanaged  -- 

Afficher tous les profils de connexion :

$ nmcli con show 
NAME    UUID                                  TYPE      DEVICE 
enp1s0  1bb35a4a-ad02-4cad-978a-4a97ea9527cb  ethernet  enp1s0

Afficher les détails d'une connexion spécifique (par exemple, enp1s0 ):

$ nmcli connection show enp1s0 

Récupérer des paramètres spécifiques d'une connexion (par exemple, adresse IP et DNS) :

$ nmcli -g ip4.address,ip4.dns connection show enp1s0
192.168.122.169/24
192.168.122.1

Modifier les paramètres de connexion, par exemple passer de DHCP à une connexion manuelle :

$ sudo nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1

Redémarrez la connexion pour activer de nouvelles options :

$ sudo nmcli con down enp1s0
$ sudo nmcli con up enp1s0

Ajouter un nouveau profil de connexion :

$ sudo nmcli connection add con-name enp7s0 ifname enp7s0 type ethernet ip4 192.168.64.88/24 

nmcli permet également de modifier un profil de connexion de manière interactive. Cette interface fournit de l'aide et une auto-complétion via l'onglet clé, qui vous guide à travers les nombreuses options disponibles. Activez l'éditeur en utilisant nmcli connection edit CONNECTION-NAME :

$ sudo nmcli connection edit enp7s0 

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'enp7s0'

Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy.


Dans l'éditeur, vous pouvez définir des paramètres spécifiques avec le set commande. Utilisez l'onglet clé de saisie semi-automatique pour voir toutes les options disponibles :

nmcli> set ipv4.<PRESS TAB>
addresses            dhcp-hostname        dhcp-timeout         dns-search           may-fail             routes
dad-timeout          dhcp-hostname-flags  dns                  gateway              method               route-table
dhcp-client-id       dhcp-iaid            dns-options          ignore-auto-dns      never-default        routing-rules
dhcp-fqdn            dhcp-send-hostname   dns-priority         ignore-auto-routes   route-metric         
nmcli> set ipv4.addresses 192.168.64.90/24

Ensuite, vous pouvez print les valeurs actuelles :

nmcli> print ipv4.addresses 
ipv4.addresses: 192.168.64.88/24, 192.168.64.90/24

Lorsque vous avez terminé vos modifications, save à la connexion et quit pour terminer l'opération :

nmcli> save
Connection 'enp7s0' (94170029-5620-4f90-ad78-704b21480b1a) successfully updated.
nmcli> quit

Enfin, redémarrez la connexion pour que les modifications soient effectives.

Gestionnaire de réseau et nmcli sont une solution complète pour la configuration du réseau. Si vous ne l'avez jamais utilisé auparavant, commencez par certaines des commandes de base et passez progressivement à des paramètres plus complexes. Consultez les pages de manuel et les exemples pour exécuter des tâches spécifiques.

Passons maintenant en revue certaines commandes qui vous aident à résoudre les problèmes de réseau, en commençant par la résolution de noms.

La commande nslookup

Lors de la gestion des problèmes de connectivité, la résolution de noms DNS est souvent une source de maux de tête. Le nslookup L'utilitaire vous aide à vérifier et à dépanner la résolution de noms DNS.

Cette commande est disponible avec le bind-utils package sur les systèmes RHEL8 et Fedora. Installez-le avec dnf :

$ sudo dnf install -y bind-utils

Pour vérifier rapidement la résolution du nom d'un hôte particulier, utilisez nslookup avec le nom d'hôte comme argument. La commande utilise la configuration DNS par défaut pour la résolution de nom :

$ nslookup redhat.com
Server:        192.168.122.1
Address:    192.168.122.1#53

Non-authoritative answer:
Name:    redhat.com
Address: 209.132.183.105

Si la résolution de nom échoue, vous pouvez utiliser un autre serveur de noms pour la résolution en fournissant son adresse comme troisième argument :

$ nslookup redhat.com 192.168.0.9
Server:        192.168.0.9
Address:    192.168.0.9#53

Non-authoritative answer:
Name:    redhat.com
Address: 209.132.183.105

Ces informations sont utiles pour le dépannage car elles permettent d'identifier si le problème est local en raison d'un serveur spécifique ou de quelque chose de plus étendu.

Vous pouvez également l'utiliser pour exécuter des requêtes DNS inversées en fournissant l'adresse IP au lieu d'un nom d'hôte :

$ nslookup 209.132.183.105
105.183.132.209.in-addr.arpa    name = redirect.redhat.com.

Le nslookup est un outil utile pour aider à résoudre les problèmes de réseau liés à la résolution de noms DNS. Examinons ensuite le dépannage des sockets du réseau local.

L'utilitaire ss

Une autre tâche courante lors du dépannage des problèmes de connectivité réseau consiste à déterminer si une connexion est établie ou si un service particulier est disponible sur un serveur.

Le ss commande, abréviation de statistiques de socket , est un outil pratique qui affiche des informations sur les sockets réseau. C'est le remplacement moderne de netstat qui fournit des fonctionnalités similaires, mais inclut quelques fonctionnalités supplémentaires.

Utilisez ss sans options pour voir la liste complète de tous les sockets réseau établis pour les types de socket TCP, UDP et UNIX.

$ ss
Netid    State     Recv-Q    Send-Q                                               Local Address:Port              Peer Address:Port
u_str    ESTAB     0         0                                                                * 25812                        * 25811
u_str    ESTAB     0         0                                      /run/systemd/journal/stdout 23604                        * 23603
... TRUNCATED OUTPUT
u_str    ESTAB     0         0                                                                * 22566                        * 22171
icmp6    UNCONN    0         0                                                                *:ipv6-icmp                    *:*   
icmp6    UNCONN    0         0                                                                *:ipv6-icmp                    *:*   
tcp      ESTAB     0         0                                                  192.168.122.169:ssh              192.168.122.1:45626

Étant donné que la commande par défaut affiche toutes les connexions réseau établies, cette liste peut être longue sur une machine occupée, avec plus d'un millier d'entrées. Pour vous aider à résoudre les problèmes, ss offre plusieurs options de filtrage.

Vous pouvez afficher les informations de socket pour des types de socket spécifiques avec les paramètres de ligne de commande suivants :-t pour TCP, -u pour UDP, et -x pour UNIX.

Par exemple, affichez les informations du socket TCP avec ss -t :

$ ss -t
State           Recv-Q            Send-Q                         Local Address:Port                        Peer Address:Port
ESTAB           0                 0                            192.168.122.169:ssh                        192.168.122.1:45626

Vous pouvez également filtrer la liste par nom d'hôte ou adresse IP source ou de destination. Par exemple, voici une liste des connexions établies pour l'adresse IP de destination 192.168.122.1 :

$ ss dst 192.168.122.1
Netid         State         Recv-Q          Send-Q                     Local Address:Port                    Peer Address:Port
tcp           ESTAB         0               0                        192.168.122.169:ssh                    192.168.122.1:45626

Ces commandes sont utiles pour dépanner la connectivité réseau en général ou entre des hôtes spécifiques du réseau. Une autre application pratique pour ss est de vérifier si les services réseau écoutent sur la machine locale avec l'adresse et le port corrects. Pour vérifier les sockets d'écoute, utilisez l'option -l :

$ ss -l
Netid   State    Recv-Q   Send-Q                           Local Address:Port                     Peer Address:Port
nl      UNCONN   0        0                                         rtnl:NetworkManager/909                   *
nl      UNCONN   0        0                                         rtnl:systemd-resolve/1122                 *
... TRUNCATED OUTPUT
udp     UNCONN   0        0                                      0.0.0.0:hostmon                       0.0.0.0:*
udp     UNCONN   0        0                                127.0.0.53%lo:domain                        0.0.0.0:
udp     UNCONN   0        0                                    127.0.0.1:323                           0.0.0.0:*
udp     UNCONN   0        0                                         [::]:hostmon                          [::]:*
udp     UNCONN   0        0                                        [::1]:323                              [::]:*
tcp     LISTEN   0        128                                    0.0.0.0:ssh                           0.0.0.0:*
tcp     LISTEN   0        128                                    0.0.0.0:hostmon                       0.0.0.0:*
tcp     LISTEN   0        128                                       [::]:ssh                              [::]:
tcp     LISTEN   0        128                                       [::]:hostmon                          [::]:*

Vous pouvez utiliser les mêmes options de filtrage décrites ci-dessus pour filtrer des types de socket spécifiques. Par exemple, pour répertorier tous les sockets TCP en écoute, saisissez :

$ ss -lt
State            Recv-Q            Send-Q                       Local Address:Port                          Peer Address:Port
LISTEN           0                 128                                0.0.0.0:ssh                                0.0.0.0:*
LISTEN           0                 128                                0.0.0.0:hostmon                            0.0.0.0:
LISTEN           0                 128                                   [::]:ssh                                   [::]:
LISTEN           0                 128                                   [::]:hostmon                               [::]:

Au lieu d'afficher le nom du service, comme ssh ou hostmon , ss peut afficher les numéros de port en utilisant le -n choix :

$ ss -ltn
State             Recv-Q            Send-Q                       Local Address:Port                        Peer Address:Port
LISTEN            0                 128                                0.0.0.0:22                               0.0.0.0:
LISTEN            0                 128                                0.0.0.0:5355                             0.0.0.0:
LISTEN            0                 128                                   [::]:22                                  [::]:
LISTEN            0                 128                                   [::]:5355                                [::]:

Enfin, une autre option utile est -p pour afficher des informations relatives au processus telles que le nom d'utilisateur et l'ID de processus (PID). Certains services peuvent nécessiter des privilèges élevés via sudo ou en tant que root pour lister les informations de processus :

$ sudo ss -tnlp
State      Recv-Q     Send-Q         Local Address:Port           Peer Address:Port
LISTEN     0          128                  0.0.0.0:22                  0.0.0.0:*         users:(("sshd",pid=919,fd=5))
LISTEN     0          128                  0.0.0.0:5355                0.0.0.0:*         users:(("systemd-resolve",pid=1122,fd=13))
LISTEN     0          128                     [::]:22                     [::]:*         users:(("sshd",pid=919,fd=7))
LISTEN     0          128                     [::]:5355                   [::]:*         users:(("systemd-resolve",pid=1122,fd=15))

Le ss tool est une commande essentielle de la boîte à outils sysadmin pour les tâches de dépannage du réseau. Ensuite, regardons tracepath pour tracer la connectivité réseau entre les hôtes.

La commande tracepath

Le tracepath La commande est un outil de dépannage réseau qui affiche le chemin de connectivité réseau entre l'hôte local et un hôte distant, identifiant tous les routeurs utilisés pour acheminer le trafic entre eux.

Si vous ne parvenez pas à vous connecter à un service réseau sur un hôte distant, tracepath vous aide à déterminer où se situe le problème.

tracepath remplace traceroute , offrant des fonctionnalités similaires. La principale différence est que tracepath utilise des ports UDP aléatoires au lieu du protocole ICMP pour la trace, ne nécessitant donc pas de privilèges élevés pour s'exécuter.

Pour l'utilisation de base, indiquez le nom d'hôte ou l'adresse IP de l'hôte de destination. Vous pouvez également fournir l'option -n pour afficher les adresses IP des routeurs à la place de leurs noms :

$ tracepath -n sat65server
 1?: [LOCALHOST]                      pmtu 1500
 1:  192.168.122.1                                         0.415ms 
 1:  192.168.122.1                                         0.299ms 
 2:  192.168.10.10                                         0.904ms 
 3:  192.168.88.1                                          1.127ms 
 4:  192.168.0.95                                          2.020ms
     Resume: pmtu 1500 

Si tracepath ne peut pas se connecter à un saut de réseau, il affiche pas de réponse . Par défaut, le nombre maximum de sauts qu'il essaie est de 30, ce qui est généralement suffisant. Vous pouvez changer cela avec l'option -m .

Supposons qu'il ne reçoive aucune réponse après un saut particulier. C'est un bon indicateur de la prochaine étape de votre tâche de dépannage. tracepath l'information n'est pas définitive, car le trafic pourrait être bloqué pour plusieurs raisons. Cependant, cela vous aide à affiner le problème et à vous concentrer sur les efforts de résolution.

Pour des raisons de sécurité, de nombreux routeurs sur Internet bloquent le trafic, donc tracepath peut ne pas être aussi utile pour tracer la connectivité avec les services Internet. Il est toujours utile pour le dépannage du réseau local.

Quelle est la prochaine ?

Dans cet article, nous avons exploré cinq outils de configuration et de dépannage réseau essentiels pour les systèmes Linux. Ces outils sont puissants et offrent de nombreuses options difficiles à couvrir dans un seul message. Nous vous encourageons à les consulter et à consulter la documentation et les pages de manuel pour voir comment vous pouvez les intégrer à votre flux de travail.

Il existe d'autres outils réseau Linux utiles, tels que tcpdump , nmap , et firewall-cmd . Ces outils sont couverts dans d'autres articles Enable Sysadmin.

[ Réseau difficile à gérer ? Consultez Network Automation for Everyone, un livre gratuit de Red Hat. ]


Linux
  1. 5 raisons d'utiliser Linux en 2020

  2. Commandes de recherche Linux

  3. Commande d'écho Linux

  4. Service de système d'exploitation Linux "réseau"

  5. Dépannage des communications réseau lentes ou des délais d'attente de connexion sous Linux

Un guide du débutant pour le dépannage du réseau sous Linux

Mes commandes de dépannage du réseau Linux

40 commandes réseau Linux utiles pour les administrateurs système modernes

Les 50 commandes IP Linux utiles pour les administrateurs réseau

Commande Linux nload

Commandes Nmap - 17 commandes de base pour le réseau Linux