--- title: "🛡️ Когда в ядре нет модуля Wireguard или Unknown Device Type" date: 2022-10-01T14:42:25+03:00 draft: false tags: [wireguard, linux, tips, privacy, porteus] --- ## WireGuard в Porteus Поддержка WireGuard в ядре Linux появилась в версии 5.6, однако в [Porteus](http://www.porteus.org/) 5.0 ядро собрано как-то не так, либо я не осилил, но WireGuard Tools вываливает ошибки. ```sh uname -r 5.18.8-porteus ``` Версия ядра 5.18.8, WireGuard должен быть из коробки. `wg show` ошибок не возвращает, `find /lib/modules/$(uname -r) -type f -name '*.ko' | grep -i wireguard` показывает, что модуля нет. Увы и ах. Началось всё с того, что **wireguard-tools** я собрал из [исходников](https://git.zx2c4.com/wireguard-tools/about/) и понадеевшись на удачу попробовал добавить интерфейс. ```sh ip link add dev wg0 type wireguard Error: Unknown device type. ``` На этом лирика кончилась, переходим к решению. ## wireguard-go [wireguard-go](https://git.zx2c4.com/wireguard-go/about/) - это официальная реализация WireGuard на языке программирования Go, который как Java работает везде и вся, но не требует виртуальной машины и компилируется в машинный код. Запустив его, получил предупеждение, что в моём ядре уже есть поддержка WireGuard и нужды в wireguard-go нет, ну-ну... ```sh ./wireguard-go wg0 ┌──────────────────────────────────────────────────────┐ │ │ │ Running wireguard-go is not required because this │ │ kernel has first class support for WireGuard. For │ │ information on installing the kernel module, │ │ please visit: │ │ https://www.wireguard.com/install/ │ │ │ └──────────────────────────────────────────────────────┘ wg show interface: wg0 listening port: 45654 ``` Как видно, интерфейс появился и всё заработало. А теперь к настройке. Настройка выполняется командой `wg`. ```sh wg setconf Usage: wg setconf ``` Но если подсунуть конфиг, который генерирую многие сервисы, он не заработает. Получим ошибку `Configuration parsing error`. А это всё потому, что файл конфигурации предназначен для утилиты `wg-quick`, которая является **Bash** обёрткой над `wg`. **lists.zx2c4.com**: [What has changed in the configuration file?](https://lists.zx2c4.com/pipermail/wireguard/2017-May/001362.html) Чтобы заработал `wg-quick`, нужно скопировать `wireguard-go` в директорию, которая присутствует в переменной `$PATH`, например `/usr/local/bin/`, в противном случае будем получать ошибку из начала поста. ```text wg-quick up /path/to/Config.conf [#] ip link add Config type wireguard Error: Unknown device type. Unable to access interface: Protocol not supported [#] ip link delete dev Config Cannot find device "Config" ``` В Porteus ещё дополнительно нужно будет доустановить пакет `openresolv`. ENJOY! ## Пакеты для Porteus [Топик](https://forum.porteus.org/viewtopic.php?f=49&t=10392) на форуме Porteus.org Скачать: [wireguard-go](https://data.iiiypuk.me/porteus/x86_64/Porteus-v5.0/modules/wireguard-go-0.0.20220316-1-x86_64.xzm) - 1.9 MiB [wireguard-tools](https://data.iiiypuk.me/porteus/x86_64/Porteus-v5.0/modules/wireguard-tools-1.0.20210914-1-x86_64.xzm) - 44 Kib