Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

AmneziaWG в OpenWrt: ошибка загрузки модуля kmod-amneziawg (Symbol Mismatch)

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Ошибка kmod: failed to insert module amneziawg.ko: Unknown symbol in module при запуске на OpenWrt роутере.
  • Сообщение opkg install kmod-amneziawg: satisfies_dependencies_for: Cannot satisfy the following dependencies for kmod-amneziawg: kernel (= ...).
  • Сетевой интерфейс awg0 не создается через UCI или командную строку.
  • Роутер падает в перезагрузку при попытке старта туннеля через LuCI.

1. Причина ошибки Symbol Mismatch / Kernel Checksum

Модули ядра Linux в OpenWrt строго привязаны к контрольной сумме ядра (vermagic). Если сборка роутера и скомпилированный пакет kmod-amneziawg имеют малейшие различия в опциях сборки ядра, модуль блокируется защитой ядра.

2. Проверка текущей версии ядра и vermagic роутера

# Версия ядра на роутере
uname -a
# Хеш vermagic
opkg status kernel | grep Version

3. Установка с флагом игнорирования зависимостей (Workaround)

Если ядро отличается лишь минорным билдом, выполните установку с пропуском проверки контрольной суммы:

opkg install --nodeps --force-depends kmod-amneziawg
# Попытка ручной загрузки модуля
insmod amneziawg

4. Проверка зарегистрированных символов в dmesg

dmesg | grep -i amneziawg

5. Корректная сборка под точный vermagic через OpenWrt SDK

При наличии реального конфликта символов выполните сборку модуля в официальном SDK вашей версии прошивки:

# Внутри контейнера с OpenWrt SDK
./scripts/feeds update -a && ./scripts/feeds install amneziawg-kmod
make package/amneziawg-kmod/compile -j$(nproc)
# Перенесите полученный .ipk файл на роутер через scp
Практический опыт инженера: Для старых роутеров с 64-128 МБ RAM (MIPS) используйте исключительно kmod-версию: Go-клиент быстро исчерпает доступную оперативную память, вызвав OOM Killer.

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

Опасно ли использовать флаг --force-depends для модуля ядра?

Если API структур ядра изменилось между минорными версиями, принудительная загрузка может вызвать Kernel Panic роутера и циклическую перезагрузку (Bootloop).

Можно ли использовать пользовательский amneziawg-go вместо модуля ядра на OpenWrt?

Да, можно использовать Go-реализацию (amneziawg-go). Она работает в пространстве пользователя через TUN-интерфейс и не зависит от версии ядра, но потребляет больше CPU роутера.

Как удалить аварийный модуль из автозагрузки OpenWrt?

Удалите символическую ссылку из /etc/modules.d/: rm -f /etc/modules.d/*amneziawg, после чего выполните reboot.

Где взять готовые пакеты kmod-amneziawg под официальные релизы OpenWrt?

В официальном репозитории релизов Amnezia VPN на GitHub в разделе Releases представлены предсобранные пакеты под популярные архитектуры (MIPS, ARM, AArch64, x86_64).