Blog/content/posts/2022/wireguard-unknown-device-ty...

108 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 <interface> <configuration filename>
```
Но если подсунуть конфиг, который генерирую многие сервисы, он не заработает.
Получим ошибку `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