Un transfert plafonné autour de 90 Mbit/s sur une carte Gigabit ne vient pas forcément du serveur, de Samba ou du pare-feu. Le lien Ethernet peut simplement avoir négocié à 100 Mbit/s. Un câble défectueux, un port de switch limité ou un duplex incohérent suffit à brider toute la connexion.
ethtool lit les paramètres exposés par le pilote réseau : vitesse, duplex, auto-négociation, présence du lien et compteurs matériels. Je commence par ces informations avant de modifier la configuration IP ou de lancer un test de débit. La plupart des contrôles ci-dessous sont en lecture seule.

Identifier l’interface Ethernet réellement utilisée
Ne partez pas du principe que l’interface s’appelle eth0. Une machine récente utilise souvent un nom comme enp1s0, eno1 ou ens18. Commencez par afficher les interfaces et la route employée pour sortir :
ip -brief link
ip route get 1.1.1.1
La seconde commande indique notamment dev et src. Dans cet exemple, dev enp1s0 désigne l’interface à contrôler avec ethtool. Le tutoriel sur ip addr sous Linux détaille les états UP, LOWER_UP et les adresses associées.
Écartez les interfaces de boucle, les ponts Docker, les tunnels VPN et les interfaces virtuelles si votre panne concerne un câble physique. Dans une machine virtuelle, ethtool décrit parfois seulement la carte virtuelle. La négociation réelle se vérifie alors sur l’hôte ou sur le switch.
Installer ethtool sans toucher au réseau
Le paquet porte généralement le même nom que la commande. Son installation ne change pas les réglages de la carte :
sudo apt update
sudo apt install ethtool
sudo dnf install ethtool
sudo pacman -S ethtool
Vérifiez ensuite la version et l’aide disponible sur votre distribution :
ethtool --version
ethtool --help
ethtool dépend du pilote et du matériel. Une option présente dans l’aide peut rester indisponible sur une carte virtuelle, un adaptateur USB ou un pilote qui n’expose pas la fonction.
Lire vitesse, duplex, auto-négociation et état du lien
Lancez la commande sur l’interface identifiée. Les droits élevés permettent d’obtenir toutes les informations proposées par le pilote :
sudo ethtool enp1s0
Pour un premier diagnostic, concentrez-vous sur quatre lignes :
- Speed : vitesse négociée actuellement, par exemple
1000Mb/s. - Duplex :
Fullest la valeur attendue sur un lien Ethernet moderne. - Auto-negotiation : indique si la carte négocie les capacités avec le port distant.
- Link detected : confirme la présence de la porteuse physique.
Vous pouvez extraire ces lignes pour une lecture rapide :
sudo ethtool enp1s0 | grep -E 'Speed|Duplex|Auto-negotiation|Link detected'
Regardez aussi Supported link modes, Advertised link modes et Link partner advertised link modes. La carte, sa configuration et le port distant doivent partager au moins un mode. Si la carte annonce le Gigabit mais que le partenaire ne propose que 100 Mbit/s, le débit négocié restera à 100 Mbit/s.
Que vérifier quand Link detected affiche no ?
Link detected: no place le problème avant l’adresse IP, le DNS et les ports TCP. Contrôlez d’abord l’état vu par le noyau et la porteuse :
ip link show dev enp1s0
cat /sys/class/net/enp1s0/operstate
cat /sys/class/net/enp1s0/carrier
Une valeur 0 dans carrier signifie que le noyau ne voit pas de lien physique. Testez un autre câble connu comme fonctionnel, puis un autre port du switch. Vérifiez également que le port n’est pas désactivé administrativement et que l’adaptateur USB ou la carte réseau est correctement alimenté.
Sur une machine avec plusieurs prises identiques, l’option d’identification peut faire clignoter la LED du port pendant dix secondes si le pilote la prend en charge :
sudo ethtool -p enp1s0 10
Consultez enfin les messages du noyau liés à l’interface. Ils peuvent signaler une perte de lien répétée, un firmware absent ou une réinitialisation du pilote :
sudo dmesg -T | grep -Ei 'enp1s0|link|firmware|timeout'
sudo journalctl -k -b | grep -Ei 'enp1s0|link|firmware|timeout'
Le guide sur dmesg et les messages du noyau aide à replacer ces erreurs dans l’ordre du démarrage.
Comprendre un lien bloqué à 100 Mbit/s ou en half duplex
Une carte Gigabit négociée à 100Mb/s mérite un contrôle physique avant toute optimisation logicielle. Le Gigabit utilise les quatre paires du câble. Une paire endommagée ou mal sertie peut laisser fonctionner le lien, mais seulement à 100 Mbit/s. Un port de switch Fast Ethernet produit le même résultat.
Un duplex Half sur un réseau moderne est également suspect. Comparez la configuration des deux extrémités. Une extrémité forcée et l’autre laissée en auto-négociation peut provoquer des erreurs, des retransmissions et un débit irrégulier.
Identifiez le pilote, puis croisez les compteurs de l’interface avec les statistiques matérielles :
sudo ethtool -i enp1s0
ip -s link show dev enp1s0
sudo ethtool -S enp1s0 | grep -Ei 'err|drop|crc|miss|fault|timeout'
Les noms renvoyés par ethtool -S changent selon le pilote. Une hausse continue des erreurs CRC pendant un transfert oriente vers le câble, le connecteur, le module ou le port. Un compteur isolé qui ne bouge plus ne prouve pas une panne actuelle : relevez-le, générez du trafic, puis comparez à nouveau.
Ne pas forcer la vitesse pendant une session SSH
La forme ethtool -s modifie les paramètres du lien. Une renégociation peut couper immédiatement votre session SSH. Ne l’utilisez à distance que si vous disposez d’une console KVM, IPMI ou d’un autre accès de secours.
Si vous avez confirmé que l’auto-négociation a été désactivée par erreur, cette commande la réactive sur l’interface :
sudo ethtool -s enp1s0 autoneg on
La commande suivante demande une nouvelle négociation et peut elle aussi interrompre le lien :
sudo ethtool -r enp1s0
Ne forcez pas aveuglément speed 1000, duplex full et autoneg off. Le port distant doit être configuré de manière compatible et certains standards exigent l’auto-négociation. Notez la sortie initiale, modifiez un seul paramètre, puis vérifiez le lien depuis la console.
Un réglage appliqué avec ethtool -s peut disparaître après un redémarrage ou une réinitialisation de l’interface. La persistance dépend de NetworkManager, de systemd-networkd ou de la configuration de la distribution. Ne rendez le changement permanent qu’après avoir identifié la cause et validé le test. Sur Ubuntu, l’article consacré à Netplan explique comment préparer un retour arrière avant de toucher au réseau.
Tester le débit seulement quand le lien est propre
ethtool affiche la vitesse du lien, pas le débit utile d’une application. Une négociation à 1 Gbit/s en full duplex ne garantit pas que Samba, NFS ou un téléchargement atteindra cette valeur. Elle permet simplement d’écarter une limitation physique évidente.
Après correction, vérifiez que les compteurs d’erreurs restent stables et que la route utilise toujours la bonne interface :
sudo ethtool enp1s0
ip -s link show dev enp1s0
ip route get 1.1.1.1
Vous pouvez ensuite mesurer le réseau local avec iperf3 entre deux machines que vous contrôlez. Lancez le serveur sur une machine, puis le client sur l’autre :
iperf3 -s
iperf3 -c 192.0.2.50
Si le lien est stable, négocié à la vitesse attendue et sans hausse d’erreurs, passez alors à la route, au pare-feu, au stockage et au service applicatif. Pour vérifier ce qui écoute réellement sur la machine, utilisez le guide sur ss et les ports ouverts sous Linux.
La page de manuel ethtool détaille toutes les options. Le site officiel du projet rappelle toutefois que leur prise en charge dépend toujours du pilote et du matériel.