This commit is contained in:
2022-11-19 13:54:51 +03:00
parent bdb9651b1a
commit e6d74db358
3 changed files with 92 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
---
title: "🕸️ Получение статистики соединений WireGuard"
date: 2022-11-19T13:29:41+03:00
draft: false
tags: [tips, wireguard]
---
## Просмотр статистики
Статистику клиентов WireGuard можно получить используя параметр `show` утилиты `wg`.
Например:
```sh
wg show all
```
Команда вернёт следующий результат.
```text
interface: wg0
public key: <public_key>
private key: (hidden)
listening port: 443
peer: <public_key>
preshared key: (hidden)
endpoint: <user_ip>:<user_port>
allowed ips: 10.253.1.2/32
latest handshake: 5 seconds ago
transfer: 25.47 MiB received, 282.28 MiB sent
peer: <public_key>
preshared key: (hidden)
endpoint: <user_ip>:<user_port>
allowed ips: 10.253.1.1/32
latest handshake: 47 seconds ago
transfer: 314.81 MiB received, 776.23 MiB sent
peer: <public_key>
preshared key: (hidden)
allowed ips: 10.253.1.3/32
```
Если на машине несколько интерфейсов WireGuard,
можно вывести статистику по конкретному интерфейсу:
```sh
wg show wg0
```
Для наблюдения за статистикой в реальном времени
можно использовать команду `watch`.
```sh
watch wg show all
```
Or:
`wg-json` tool from
[wireguard-tools](https://git.zx2c4.com/wireguard-tools/tree/contrib/json/wg-json).
## Сбор статистики
Для сбора (дампа) статистики у необходимо добавить аргумент `dump`
и в терминале отобразится информация в виде таблицы:
```sh
wg show all dump
```
```text
wg0 <private_key> <public_key> <listen_port> <fwmark>
wg0 <public_key> <preshared_key> <endpoint> <allowed_ips> <latest_handshake_timestamp> <transfer_rx> <transfer_tx> <persistent-keepalive>
wg0 <public_key> <preshared_key> <endpoint> <allowed_ips> <latest_handshake_timestamp> <transfer_rx> <transfer_tx> <persistent-keepalive>
wg0 <public_key> <preshared_key> <endpoint> <allowed_ips> <latest_handshake_timestamp> <transfer_rx> <transfer_tx> <persistent-keepalive>
```
\* [wg.8.en.html#show](https://manpages.debian.org/unstable/wireguard-tools/wg.8.en.html#show)
on Debian man pages.
## wg-json
В официальный состав инструментов [wireguard-tools](https://git.zx2c4.com/wireguard-tools)
входит утилита **[wg-json](https://git.zx2c4.com/wireguard-tools/tree/contrib/json/wg-json)**.
[Она](https://git.zx2c4.com/wireguard-tools/tree/contrib/json/wg-json)
представляет из себя Bash скрипт, который преобразовывает вывод команды
`wg show all dump` в JSON и возвращает его в терминал.
Утилита не принимает никаких аргументов. Запускать как есть.

View File

@@ -0,0 +1,30 @@
---
title: "🔑 WireGuard-UI и переменные среды"
date: 2022-11-15T18:55:14+03:00
draft: false
tags: [wireguard, privacy, tips]
---
[WireGuard-UI](https://github.com/ngoduykhanh/wireguard-ui) -
Webинтерфейс для управления WireGuard сервером.
На странице проекта на GitHub в разделе
[Environment Variables](https://github.com/ngoduykhanh/wireguard-ui#environment-variables)
указаны полезные параметры для настройки, в частности в моём случае после
тестирования интерфейса, появилась необходимость изменить пароль от UI.
За это отвечают параметры `WGUI_USERNAME` и `WGUI_PASSWORD`.
Но как оказалось экспортирование их в Shellскрипте, добавление перед
именем исполняемого файла, а также добавления в `.bashrc` не приводило к результату.
В ходе разбора этого непотребства оказалось, что переменные среды работают
только для новых инстансов, то есть необходимо удалить директорию `./db/`,
либо как поступил я, ручками исправить файл `./db/server/users.json`:
```json
{
"username": "admin",
"password": "admin"
}
```

View 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