ethtool - настройка сетевых интерфейсов в Linux

ethtool - утилита настройки сетевых интерфейсов в Linux. ethtool умеет отключать авто-определение сетевых настроек (auto-negotiation) сетевого интерфейса и менять режимы (полу/полно-дуплексный) из командной строки. ethtool работает только с физическими адаптерами, то есть виртуальные устройства, такие как tun0, ни просматривать, ни редактировать нельзя.

# apt install ethtool

Показать текущие настройки eth0

# ethtool eth0
Settings for eth0:
	Supported ports: [ MII ]
	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 pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
	Port: MII
	PHYAD: 1
	Transceiver: external
	Auto-negotiation: on
	Supports Wake-on: g
	Wake-on: d
	Link detected: yes

Примеры:

  • ethtool -s eth0 duplex half autoneg off - выключает автоопределение, включает half-duplex
  • ethtool -s eth0 duplex full speed 1000 autoneg off - Выключает автоопределение, включает Full Duplex и устанавливает скорость в 1000 Mb/s.
  • ethtool -i eth0 вывести информацию о драйвере сетевой карты
  • ethtool -S eth0 выводит подробную статистику RX\TX (прием\отдача)
  • ethtool -a eth0 запрашивает и отображает настройки параметров ожидания для указанного сетевого устройства
    # ethtool -a eth0
    Pause parameters for eth0:
    Autonegotiate:  on
    RX:             off # режим ожидания RX
    TX:             off # режим ожидания TX

Autonegotiate - режим авто-согласования. Режим авто-согласования предполагает, что сетевое устройство само определяет присутствует ли двусторонний обмен и сколько мегабит он составляет.

Автозагрузка настроек ethtool

Настройка автозагрузки параметров сетевых интерфейсов измененных утилитой ethtool.

  • В Fedora, RHEL / CentOS - первичная настройка сервера их можно дописать (строка ETHTOOL_OPTS="") в файл ifcfg-eth0 для сетевого интерфейса eth0, например
    # nano /etc/sysconfig/network-scripts/ifcfg-eth0
    # Intel Corporation 82575EB Gigabit Network Connection
    DEVICE=eth0
    BOOTPROTO=static
    BROADCAST=85.xxx.xxx.255
    #HWADDR=00:30:48:D6:0F:D6
    IPADDR=85.xxx.xxx.xxx
    NETMASK=255.255.255.0
    NETWORK=85.xxx.xxx.0
    ONBOOT=yes # включать при загрузке
    ETHTOOL_OPTS="speed 100 duplex full autoneg off"
  • В Операционная система Debian создаем файл и прописываем в автозагрузку после запуска сетевого интерфейса.
    #!/bin/sh -e
    
    /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off
    sleep 3
    /sbin/ifconfig eth0 txqueuelen 1000
  • Второй вариант для Операционная система Debian, Ubuntu прописать строку в директиве post-up ethtool -s eth0 speed 100 duplex full autoneg off. Листинг полной настройки интерфейса
    auto lo
    iface lo inet loopback
    
    # The primary network interface
    allow-hotplug eth0
    iface eth0 inet static
            address 10.10.10.174
            netmask 255.255.255.0
            network 10.10.10.0
            broadcast 10.10.10.255
            gateway 10.10.10.1
            up sleep 5; /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off
            pre-up iptables-restore < /etc/iptables_rules
PQ VPS сервера в 28+ странах.