La utilidad ethtool se utiliza para ver y cambiar los parámetros del dispositivo Ethernet.
En este post veremos 9 ejemplos prácticos del uso de este comando
Ejemplos de uso del comando ethtool
1. Listar las propiedades del dispositivo Ethernet
Cuando ejecutas el comando ethtool con un nombre de dispositivo, muestra la siguiente información sobre el dispositivo Ethernet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: d Wake-on: d Link detected: yes |
Esta salida de ethtool que observas arriba muestra las propiedades de la tarjeta Ethernet, como velocidad, activación, dúplex y el estado de detección del enlace. Los siguientes son los tres tipos de dúplex disponibles.
- Full Duplex: permite enviar y recibir paquetes al mismo tiempo. Este modo se utiliza cuando el dispositivo Ethernet está conectado a un conmutador.
- Half duplex: permite enviar o recibir paquetes en un solo punto de tiempo. Este modo se utiliza cuando el dispositivo Ethernet está conectado a un switch.
- Auto-negotiation: si está habilitado, el propio dispositivo Ethernet decide si usar ya sea full dúplex o half dúplex en función de la red a la que está conectado el dispositivo Ethernet.
2. Cambiar el parámetro NIC usando la opción ethtool -s autoneg
La salida ethtool eth0 anterior muestra que el parámetro “Auto-negotiation” está en estado habilitado. Puedes deshabilitar esto usando la opción autoneg en ethtool como se muestra a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# ifdown eth0 eth0 device: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) eth0 configuration: eth-bus-pci-0000:0b:00.0 # ethtool -s eth0 autoneg off # ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: Not reported Advertised auto-negotiation: No Speed: Unknown! (65535) Duplex: Unknown! (255) Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: off Supports Wake-on: g Wake-on: g Link detected: no # ifup eth0 |
Después del cambio anterior, podrías ver que el valor de “detección de enlace” cambió a inactivo y la auto-negotiation está en estado desactivado.
3. Cambiar la velocidad del dispositivo Ethernet
Usando ethtool puedes cambiar la velocidad del dispositivo Ethernet para que funcione con ciertos dispositivos de red, y el nuevo valor de velocidad asignado debe estar dentro de la capacidad limitada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# ethtool -s eth0 speed 100 autoneg off # ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: Not reported Advertised auto-negotiation: No Speed: Unknown! (65535) Duplex: Unknown! (255) Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: off Supports Wake-on: g Wake-on: g Link detected: no |
Una vez que cambias la velocidad cuando el adaptador está en línea, se desconecta automáticamente y debes volver a conectarlo con el comando ifup.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# ifup eth0 eth0 device: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) eth0 configuration: eth-bus-pci-0000:0b:00.0 Checking for network time protocol daemon (NTPD): running # ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 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: g Link detected: yes |
Como se muestra en la salida anterior, la velocidad cambió de 1000Mb/s a 100Mb/s y el parámetro auto-negotiation no está configurado.
4. Mostrar la configuración del controlador Ethernet
La opción ethtool -i muestra la versión del controlador, la versión del firmware y los detalles del bus como se muestra a continuación.
1 2 3 4 5 |
# ethtool -i eth0 driver: bnx2 version: 2.0.1-suse firmware-version: 1.9.3 bus-info: 0000:04:00.0 |
5. Display Auto-negotiation, RX y TX de eth0
Puedes ver los detalles de Auto-negotiation, sobre el dispositivo Ethernet específico como se muestra a continuación.
1 2 3 4 5 |
# ethtool -a eth0 Pause parameters for eth0: Autonegotiate: on RX: on TX: on |
6. Mostrar estadísticas de red de dispositivos Ethernet específicos
Puedes usar la opción ethtool -S para mostrar los bytes transferidos, recibidos, errores, etc., como se observa a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# ethtool -S eth0 NIC statistics: rx_bytes: 74356477841 rx_error_bytes: 0 tx_bytes: 110725861146 tx_error_bytes: 0 rx_ucast_packets: 104169941 rx_mcast_packets: 138831 rx_bcast_packets: 59543904 tx_ucast_packets: 118118510 tx_mcast_packets: 10137453 tx_bcast_packets: 2221841 tx_mac_errors: 0 tx_carrier_errors: 0 rx_crc_errors: 0 rx_align_errors: 0 tx_single_collisions: 0 tx_multi_collisions: 0 tx_deferred: 0 tx_excess_collisions: 0 tx_late_collisions: 0 tx_total_collisions: 0 rx_fragments: 0 rx_jabbers: 0 rx_undersize_packets: 0 rx_oversize_packets: 0 rx_64_byte_packets: 61154057 rx_65_to_127_byte_packets: 55038726 rx_128_to_255_byte_packets: 426962 rx_256_to_511_byte_packets: 3573763 rx_512_to_1023_byte_packets: 893173 rx_1024_to_1522_byte_packets: 42765995 rx_1523_to_9022_byte_packets: 0 tx_64_byte_packets: 3633165 tx_65_to_127_byte_packets: 51169838 tx_128_to_255_byte_packets: 3812067 tx_256_to_511_byte_packets: 113766 tx_512_to_1023_byte_packets: 104081 tx_1024_to_1522_byte_packets: 71644887 tx_1523_to_9022_byte_packets: 0 rx_xon_frames: 0 rx_xoff_frames: 0 tx_xon_frames: 0 tx_xoff_frames: 0 rx_mac_ctrl_frames: 0 rx_filtered_packets: 14596600 rx_discards: 0 rx_fw_discards: 0 |
7. Solucionar problemas de conexión Ethernet
Cuando hay un problema con la conexión de red, es posible que desees verificar (o cambiar) los parámetros del dispositivo Ethernet que se explican en los ejemplos anteriores, cuando veas los siguientes problemas en la salida del comando ethtool.
- La velocidad y el valor dúplex se muestran como Desconocido.
- El valor de detección de enlace se muestra como No.
Tras una conexión exitosa, los tres parámetros mencionados anteriormente obtienen los valores apropiados, es decir, la velocidad se asigna con un valor conocido, Dúplex se convierte en Full/Half, y la detección de Enlace se convierte en Sí.
Después de los cambios anteriores, si la Detección de enlace aún dice “No”, debes verificar si hay algún problema en los cables que se usan desde el interruptor y el sistema, es posible que desees profundizar más en ese aspecto.
Para capturar y analizar paquetes desde una interfaz de red específica, puedes usar la utilidad tcpdump.
8. Identificar un dispositivo específico de varios dispositivos (parpadeo del puerto LED de la tarjeta NIC)
Supongamos que tienes una máquina con cuatro adaptadores Ethernet y deseas identificar el puerto físico de una tarjeta Ethernet particular. (Por ejemplo, eth0).
Debes usar la opción ethtool -p, que hará que el LED correspondiente del puerto físico parpadee.
1 |
# ethtool -p eth0 |
9. Hacer cambios permanentes después de reiniciar
Si has cambiado los parámetros de un dispositivo Ethernet utilizando la herramienta ethtool, todos desaparecerán después del siguiente reinicio, a menos que hagas lo siguiente.
En Ubuntu, debes modificar el archivo /etc/network/interfaces y agregar todos los cambios como se muestra a continuación.
1 2 |
# vim /etc/network/interfaces post-up ethtool -s eth2 speed 1000 duplex full autoneg off |
La línea anterior debe ser la última línea del archivo. Esto cambiará la velocidad, dúplex y autoneg del dispositivo eth2 de forma permanente.
En SUSE, debes modificar el archivo /etc/sysconfig/network/ifcfg-eth-id e incluir un nuevo script utilizando la variable POST_UP_SCRIPT como se muestra a continuación. Debes incluir la línea de abajo como la última línea en el archivo de configuración correspondiente del adaptador eth1.
1 2 |
# vim /etc/sysconfig/network/ifcfg-eth-id POST_UP_SCRIPT='eth1' |
Luego, debes crear un nuevo archivo de scripts /eth1 como se muestra a continuación en el directorio /etc/sysconfig/network. Asegúrate de que el script tenga permiso de ejecución y asegúrate de que la utilidad ethtool esté presente en el directorio /sbin.
1 2 3 4 5 |
# cd /etc/sysconfig/network/ # vim scripts/eth1 #!/bin/bash /sbin/ethtool -s duplex full speed 100 autoneg off |