wireguard-go
This commit is contained in:
parent
b9ee9cedd9
commit
f0da4fb0a2
107
content/posts/2022/wireguard-unknown-device-type.md
Normal file
107
content/posts/2022/wireguard-unknown-device-type.md
Normal file
@ -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 <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
|
Loading…
Reference in New Issue
Block a user