Administrar tarjetas ethernet con el comando ethtool

Administrar tarjetas ethernet con el comando ethtool en linux (redes cableadas).

Ethtool es una sencilla herramienta, que nos permite visualizar y configurar los parámetros del hardware eternet de nuestra máquina.

Este comando, nos proporciona mucha información sobre los dispositivos Ethernet conectados. La configuración de la tarjeta Ethernet, abre un amplio abanico de posibilidades para optimizar la transferencia de datos en una red cableada.

En el artículo de hoy, vemos los ejemplos más comunes de uso de esta útil aplicación. Tanto para identificar, como configurar.

 

Administrar tarjetas ethernet con el comando ethtool

Normalmente, ethtool viene instalado en todas las distribuciones linux. Por si acaso… vemos como instalar ethool.

En CentOS, Fedora y derivados:

sudo yum install -y ethtool
# o
sudo dnf install -y ethtool

En Debian, Ubuntu, Linux Mint y derivados:

sudo apt install ethtool

En Arch Linux, Manjaro y derivados:

sudo pacman -S ethtool

En Suse, OpenSuse y derivados:

sudo zypper install -y ethtool

 

Una vez tengamos instalada la herramienta, debemos identificar nuestro dispositivo ethernet. Según nuestro linux usaremos el comando ip, o el comando ifconfig.

ip a
# o
ifconfig

Veremos algo similar 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 80:34:95:21:b3:6c brd ff:ff:ff:ff:ff:ff
    inet 61.210.151.251/24 brd 62.210.151.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::8934:97ff:fe11:b91c/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 84:34:97:11:b3:6d brd ff:ff:ff:ff:ff:ff

Como podemos comprobar, nuestra maquina de ejemplo tiene dos tarjetas de red, eth0 y eth1. La que estamos utilizando es la eth0, así que revisamos su configuración básica con el siguiente comando.

ethtool eth0

Ejemplo de salida…

Settings for eth0:
 Supported ports: [ TP ]
 Supported link modes:   10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Half 1000baseT/Full 
 Supported pause frame use: No
 Supports auto-negotiation: Yes
 Supported FEC modes: Not reported
 Advertised link modes:  10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Half 1000baseT/Full 
 Advertised pause frame use: Symmetric
 Advertised auto-negotiation: Yes
 Advertised FEC modes: Not reported
 Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                      100baseT/Half 100baseT/Full 
                                      1000baseT/Full 
 Link partner advertised pause frame use: No
 Link partner advertised auto-negotiation: Yes
 Link partner advertised FEC modes: Not reported
 Speed: 1000Mb/s
 Duplex: Full
 Port: Twisted Pair
 PHYAD: 1
 Transceiver: internal
 Auto-negotiation: on
 MDI-X: off
 Supports Wake-on: g
 Wake-on: g
 Current message level: 0x000000ff (255)
          drv probe link timer ifdown ifup rx_err tx_err
 Link detected: yes

Ahora verificamos el controlador y el firmware de nuestro dispositivo.

ethtool -i eth0

Ejemplo…

driver: tg3
version: 3.137
firmware-version: 5720-v1.32 NCSI v1.1.15.0
expansion-rom-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

También podemos visualizar las estadísticas de uso.

ethtool -S eth0

Vemos la salida de ejemplo de un servidor en producción. Paquetes enviados, recibidos, errores, etc…

NIC statistics:
     rx_packets: 32789017
     tx_packets: 71122690
     rx_bytes: 3038700048
     tx_bytes: 99919029139
     rx_broadcast: 365083
     tx_broadcast: 4
     rx_multicast: 1225215
     tx_multicast: 1222
     multicast: 1225215
     collisions: 0
     rx_crc_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 25191059
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 3038700048
     tx_dma_out_of_sync: 0
     tx_smbus: 954
     rx_smbus: 1207818
     dropped_smbus: 35
     os2bmc_rx_by_bmc: 473
     os2bmc_tx_by_bmc: 0
     os2bmc_tx_by_host: 473
     os2bmc_rx_by_host: 0
     tx_hwtstamp_timeouts: 0
     tx_hwtstamp_skipped: 0
     rx_hwtstamp_cleared: 0
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_frame_errors: 0
     rx_fifo_errors: 94
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_queue_0_packets: 8924582
     tx_queue_0_bytes: 12508100173
     tx_queue_0_restart: 0
     tx_queue_1_packets: 8677383
     tx_queue_1_bytes: 12138277106
     tx_queue_1_restart: 6
     tx_queue_2_packets: 8774592
     tx_queue_2_bytes: 12278712285
     tx_queue_2_restart: 4
     tx_queue_3_packets: 9069991
     tx_queue_3_bytes: 12731047984
     tx_queue_3_restart: 4
     tx_queue_4_packets: 9083140
     tx_queue_4_bytes: 12724609732
     tx_queue_4_restart: 2
     tx_queue_5_packets: 8774137
     tx_queue_5_bytes: 12292153412
     tx_queue_5_restart: 10
     tx_queue_6_packets: 9003116
     tx_queue_6_bytes: 12593455265
     tx_queue_6_restart: 7
     tx_queue_7_packets: 8814795
     tx_queue_7_bytes: 12363886239
     tx_queue_7_restart: 11
     rx_queue_0_packets: 4331120
     rx_queue_0_bytes: 374862760
     rx_queue_0_drops: 0
     rx_queue_0_csum_err: 21
     rx_queue_0_alloc_failed: 0
     rx_queue_1_packets: 3916049
     rx_queue_1_bytes: 345447419
     rx_queue_1_drops: 94
     rx_queue_1_csum_err: 1055
     rx_queue_1_alloc_failed: 0
     rx_queue_2_packets: 3940280
     rx_queue_2_bytes: 349452804
     rx_queue_2_drops: 0
     rx_queue_2_csum_err: 42
     rx_queue_2_alloc_failed: 0
     rx_queue_3_packets: 4020698
     rx_queue_3_bytes: 351359496
     rx_queue_3_drops: 0
     rx_queue_3_csum_err: 11
     rx_queue_3_alloc_failed: 0
     rx_queue_4_packets: 3962799
     rx_queue_4_bytes: 344462151
     rx_queue_4_drops: 0
     rx_queue_4_csum_err: 46
     rx_queue_4_alloc_failed: 0
     rx_queue_5_packets: 3802558
     rx_queue_5_bytes: 335758509
     rx_queue_5_drops: 0
     rx_queue_5_csum_err: 6
     rx_queue_5_alloc_failed: 0
     rx_queue_6_packets: 3822042
     rx_queue_6_bytes: 334297324
     rx_queue_6_drops: 0
     rx_queue_6_csum_err: 34
     rx_queue_6_alloc_failed: 0
     rx_queue_7_packets: 3785559
     rx_queue_7_bytes: 340749545
     rx_queue_7_drops: 0
     rx_queue_7_csum_err: 38
     rx_queue_7_alloc_failed: 0

Si quieres saber el tipo de negociación (RX / TX), ejecutamos…

ethtool -a eth0

Veremos algo similar a…

Pause parameters for eth0:
Autonegotiate:	on
RX:		on
TX:		off

Una vez hemos comprobado nuestra tarjeta, vemos algunos ejemplos de configuración realmente útiles.

 

Tal vez no sabias que puedes modificar la velocidad de tu tarjeta de red, normalmente 100 o 1000 (puedes insertar cualquier valor admitido por el dispositivo). Debes saber que al realizar esta modificación la interfaz queda en modo OFF, así que la tendrás que levantar otra vez con el comando ip, o ifconfig.

ethtool -s eth0 speed 1000
ip link set eth0 up

También puedes habilitar o deshabilitar la negociación automática de ethernet.

# Deshabilitar
ethtool -s eth0 autoneg off
# Habilitar
ethtool -s eth0 autoneg on

El comando ethtool nos permite modificar varios parámetros a la vez. La sintaxis es la siguiente.

ethtool –s [dispositivo] speed [10/100/1000] duplex [half/full] autoneg [on/off]

# ejemplo
ethtool –s eth0 speed 1000 duplex full autoneg off

Las modificaciones que hemos realizado son temporales, por tanto al reiniciar el sistema volverán a su estado original. Vemos como hacer que sean permanentes.

En sistemas basados en RHEL, CentOS, Fedora y derivados:

nano /etc/sysconfig/network-scripts/ifcfg-eth0

Insertamos nuestra configuración.

ETHTOOL_OPTS="speed 1000 duplex full autoneg off"

En sistemas basados en Debian, Ubuntu, Linux Mint y derivados:

nano /etc/network/interfaces

Pegamos nuestra configuración preferida.

post-up ethtool -s eth0 speed 1000 duplex full autoneg off

Guardamos el archivo, solo necesitas reiniciar tu sistema.

reboot

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Administrar tarjetas ethernet con el comando ethtool.

 

Agregar comentario