Ethtool — программа изменения параметров сетевой платы в Ubuntu/Mint

Для для просмотра подробного состояния сетевой карты и изменения параметров ее функционирования в Linux и, в частности, в Ubuntu/Mint существует программа ethtool.

Ethtool присутствует в стандартных репозиториях Ubuntu/Mint и установка ее достаточно проста:

sudo apt-get install ethtool

Вот наиболее часто применяемые примеры использования ethtool.

Вывод информации о сетевой карте eth0:

$ sudo ethtool eth0
    Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: on (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
    drv probe link
    Link detected: yes

Выключение автоопределения, включение Full Duplex и установление скорости в 1000 Mb/s

$ sudo ethtool -s eth0 duplex full speed 1000 autoneg off

Вывести информацию о драйвере сетевой карты

$ sudo ethtool -i enp0s25
    driver: e1000e
    version: 3.2.6-k
    firmware-version: 1.3-0
    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: no

Вывести подробную статистику RX\TX (прием\отдача) и в частности ошибок.

$ sudo ethtool -S enp0s25
    NIC statistics:
    rx_packets: 150794
    tx_packets: 136628
    rx_bytes: 121162464
    tx_bytes: 28460802
    rx_broadcast: 1341
    tx_broadcast: 114
    rx_multicast: 690
    tx_multicast: 597
    rx_errors: 0
    tx_errors: 0
    tx_dropped: 0
    multicast: 690
    collisions: 0
    rx_length_errors: 0
    rx_over_errors: 0
    rx_crc_errors: 0
    rx_frame_errors: 0
    rx_no_buffer_count: 0
    rx_missed_errors: 0
    tx_aborted_errors: 0
    tx_carrier_errors: 0
    tx_fifo_errors: 0
    tx_heartbeat_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
    tx_restart_queue: 0
    rx_long_length_errors: 0
    rx_short_length_errors: 0
    rx_align_errors: 0
    tx_tcp_seg_good: 4097
    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_csum_offload_good: 149209
    rx_csum_offload_errors: 0
    rx_header_split: 0
    alloc_rx_buff_failed: 0
    tx_smbus: 0
    rx_smbus: 0
    dropped_smbus: 0
    rx_dma_failed: 0
    tx_dma_failed: 0
    rx_hwtstamp_cleared: 0
    uncorr_ecc_errors: 0
    corr_ecc_errors: 0
    tx_hwtstamp_timeouts: 0

Здесь необходимо помнить, что настройки сетевой платы, установленные командой ethtool действуют до следующей перезагрузки. Чтобы эти параметры устанавливались при каждой загрузке проще всего подправить файл /etc/network/interfaces добавив строку post-up ethtool -s eth0 speed 100 duplex full autoneg off.

Файл /etc/network/interfaces должен выглядеть примерно так:

auto lo
    iface lo inet loopback
    # The primary network interface
    allow-hotplug eth0
    iface eth0 inet static
    address 192.168.10.174
    netmask 255.255.255.0
    network 192.168.10.0
    broadcast 192.168.10.255
    gateway 192.168.10.1
    up sleep 5; /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off

У программы ethtool усть довольно подробный man (англ.). На opennet есть перевод ethtool man на русский.