Examiner les paramètres d'interface réseau avec ethtool sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à utiliser l'utilitaire en ligne de commande ethtool pour examiner et gérer les paramètres de l'interface réseau dans un environnement Linux. Vous commencerez par installer l'outil et identifier votre interface réseau principale. Ensuite, vous pratiquerez la visualisation de la vitesse actuelle de l'interface et du mode duplex, la configuration manuelle de ces paramètres sur une configuration spécifique comme 10 Mbps half-duplex, puis la restauration de l'interface à son état de négociation automatique par défaut.

En accomplissant ces étapes, vous acquerrez des compétences pratiques pour diagnostiquer les problèmes de réseau de la couche physique. Le laboratoire se termine en vous apprenant à analyser les modes de liaison pris en charge par votre carte réseau, ce qui est essentiel pour résoudre les problèmes de performance potentiels causés par des incompatibilités de vitesse ou de duplex entre les périphériques réseau.

Installer ethtool et identifier votre interface réseau

Dans cette étape, vous commencerez par installer ethtool, un utilitaire en ligne de commande crucial pour examiner et modifier les paramètres du contrôleur d'interface réseau. Après vous être assuré que l'outil est disponible, vous apprendrez à identifier le nom de l'interface réseau principale de votre système, ce qui est une condition préalable à toute analyse réseau ultérieure.

Tout d'abord, mettons à jour la liste des paquets et installons ethtool. Il est conseillé d'exécuter apt update avant d'installer de nouveaux paquets afin de vous assurer que vous obtenez les dernières versions disponibles à partir des dépôts.

Ouvrez un terminal, qui devrait déjà être ouvert dans votre répertoire ~/project. Exécutez les commandes suivantes :

sudo apt update
sudo apt install ethtool -y

Le drapeau -y répond automatiquement "oui" à l'invite d'installation, rendant le processus non interactif. Vous devriez voir une sortie indiquant que les listes de paquets sont lues et que ethtool est en cours d'installation.

Maintenant que ethtool est installé, vous devez déterminer quelle interface réseau vous souhaitez examiner. Un système peut avoir plusieurs interfaces, telles qu'une interface de bouclage (lo), une interface Ethernet filaire (eth0 ou enp0s3), et d'autres. La commande ip est la norme moderne pour afficher et manipuler les périphériques réseau, les adresses et les routes.

Pour lister toutes les interfaces réseau et leurs configurations, utilisez la commande ip a (un raccourci pour ip addr) :

ip a

Vous verrez une liste de toutes les interfaces réseau. Recherchez une interface qui n'est pas lo (l'interface de bouclage) et qui a un état UP. C'est généralement votre connexion réseau principale. Le nom est généralement eth0 ou un nom commençant par enp.

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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:01:b1:ae brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.232/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
       valid_lft 1892159922sec preferred_lft 1892159922sec
    inet6 fe80::216:3eff:fe01:b1ae/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:da:5e:55:d4 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

D'après l'exemple de sortie ci-dessus, le nom de l'interface réseau principale est eth0. Vous pouvez également voir d'autres interfaces comme docker0, mais pour ce laboratoire, nous nous concentrerons sur eth0. Notez le nom de votre interface, car vous en aurez besoin dans les étapes suivantes. Vous avez maintenant installé avec succès l'outil nécessaire et identifié votre interface réseau cible.

Afficher la vitesse et le duplex actuels de l'interface avec ethtool

Dans cette étape, vous utiliserez l'utilitaire ethtool que vous venez d'installer pour inspecter l'état opérationnel actuel de votre interface réseau. Plus précisément, vous vous concentrerez sur deux paramètres critiques : la vitesse (Speed) et le duplex.

Les cartes réseau (NIC) fonctionnent à des vitesses spécifiques (par exemple, 10 Mbps, 100 Mbps, 1000 Mbps) et dans l'un des deux modes duplex :

  • Half-duplex : L'interface ne peut envoyer ou recevoir des données qu'à un moment donné, mais pas les deux simultanément.
  • Full-duplex : L'interface peut envoyer et recevoir des données en même temps, ce qui améliore considérablement le débit.

Les réseaux modernes utilisent presque toujours un processus appelé auto-négociation (auto-negotiation), où la carte réseau et le périphérique réseau connecté (comme un commutateur) communiquent automatiquement pour déterminer la vitesse et le mode duplex les plus élevés que les deux prennent en charge.

Maintenant, visualisons ces paramètres pour l'interface réseau que vous avez identifiée à l'étape précédente (nous utiliserons eth0 comme exemple). Dans votre terminal, exécutez la commande suivante. N'oubliez pas de remplacer eth0 par le nom réel de votre interface si celui-ci est différent.

ethtool eth0

Après avoir appuyé sur Entrée, vous verrez des informations détaillées sur l'interface. Dans certains environnements virtuels, vous pourriez voir de nombreuses valeurs "Not reported" ou "Unknown", ce qui indique que l'interface réseau virtuelle a des fonctionnalités limitées. C'est normal pour cet environnement de laboratoire.

Settings for eth0:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
netlink error: Operation not permitted
        Link detected: yes

Observez attentivement la sortie. Les lignes clés pour cette étape sont :

  • Speed: Unknown!: La vitesse actuelle n'est pas rapportée par le pilote.
  • Duplex: Unknown! (255): Le mode duplex n'est pas non plus rapporté.
  • Auto-negotiation: off: Ceci est important. Cela montre que l'interface n'est pas configurée pour la négociation automatique, c'est pourquoi nous pourrons définir manuellement la vitesse et le duplex à l'étape suivante.
  • netlink error: Operation not permitted: Cette erreur est courante dans les environnements conteneurisés ou virtuels avec des permissions restreintes. Elle ne nous empêchera pas de terminer le laboratoire.

La ligne Link detected: yes confirme qu'une connexion physique au réseau est active. Ces paramètres sont fondamentaux pour le fonctionnement de la couche physique (Couche 1).

Définir manuellement la vitesse de l'interface sur 10 Mbps en semi-duplex

Dans cette étape, vous apprendrez à outrepasser manuellement les paramètres de négociation automatique. Bien que la négociation automatique soit la norme pour les réseaux modernes, il existe des situations rares, comme la connexion à du matériel hérité plus ancien ou le dépannage de problèmes de liaison spécifiques, où vous pourriez avoir besoin de forcer une vitesse et un mode duplex particuliers.

Note importante : Le réglage manuel de ces paramètres peut entraîner des problèmes de connectivité réseau s'il n'est pas effectué correctement. Forcer un paramètre qui ne correspond pas à l'appareil à l'autre extrémité du câble (par exemple, un port de commutateur) peut entraîner un désalignement duplex (duplex mismatch), qui dégrade sévèrement les performances réseau, ou peut entraîner l'échec complet de la liaison. Dans cet environnement virtuel, le changement devrait être sans danger à tenter.

Pour modifier les paramètres, vous utiliserez la commande ethtool avec le drapeau -s, qui signifie "settings" (paramètres). Cette opération nécessite des privilèges d'administrateur, vous devez donc utiliser sudo.

Tentons de régler la vitesse de l'interface à 10 Mbps et le mode duplex à half. N'oubliez pas de remplacer eth0 par le nom de votre interface si celui-ci est différent.

sudo ethtool -s eth0 speed 10 duplex half

Cette commande ne produit aucune sortie en cas de succès. Pour confirmer si la modification a été appliquée, vous devez réinspecter les paramètres de l'interface en utilisant la commande de l'étape précédente :

ethtool eth0

Maintenant, examinez la sortie. Recherchez les lignes Speed et Duplex. Même avec les erreurs initiales, vous verrez que la commande de réglage de la vitesse et du duplex a réussi.

Settings for eth0:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 10Mb/s
        Duplex: Half
        Auto-negotiation: off
        Port: Other
        PHYAD: 0
        Transceiver: internal
netlink error: Operation not permitted
        Link detected: yes

Vous devriez maintenant voir Speed: 10Mb/s et Duplex: Half. Notez également que Auto-negotiation est toujours off, ce qui est attendu puisque vous avez réglé manuellement les paramètres. Cela confirme que vous pouvez modifier avec succès les paramètres de l'interface réseau.

Afficher et modifier les fonctionnalités de déchargement avec ethtool -k

Dans cette étape, vous apprendrez à inspecter et à modifier les fonctionnalités d'offload réseau. Il s'agit de capacités avancées de la carte réseau (NIC) qui permettent au matériel d'effectuer des tâches qui seraient autrement gérées par le CPU, telles que le calcul de sommes de contrôle (checksums) ou la segmentation des données. L'offload de ces tâches peut améliorer les performances réseau.

Tout d'abord, visualisons les paramètres d'offload actuels de votre interface en utilisant le drapeau -k (ou --show-features).

ethtool -k eth0

Vous verrez une liste de fonctionnalités, dont certaines sont on (activées) et d'autres off (désactivées). Un statut [fixed] signifie que le paramètre ne peut pas être modifié par l'utilisateur.

Features for eth0:
rx-checksumming: on [fixed]
tx-checksumming: on
        tx-checksum-ipv4: off [fixed]
        tx-checksum-ip-generic: on
        tx-checksum-ipv6: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: on
        tx-scatter-gather: on
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
        tx-tcp-segmentation: on
        tx-tcp-ecn-segmentation: on
        tx-tcp-mangleid-segmentation: off
        tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
... (la sortie est longue et peut varier)

Maintenant, pratiquons la modification de l'un de ces paramètres. Nous allons désactiver temporairement le checksumming TX. Cette opération nécessite des privilèges d'administrateur, vous devez donc utiliser sudo et le drapeau -K (ou --features).

sudo ethtool -K eth0 tx-checksumming off

La commande rapporte maintenant les modifications qu'elle a apportées. Notez que la désactivation de tx-checksumming a automatiquement désactivé d'autres fonctionnalités connexes. C'est parce que certaines fonctionnalités dépendent d'autres.

Actual changes:
tx-checksum-ip-generic: off
tx-tcp-segmentation: off [not requested]
tx-tcp-ecn-segmentation: off [not requested]
tx-tcp6-segmentation: off [not requested]

Pour vérifier la modification dans la liste complète, vous pouvez exécuter à nouveau ethtool -k eth0.

Maintenant, réactivons-la pour restaurer le comportement par défaut qui améliore les performances.

sudo ethtool -K eth0 tx-checksumming on

Encore une fois, la sortie montre les modifications réelles. Vous pourriez constater que même si vous avez demandé une fonctionnalité on, elle reste off si le matériel l'a définie comme fixe. Elle montre également que les fonctionnalités connexes sont réactivées automatiquement.

Actual changes:
tx-checksum-ipv4: off [requested on]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [requested on]
tx-tcp-segmentation: on [not requested]
tx-tcp-ecn-segmentation: on [not requested]
tx-tcp6-segmentation: on [not requested]
tx-checksum-fcoe-crc: off [requested on]
tx-checksum-sctp: off [requested on]

En terminant cette étape, vous avez appris à examiner et à modifier les fonctionnalités d'offload matériel de votre carte réseau et vous avez vu comment les dépendances des fonctionnalités et les limitations matérielles affectent le résultat.

Examiner les statistiques d'interface avec ethtool -S

Dans cette dernière étape, vous apprendrez à visualiser les statistiques détaillées de votre interface réseau. C'est l'une des utilisations les plus courantes d'ethtool pour le dépannage réseau quotidien. L'outil fournit une richesse d'informations, y compris le nombre de paquets envoyés et reçus, les décomptes d'octets et, peut-être le plus important, les décomptes d'erreurs.

Pour visualiser ces statistiques, utilisez le drapeau -S (ou --statistics). N'oubliez pas de remplacer eth0 par le nom de votre interface.

ethtool -S eth0

La sortie sera une longue liste de compteurs. Dans cet environnement, la carte réseau (NIC) utilise plusieurs files d'attente (queues), donc les statistiques sont rapportées par file d'attente. Concentrons-nous sur les compteurs de paquets rx_queue_ et tx_queue_.

NIC statistics:
     rx_queue_0_packets: 63768
     rx_queue_0_bytes: 93307801
     ...
     rx_queue_1_packets: 77180
     rx_queue_1_bytes: 111222183
     ...
     tx_queue_0_packets: 14363
     tx_queue_0_bytes: 4229599
     ...
     tx_queue_1_packets: 5287
     tx_queue_1_bytes: 1262219
     ... (de nombreuses autres statistiques)

Note : Vos chiffres seront différents, car ils reflètent tout le trafic depuis que l'interface a été activée.

Maintenant, générons du trafic réseau pour voir ces compteurs changer. Nous utiliserons la commande ping pour envoyer quelques paquets à l'adresse de bouclage (127.0.0.1), qui est la machine locale elle-même. Le drapeau -c 4 indique à ping d'envoyer exactement 4 paquets.

ping -c 4 127.0.0.1

Vous verrez une sortie montrant les 4 paquets envoyés et reçus.

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.039 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.037 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3052ms
rtt min/avg/max/mdev = 0.037/0.038/0.040/0.001 ms

Maintenant que vous avez généré du trafic, vérifions à nouveau les statistiques :

ethtool -S eth0

Examinez à nouveau les valeurs rx_queue_*_packets et tx_queue_*_packets.

NIC statistics:
     rx_queue_0_packets: 63879
     ...
     rx_queue_1_packets: 77227
     ...
     tx_queue_0_packets: 14460
     ...
     tx_queue_1_packets: 5328
     ... (de nombreuses autres statistiques)

Vous devriez constater que le nombre total de paquets sur les files d'attente de réception et de transmission a augmenté. En raison de l'activité système en arrière-plan, l'augmentation peut être supérieure aux 4 paquets de notre commande ping, mais le changement confirme que l'interface envoie et reçoit des données correctement. C'est une technique fondamentale pour vérifier l'état de la liaison. Si vous dépanniez un problème et constatiez une augmentation des compteurs d'erreurs, ce serait un signe clair de problème.

Résumé

Dans ce laboratoire, vous avez appris à gérer les paramètres de l'interface réseau à l'aide de l'utilitaire ethtool sous Linux. Vous avez commencé par installer le paquet ethtool et identifier le nom de votre interface réseau principale avec la commande ip a. Ensuite, vous avez utilisé ethtool pour examiner les paramètres opérationnels actuels de l'interface, puis pour définir manuellement sa vitesse et son mode duplex.

Le laboratoire vous a ensuite guidé dans l'exploration de fonctionnalités plus avancées. Vous avez appris à visualiser et à modifier les paramètres d'offload matériel (hardware offload), tels que tx-checksumming, à l'aide des drapeaux -k et -K. Enfin, vous avez appris à inspecter les statistiques détaillées de l'interface avec ethtool -S et à générer du trafic avec ping pour observer ces statistiques changer en temps réel, offrant ainsi une méthode pratique pour vérifier l'état de la liaison et dépanner les problèmes de connectivité.