diff --git a/content/posts/2022/wireguard-unknown-device-type.md b/content/posts/2022/wireguard-unknown-device-type.md new file mode 100644 index 0000000..4598c7f --- /dev/null +++ b/content/posts/2022/wireguard-unknown-device-type.md @@ -0,0 +1,107 @@ +--- +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