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
oul
- contrôle l'état des périphériques réseauaddress
oua
- manipule les adresses IP sur les appareilsroute
our
- gère les entrées de la table de routageneighbor
oun
- 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 Managernetworking
- affiche, active et désactive la mise en réseauradio
- affiche, active et désactive le Wi-Fi et le WWANdevice
- affiche et manipule l'état des périphériques réseauconnection
- 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. ]