Examinar la configuración de la interfaz de red con ethtool en Linux

CompTIABeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a utilizar la utilidad de línea de comandos ethtool para examinar y administrar la configuración de la interfaz de red en un entorno Linux. Comenzará instalando la herramienta e identificando su interfaz de red principal. Después de esto, practicará la visualización de la velocidad actual de la interfaz y el modo dúplex, la configuración manual de estos parámetros a una configuración específica como 10 Mbps half-duplex, y luego revertirá la interfaz a su estado de negociación automática predeterminado.

Al completar estos pasos, obtendrá habilidades prácticas para diagnosticar problemas de red en la capa física. El laboratorio concluye enseñándole a analizar los modos de enlace compatibles de su tarjeta de red, lo cual es esencial para solucionar posibles problemas de rendimiento causados por desajustes de velocidad o dúplex entre dispositivos de red.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 98%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Instalar ethtool e Identificar su Interfaz de Red

En este paso, comenzará instalando ethtool, una utilidad crucial de línea de comandos para examinar y modificar los parámetros del controlador de la interfaz de red. Después de asegurarse de que la herramienta está disponible, aprenderá a identificar el nombre de la interfaz de red principal en su sistema, lo cual es un requisito previo para cualquier análisis de red posterior.

Primero, actualicemos la lista de paquetes e instalemos ethtool. Es una buena práctica ejecutar apt update antes de instalar nuevos paquetes para asegurarse de que está obteniendo las últimas versiones disponibles de los repositorios.

Abra una terminal, que ya debería estar abierta en su directorio ~/project. Ejecute los siguientes comandos:

sudo apt update
sudo apt install ethtool -y

La bandera -y responde automáticamente "sí" a la solicitud de instalación, haciendo que el proceso sea no interactivo. Debería ver una salida que indique que se están leyendo las listas de paquetes y que se está instalando ethtool.

Ahora que ethtool está instalado, necesita determinar qué interfaz de red desea examinar. Un sistema puede tener múltiples interfaces, como una interfaz de loopback (lo), una interfaz Ethernet cableada (eth0 o enp0s3), y otras. El comando ip es el estándar moderno para mostrar y manipular dispositivos de red, direcciones y rutas.

Para listar todas las interfaces de red y sus configuraciones, use el comando ip a (una abreviatura de ip addr):

ip a

Verá una lista de todas las interfaces de red. Busque una interfaz que no sea lo (la interfaz de loopback) y que tenga un estado UP. Esta es típicamente su conexión de red principal. El nombre suele ser eth0 o un nombre que comienza con 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

De la salida de ejemplo anterior, el nombre de la interfaz de red principal es eth0. También puede ver otras interfaces como docker0, pero para este laboratorio, nos centraremos en eth0. Tome nota del nombre de su interfaz, ya que lo necesitará en los siguientes pasos. Ahora ha instalado con éxito la herramienta necesaria y ha identificado su interfaz de red de destino.

Ver la Velocidad y el Dúplex Actuales de la Interfaz con ethtool

En este paso, utilizará la utilidad ethtool que acaba de instalar para inspeccionar el estado operativo actual de su interfaz de red. Específicamente, se centrará en dos parámetros críticos: Velocidad (Speed) y Dúplex (Duplex).

Las tarjetas de interfaz de red (NICs) operan a velocidades específicas (por ejemplo, 10 Mbps, 100 Mbps, 1000 Mbps) y en uno de dos modos dúplex:

  • Half-duplex: La interfaz solo puede enviar o recibir datos en un momento dado, pero no ambas cosas simultáneamente.
  • Full-duplex: La interfaz puede enviar y recibir datos al mismo tiempo, lo que mejora significativamente el rendimiento.

Las redes modernas casi siempre utilizan un proceso llamado auto-negociación (auto-negotiation), donde la NIC y el dispositivo de red conectado (como un switch) se comunican automáticamente para determinar la velocidad y el modo dúplex más altos que ambos soportan.

Ahora, veamos estas configuraciones para la interfaz de red que identificó en el paso anterior (usaremos eth0 como ejemplo). En su terminal, ejecute el siguiente comando. Recuerde reemplazar eth0 con el nombre real de su interfaz si es diferente.

ethtool eth0

Después de presionar Enter, verá información detallada sobre la interfaz. En algunos entornos virtuales, puede ver muchos valores "Not reported" (No informado) o "Unknown" (Desconocido), lo que indica que la interfaz de red virtual tiene características limitadas. Esto es normal para este entorno de laboratorio.

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

Observe cuidadosamente la salida. Las líneas clave para este paso son:

  • Speed: Unknown!: La velocidad actual no es reportada por el driver.
  • Duplex: Unknown! (255): El modo dúplex tampoco es reportado.
  • Auto-negotiation: off: Esto es importante. Muestra que la interfaz no está configurada para auto-negociación, por lo que podremos establecer la velocidad y el dúplex manualmente en el siguiente paso.
  • netlink error: Operation not permitted: Este error es común en entornos virtualizados o en contenedores con permisos restringidos. No nos impedirá completar el laboratorio.

La línea Link detected: yes confirma que una conexión física a la red está activa. Estas configuraciones son fundamentales para el funcionamiento de la Capa Física (Capa 1).

Establecer Manualmente la Velocidad de la Interfaz a 10Mbps Half-Duplex

En este paso, aprenderá cómo anular manualmente la configuración auto-negociada. Si bien la auto-negociación es el estándar para las redes modernas, existen situaciones poco comunes, como la conexión a hardware heredado más antiguo o la solución de problemas de enlaces específicos, donde podría necesitar forzar una velocidad y un modo dúplex particulares.

Nota Importante: Establecer manualmente estos parámetros puede causar problemas de conectividad de red si no se hace correctamente. Forzar una configuración que no coincida con el dispositivo en el otro extremo del cable (por ejemplo, un puerto de switch) puede provocar una discrepancia de dúplex (duplex mismatch), que degrada severamente el rendimiento de la red, o puede hacer que el enlace falle por completo. En este entorno virtual, el cambio debería ser seguro de intentar.

Para cambiar la configuración, utilizará el comando ethtool con la bandera -s, que significa "settings" (configuración). Esta operación requiere privilegios de administrador, por lo que debe usar sudo.

Intentemos establecer la velocidad de la interfaz a 10 Mbps y el modo dúplex a half. Recuerde reemplazar eth0 con el nombre de su interfaz si es diferente.

sudo ethtool -s eth0 speed 10 duplex half

Este comando no produce ninguna salida si tiene éxito. Para confirmar si el cambio se aplicó, debe inspeccionar la configuración de la interfaz nuevamente usando el comando del paso anterior:

ethtool eth0

Ahora, examine la salida. Busque las líneas Speed y Duplex. Incluso con los errores iniciales, verá que el comando para establecer la velocidad y el dúplex fue exitoso.

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

Ahora debería ver Speed: 10Mb/s y Duplex: Half. Observe también que Auto-negotiation sigue siendo off, lo cual es esperado ya que ha establecido manualmente los parámetros. Esto confirma que puede modificar con éxito la configuración de la interfaz de red.

Ver y Modificar Funciones de Descarga con ethtool -k

En este paso, aprenderá cómo inspeccionar y modificar las funciones de descarga de red (network offload features). Estas son capacidades avanzadas de la NIC que permiten que el hardware realice tareas que de otro modo serían manejadas por la CPU, como el cálculo de sumas de verificación (checksums) o la segmentación de datos. Descargar estas tareas puede mejorar el rendimiento de la red.

Primero, veamos la configuración actual de descarga para su interfaz usando la bandera -k (o --show-features).

ethtool -k eth0

Verá una lista de características, algunas de las cuales están on (activadas) y otras off (desactivadas). Un estado [fixed] significa que la configuración no puede ser cambiada por el usuario.

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 salida es larga y puede variar)

Ahora, practiquemos la modificación de una de estas configuraciones. Desactivaremos temporalmente la suma de verificación de transmisión (TX checksumming). Esta operación requiere privilegios de administrador, por lo que debe usar sudo y la bandera -K (o --features).

sudo ethtool -K eth0 tx-checksumming off

El comando ahora reporta los cambios que realizó. Observe que al deshabilitar tx-checksumming, se deshabilitaron automáticamente otras características relacionadas. Esto se debe a que algunas características dependen de otras.

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]

Para verificar el cambio en la lista completa, puede ejecutar ethtool -k eth0 nuevamente.

Ahora, volvamos a habilitarlo para restaurar el comportamiento predeterminado que mejora el rendimiento.

sudo ethtool -K eth0 tx-checksumming on

Nuevamente, la salida muestra los cambios reales. Puede ver que, aunque solicitó una característica on, esta permanece off si el hardware la tiene fijada. También muestra que las características relacionadas se vuelven a habilitar automáticamente.

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]

Al completar este paso, ha aprendido a examinar y modificar las características de descarga de hardware de su tarjeta de red y ha visto cómo las dependencias de características y las limitaciones del hardware afectan el resultado.

Examinar Estadísticas de la Interfaz con ethtool -S

En este último paso, aprenderá cómo ver estadísticas detalladas para su interfaz de red. Este es uno de los usos más comunes de ethtool para la solución de problemas de red del día a día. La herramienta proporciona una gran cantidad de información, incluyendo el número de paquetes enviados y recibidos, recuentos de bytes y, quizás lo más importante, recuentos de errores.

Para ver estas estadísticas, use la bandera -S (o --statistics). Recuerde reemplazar eth0 con el nombre de su interfaz.

ethtool -S eth0

La salida será una larga lista de contadores. En este entorno, la NIC utiliza múltiples colas (queues), por lo que las estadísticas se reportan por cola. Centrémonos en los contadores de paquetes rx_queue_ y 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
     ... (muchas otras estadísticas)

Nota: Sus números serán diferentes, ya que reflejan todo el tráfico desde que la interfaz se activó.

Ahora, generemos algo de tráfico de red para ver cómo cambian estos contadores. Usaremos el comando ping para enviar algunos paquetes a la dirección de loopback (127.0.0.1), que es la propia máquina local. La bandera -c 4 le indica a ping que envíe exactamente 4 paquetes.

ping -c 4 127.0.0.1

Verá una salida que muestra los 4 paquetes siendo enviados y recibidos.

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

Ahora que ha generado algo de tráfico, revisemos las estadísticas nuevamente:

ethtool -S eth0

Examine nuevamente los valores de rx_queue_*_packets y 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
     ... (muchas otras estadísticas)

Debería ver que el número total de paquetes en las colas de recepción y transmisión ha aumentado. Debido a la actividad del sistema en segundo plano, el aumento puede ser mayor que los 4 paquetes de nuestro comando ping, pero el cambio confirma que la interfaz está enviando y recibiendo datos correctamente. Esta es una técnica fundamental para verificar la salud del enlace. Si estuviera solucionando un problema y viera que los contadores de errores aumentan, sería una señal clara de un problema.

Resumen

En este laboratorio, aprendió a administrar la configuración de la interfaz de red utilizando la utilidad ethtool en Linux. Comenzó instalando el paquete ethtool e identificando el nombre de su interfaz de red principal con el comando ip a. Después de esto, utilizó ethtool para examinar los parámetros operativos actuales de la interfaz y luego configuró manualmente su velocidad y modo dúplex.

El laboratorio luego lo guió a través de la exploración de características más avanzadas. Aprendió a ver y modificar la configuración de descarga de hardware (hardware offload settings), como tx-checksumming, utilizando las banderas -k y -K. Finalmente, aprendió a inspeccionar estadísticas detalladas de la interfaz con ethtool -S y cómo generar tráfico con ping para ver cómo cambian esas estadísticas en tiempo real, proporcionando un método práctico para verificar la salud del enlace y solucionar problemas de conectividad.