Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

AWG_KERNEL_PANIC_FORWARD Сетевое оборудование и VPN

AmneziaWG: Kernel Panic при пересылке пакетов в Linux

Обновлено: 25.08.2026 · Официальная документация ↗
  • Сервер внезапно зависает или перезагружается при высокой нагрузке на сеть через интерфейс awg0.
  • В системном дампе kdump / journalctl -k фиксируется: BUG: unable to handle page fault for address в функции amneziawg_xmit или skb_copy_bits.
  • Ядро сообщает о разыменовании нулевого указателя (NULL pointer dereference) в обработчике обфускации пакетов.
  • Сбой возникает при включении аппаратной разгрузки Generic Segmentation Offload (GSO).

1. Отключение аппаратных разгрузок сетевой карты (GSO, GRO, TSO)

Драйверы физических сетевых карт могут склеивать пакеты в большие блоки (Super-packets). Если модуль amneziawg пытается наложить случайный паддинг на составной буфер sk_buff, ядро падает в Panic.

# Отключение оффлоадов на внешнем интерфейсе eth0
ethtool -K eth0 gso off gro off tso off

# Фиксация параметров в systemd-networkd или ifupdown
echo "ETHTOOL_OPTS='-K eth0 gso off gro off tso off'" >> /etc/network/interfaces

2. Обновление модуля ядра kmod-amneziawg до стабильного релиза

Удалите устаревший модуль DKMS и установите исправленную версию:

# Удаление старой версии
dkms remove amneziawg/1.0.0 --all

# Сборка актуальной версии из официального репозитория
git clone https://github.com/amnezia-vpn/amneziawg-linux-kernel-module.git /usr/src/amneziawg-1.0.1
dkms add amneziawg/1.0.1
dkms build amneziawg/1.0.1
dkms install amneziawg/1.0.1

3. Проверка корректности очередей ядра в sysctl

# Защита от переполнения сокетов ядра
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216

4. Временный переход на режим amneziawg-go

Если ядро Linux устарело (например, Enterprise Linux со старым LTS ядром 4.18/5.4), используйте userspace-демон amneziawg-go, который физически изолирован от адресного пространства ядра.

💡 Практика специалистов: При компиляции через DKMS всегда проверяйте соответствие установленных linux-headers текущей запущенной версии ядра (uname -r), иначе собранный бинарник может содержать битые смещения структур данных.

Частые вопросы (FAQ)

Почему обычный WireGuard работает стабильно, а AmneziaWG падает в Panic?

Ранние версии кода модификации sk_buff в AmneziaWG некорректно пересчитывали контрольные суммы транспортного уровня при изменении длины заголовков на лету.

Как сохранить лог сбоя ядра, если сервер уходит в моментальный ребут?

Настройте сборщик kdump или используйте удаленную консоль netconsole для пересылки сообщений printk на соседний сервер по UDP.

Влияет ли отключение GSO/GRO на производительность процессора?

Нагрузка на CPU может незначительно возрасти (на 3-5%), однако это полностью устраняет дестабилизацию и падения сетевого стека.

С какими версиями ядра Linux официально совместим модуль amneziawg?

Модуль поддерживает ядра Linux начиная с версии 5.4 и вплоть до актуальных стабильных веток 6.6+ LTS.

Полезные материалы
Рекомендуем