WireGuard Error: Kernel module wireguard.ko failed to load — Решение сбоя
Утилита wg-quick не может создать интерфейс, сообщая об отсутствии поддержки протокола со стороны ядра операционной системы Linux.
- Ошибка консоли:
[#] ip link add dev wg0 type wireguard ... Error: Unknown device type / Operation not supported. - Команда
modprobe wireguardвыдает:modprobe: FATAL: Module wireguard not found in directory /lib/modules/$(uname -r). - В системах с Secure Boot:
modprobe: ERROR: could not insert 'wireguard': Required key not available. - Служба падает после недавнего обновления ядра Linux без перезагрузки системы.
1. Проверка версии ядра Linux
WireGuard официально включен в основную ветку ядра, начиная с версии **Linux 5.6**. Проверьте текущую версию ядра:
uname -r2. Установка заголовков ядра и сборка модуля через DKMS (для старых ядер / LTS)
Если ядро старше 5.6 или модуль отсутствует в сборке дистрибутива:
# Для Debian / Ubuntu:
apt-get update
apt-get install -y linux-headers-$(uname -r) wireguard-dkms wireguard-tools
# Для RHEL / CentOS / Rocky Linux:
dnf install -y epel-release elrepo-release
dnf install -y kmod-wireguard wireguard-tools3. Исправление конфликта версий после обновления ядра
Если ядро было обновлено, но система не перезагружалась, директория модулей указывает на старую версию. Выполните перезагрузку:
reboot4. Решение проблемы Secure Boot (Подпись модуля ядра MOK)
Если включен Secure Boot, скомпилированный через DKMS модуль должен быть подписан:
# Генерация и импорт сертификата MOK
update-secureboot-policy --enroll-key
# Либо отключите Secure Boot в BIOS/UEFI хоста.5. Альтернатива: Использование WireGuard в пространстве пользователя (Userspace Fallback)
Если невозможно загрузить модуль ядра (например, в непривилегированных контейнерах OpenVZ/LXC):
# Установка userspace-реализации
apt-get install -y wireguard-go
# Запуск интерфейса через wireguard-go
wireguard-go wg0
wg-quick up wg0 Частые вопросы (FAQ)
В чем разница между модулем ядра wireguard.ko и wireguard-go?
Модуль ядра wireguard.ko работает внутри пространства ядра с максимальной производительностью и минимальными задержками. wireguard-go работает в User Space через TUN-интерфейс, расходует больше CPU, но может работать без прав модификации ядра.
Как проверить, загружен ли модуль WireGuard прямо сейчас?
Выполните команду: lsmod | grep wireguard. Если вывод пуст, модуль не активен в памяти ядра.
Почему после команды 'apt upgrade' падает туннель WireGuard?
Обновление ядра удаляет старые модули. До перезагрузки в новое ядро modprobe не может найти .ko файлы для текущей работающей версии.
Поддерживается ли WireGuard в WSL2 (Windows Subsystem for Linux)?
Стандартное ядро WSL2 не содержит модуля wireguard.ko. Для работы требуется скомпилировать кастомное ядро WSL2 с поддержкой CONFIG_WIREGUARD=m или использовать wireguard-go.