utilisation de ethtool et de mii-tool sous linux

Mise à jour: 30 decembre 2012
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2012-2013 Jean-Louis BICQUELET

Modifier la vitesse d'une interface réseau sous Linux (Redhat, Debian, Ubuntu, et peut être d'autres distributions)

Sous AIX, je maitrise bien, les changements de vitesses d'une carte réseau. C'est une opération fréquente de forcer un carte réseau en 100 full duplex ou en auto-négociation. J'ai eu à le faire sous linux. Il y a de plus en plus de linux en entreprise.

J'ai trouvé les outils suivants sous linux:

  • mii-tool
  • ethtool

Pour visualiser la configuration actuelle de la carte réseau on peut utiliser ethtool

ethtool eth0
Settings for eth0:
        Supported ports: [ MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised auto-negotiation: No
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x000000ff (255)
        Link detected: yes

ou mii-tool

mii-tool
eth0: 100 Mbit, full duplex, link ok

Pour modifier la vitesse on utilise ethtool comme ceci pour passer en autonégociation

ethtool -s eth0 speed 1000 duplex full autoneg on

Ou comme ceci pour forcer le 100 full duplex:

ethtool -s eth0 speed 100 duplex full autoneg off

On peut vérifier la vitesse:

 ethtool eth0
Settings for eth0:
        Supported ports: [ MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x000000ff (255)
        Link detected: yes

Pour rendre la modification permanente, il faut éditer le fichier /etc/sysconfig/network-scripts/ifcfg-eth0 sous redhat et modifier les paramètres pour supprimer ou ajouter la ligne contenant ETHTOOL_OPTS

# Broadcom Corporation|NetXtreme BCM5703 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0F:20:F8:EF:A0
IPADDR=170.247.2.42
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
ETHTOOL_OPTS="speed 100 duplex full autoneg yes"

Sur un système à base debian (et ubuntu), on edite le fichier /etc/network/interfaces et dans la section correspondant à votre carte réseau et on ajoute la ligne

up ethtool -s $IFACE speed 100 duplex full autoneg off

Les modifications seront prises au prochain reboot ou au prochain /etc/init.d/network rest.