WireGuard не может создать свой интерфейс: ядро или права?
Создание интерфейса срывается ещё до первого рукопожатия с партнёром. Прочитайте ошибку, чтобы отличить отсутствующий модуль от границы прав или от существующего владельца интерфейса.
WireGuard не может создать свой интерфейс, поэтому нет устройства для настройки, нет ключа для обмена и нет рукопожатия для отладки. Сбой целиком остаётся на локальной машине, и текст ошибки говорит, какая часть локального стека отказала. Правильно прочитать его быстрее, чем переустановить конфигурацию партнёра. Слои можно разделить, и сообщение называет тот, который отказал.
Ошибка возникает до того, как заговорит любой партнёр
Создание интерфейса — это один запрос netlink к ядру о устройстве типа wireguard. У ядра либо есть драйвер, понимающий этот тип, либо нет, и ответ возвращается сразу. На этом шаге ни один пакет не покидает машину, поэтому адреса конечных точек и ключи сервера не могут быть причиной.
Этот порядок важен для диагностики. Если команда так и не создала устройство, проблема не может быть в неверном открытом ключе или заблокированном порте UDP. Сначала исправьте локальный путь создания и только потом смотрите наружу.
Какая реализация должна владеть устройством
На этот запрос могут ответить две реализации. Модуль внутри ядра регистрирует тип устройства wireguard, а реализация в пользовательском пространстве, например wireguard-go, предоставляет тот же интерфейс другим механизмом. Если модуль отсутствует, ядро отклоняет запрос с ошибкой о неподдерживаемом устройстве, и решение — либо загрузить модуль, либо направить инструменты на реализацию в пользовательском пространстве.
Прежде чем выбирать между ними, проверьте, что действительно присутствует. Первая команда показывает, загружен ли модуль, а вторая спрашивает ядро напрямую:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Вторая команда — это наименьшее возможное воспроизведение: она просит устройство и больше ничего. Если она срывается с сообщением о неподдерживаемом типе, недостающая часть — это реализация, а не ваш файл конфигурации.
| Error text | What refused | Next step |
|---|---|---|
| Unknown device type or operation not supported | The kernel has no wireguard driver | Load the module or use the userspace implementation |
| Operation not permitted | Missing privilege | Use the service context or grant the capability |
| File exists | The name is already in use | Inspect the owner before touching it |
| No such device in a container | No tunnel device or capability | Add the device and NET_ADMIN to the container |
Права и границы контейнера
Создание и настройка сетевого устройства требуют прав: либо как root, либо с возможностью администрировать сеть. Обычная сессия пользователя этого не может, и это ограничение — сам замысел, а не препятствие, которое нужно обходить запуском непроверенного установщика.
Внутри контейнера граница удваивается. Контейнеру нужен доступ к туннельному устройству и возможность его настраивать, и флаги, которые это дают, те же, что использует контейнер VPN в Linux. Ограниченный гость, который обычно может просматривать веб, всё равно не может создать интерфейс, потому что просмотру такая возможность не нужна. Дайте возможность той службе, которой она нужна, а не каждой сессии на хосте.
Устраните конфликт имён и повторите попытку
Интерфейс, который уже существует, не обязательно остаток. Другой менеджер может владеть именем и использовать его прямо сейчас, поэтому осмотрите его, прежде чем что-либо удалять:
ip link show wg0
sudo wg show wg0
Если владельцем является активная служба, настройте эту службу вместо создания второго устройства. Если он действительно устарел, удалите его через инструмент, который его создал, и затем поднимите интерфейс документированным клиентом или юнитом, чтобы конфигурация и устройство оставались согласованными.
Как только создание удаётся, следующий сбой относится к более позднему этапу, и юнит, сообщающий о сбое после появления устройства, — это другая проблема, нежели устройство, которое так и не было создано. Разделите эти два случая, прежде чем снова менять права.