Hetzner · Robot · Документация

Обрывы связи на сетевых картах Realtek: драйверы r8169 и r8168

Обновлено

Сетевые карты Realtek семейства RTL8111/8168/8169 встречаются в недорогих серверах. У них известна особенность: при определённых сочетаниях ядра, драйвера и нагрузки связь периодически пропадает, а в журнале ядра появляются сообщения о таймауте очереди передачи. Ниже — признаки проблемы, чем отличаются драйверы r8169 и r8168 и какие шаги помогают.

Признаки

  • Сервер временно перестаёт отвечать на ping и SSH, а затем сам приходит в себя.
  • В журнале ядра: NETDEV WATCHDOG: eth0 (r8169): transmit queue 0 timed out, сообщения о сбросе линка.
  • Падение скорости при большой нагрузке на сеть.
lspci -nnk | grep -A3 -i ethernet
ethtool -i enp2s0                  # используемый драйвер и версия
dmesg -T | grep -i -E 'r8169|r8168|watchdog|link'

Сначала самое простое

  1. Обновите ядро. В новых ядрах драйвер r8169 получил множество исправлений; многие проблемы уходят после обновления: apt full-upgrade и перезагрузка.
  2. Отключите аппаратные разгрузки (offload) на интерфейсе:
    ethtool -K enp2s0 tso off gso off gro off
    ethtool -k enp2s0 | grep -E 'tcp-segmentation|generic'
    Если связь стабилизировалась, закрепите настройку (в /etc/network/interfaces строкой post-up ethtool -K enp2s0 tso off gso off gro off, в systemd-networkd через .link файл или сервис).
  3. Отключите энергосбережение PCIe (ASPM) параметром ядра pcie_aspm=off в GRUB_CMDLINE_LINUX и выполните update-grub.

Драйвер r8168 вместо r8169

Отдельный драйвер r8168 от Realtek в ряде случаев ведёт себя стабильнее. В Debian он доступен как пакет r8168-dkms в разделе non-free (проверьте наличие в вашем релизе):

apt install -y r8168-dkms
echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf
update-initramfs -u
reboot

После перезагрузки проверьте ethtool -i — должен быть r8168. Выполняйте эти действия, имея доступ к KVM-консоли или Rescue System (инструкция): при ошибке сеть может не подняться. Если после обновления ядра dkms не пересобрал модуль, интерфейс исчезнет: заранее держите доступ через консоль. Чтобы вернуться на r8169, удалите файл blacklist, выполните update-initramfs -u и перезагрузитесь.

Когда обращаться в поддержку

Если обрывы продолжаются после всех шагов, соберите данные: вывод ethtool -i, lspci -nnk, фрагменты dmesg с временем сбоя, версию ядра, описание нагрузки и обратитесь в поддержку. Возможно, потребуется замена сетевой карты или сервера. Общую диагностику сети описывает справка Настройки сети — FAQ, а о перенесённых серверах читайте в справке Наладка системы после замены сервера.

Типичные ошибки

  • Отключили offload только до перезагрузки — настройка не сохранилась.
  • Забыли пересобрать initramfs после blacklist драйвера.
  • Установили r8168 без заголовков ядра — dkms не собрал модуль (apt install linux-headers-$(uname -r)).

Частые вопросы

Как понять, что у меня карта Realtek?

Команда lspci -nn | grep -i ethernet покажет модель. Для Realtek вы увидите RTL8111/8168 или подобное.

Влияет ли это на облачные серверы?

Нет, проблема относится к физическим сетевым картам на выделенных серверах.

Нужно ли ставить r8168 всегда?

Нет. Начните с обновления ядра и настроек offload; r8168 — запасной вариант.