---
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
