Mirando la interfaz de red de su sistema Linux con ethtool

0
2056

La utilidad ethtool en Linux le permite ver y cambiar algunas de las configuraciones de su controlador de red y tarjeta de interfaz, especialmente para dispositivos cableados.

Estos incluyen su velocidad, si la interfaz utiliza negociación automática y si se ejecuta en modo semidúplex o dúplex completo. Ethtool también proporciona una manera fácil de ver o solucionar problemas de su interfaz de red.

Lo más probable es que ethtool ya esté disponible en su sistema Linux. Sin embargo, para verificar, puede usar uno o ambos de estos comandos:

$ which ethtool
/usr/sbin/ethtool
$ sudo ethtool —version
ethtool version 5.13

Para tener una idea de cómo esta utilidad puede controlar la configuración, ejecute un comando como el siguiente. La -h significa “ayuda”. Es probable que se encuentre mirando alrededor de 10 páginas de sintaxis como la que se muestra aquí.

$ ethtool -h | more
ethtool version 5.13
Usage:
        ethtool [ FLAGS ] DEVNAME       Display standard information about device
        ethtool [ FLAGS ] -s|—change DEVNAME   Change generic options
                [ speed %d ]
                [ lanes %d ]
                [ duplex half|full ]
                [ port tp|aui|bnc|mii|fibre|da ]
                [ mdix auto|on|off ]
                [ autoneg on|off ]
                [ advertise %x[/%x] | mode on|off ... [—] ]
                [ phyad %d ]
                [ xcvr internal|external ]
                [ wol %d[/%d] | p|u|m|b|a|g|s|f|d... ]
                  [ sopass %x:%x:%x:%x:%x:%x ]
                [ msglvl %d[/%d] | type on|off ... [—] ]
                [ master-slave preferred-master|preferred-slave|forced-master|forced-slave ]
        ethtool [ FLAGS ] -a|—show-pause DEVNAME       Show pause options
        ethtool [ FLAGS ] -A|—pause DEVNAME    Set pause options
                [ autoneg on|off ]
                [ rx on|off ]
—More—

Ver configuraciones

Claramente, hay muchas cosas que la utilidad ethtool puede hacer por usted. Sin embargo, para ver simplemente la configuración en su interfaz de red, escriba “ethtool” seguido del nombre de su interfaz de red (por ejemplo, eth0). En los ejemplos siguientes, estamos viendo una interfaz de red llamada enp0s25.

$ ethtool enp0s25:
Settings for enp0s25:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/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
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 100Mb/s
	Duplex: Full
	Auto-negotiation: on
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: internal
	MDI-X: on (auto)
        Current message level: 0x00000007 (7)
                               drv probe link
	Link detected: yes

Observe el “sí” en la última línea que le indica que esta interfaz está funcionando. La salida también muestra los modos de enlace admitidos y que la negociación automática está activada. Observe la velocidad (100 Mbps) y que la interfaz se ejecuta en dúplex completo.

Puede verificar la configuración del controlador Ethernet con un comando como este:

$ ethtool -i enp0s25
driver: e1000e
version: 5.13.9-200.fc34.x86_64
firmware-version: 1.1-2
expansion-rom-version:
bus-info: 0000:00:19.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes

Estadísticas de la interfaz de red

Para ver las estadísticas de su interfaz de red, puede usar un comando como el siguiente. Puse la salida en dos columnas para que sea un poco más fácil revisar la configuración.

$ ethtool -S enp0s25 | column
NIC statistics:				     tx_single_coll_ok: 0
     rx_packets: 455502			     tx_multi_coll_ok: 0
     tx_packets: 44344			     tx_timeout_count: 0
     rx_bytes: 79840149			     tx_restart_queue: 0
     tx_bytes: 4734660			     rx_long_length_errors: 0
     rx_broadcast: 261026		     rx_short_length_errors: 0
     tx_broadcast: 35			     rx_align_errors: 0
     rx_multicast: 154850		     tx_tcp_seg_good: 165
     tx_multicast: 3561			     tx_tcp_seg_failed: 0
     rx_errors: 0			     rx_flow_control_xon: 0
     tx_errors: 0			     rx_flow_control_xoff: 0
     tx_dropped: 0			     tx_flow_control_xon: 0
     multicast: 154850			     tx_flow_control_xoff: 0
     collisions: 0			     rx_csum_offload_good: 289057
     rx_length_errors: 0		     rx_csum_offload_errors: 0
     rx_over_errors: 0			     rx_header_split: 0
     rx_crc_errors: 0			     alloc_rx_buff_failed: 0
     rx_frame_errors: 0			     tx_smbus: 0
     rx_no_buffer_count: 0		     rx_smbus: 0
     rx_missed_errors: 0		     dropped_smbus: 0
     tx_aborted_errors: 0		     rx_dma_failed: 0
     tx_carrier_errors: 0		     tx_dma_failed: 0
     tx_fifo_errors: 0			     rx_hwtstamp_cleared: 0
     tx_heartbeat_errors: 0		     uncorr_ecc_errors: 0
     tx_window_errors: 0		     corr_ecc_errors: 0
     tx_abort_late_coll: 0		     tx_hwtstamp_timeouts: 0
     tx_deferred_ok: 0			     tx_hwtstamp_skipped: 0

Sin colisiones ni errores. Buena seńal.

Para probar una interfaz de red, debe usar sudo y un comando como el que se muestra a continuación con la  opción -t (prueba). Observe que la interfaz pasó la prueba.

$ sudo ethtool -t enp0s25
The test result is PASS          <== PASS!
The test extra info:
Register test  (offline)         0
Eeprom test    (offline)         0
Interrupt test (offline)         0
Loopback test  (offline)         0
Link test   (on/offline)         0

Tenga en cuenta que todas estas pruebas se ejecutaron en modo fuera de línea. Hay dos modos, en línea y fuera de línea, y fuera de línea es el predeterminado. Ejecuta el conjunto completo de pruebas, pero puede interrumpir las operaciones normales. Las pruebas en línea son limitadas y no causarán interrupciones. Tenga esto en cuenta si está trabajando en un sistema de producción.

Cambiar la configuración

Los cambios en la interfaz de red requerirán que use sudo o lo ejecute como root. Además, los cambios no persisten tras un reinicio a menos que también modifique la configuración en el archivo de configuración en su distribución de Linux en particular. Para algunos cambios, también necesita bajar la interfaz con ifdown y hacer una copia de seguridad con ifup,  por lo que debería estar trabajando en la consola del sistema.