CLI-утилита для управления туннелями AmneziaWG.
- Rust 100%
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
awgctl
CLI-утилита для управления туннелями AmneziaWG.
Установка
cargo install --path .
Быстрый старт
awgctl new # создать сервер с авто-конфигурацией
awgctl add awg0 client1 # добавить клиента
awgctl export awg0 client1 # вывести конфиг в stdout
Команды
new — создание сервера
awgctl new [OPTIONS] [NAME]
| Опция | Описание |
|---|---|
--address, -a |
Адреса сервера (auto: 10.0.X.0/24) |
--port, -p |
Порт (auto: 51820-51900) |
--endpoint, -e |
Публичный endpoint (auto: checkip.amazonaws.com) |
--dns |
DNS-серверы |
--mtu |
MTU |
add — добавление клиента
awgctl add [OPTIONS] <SERVER> <CLIENT>
| Опция | Описание |
|---|---|
--address, -a |
Адреса (auto: первый свободный в подсети сервера) |
--default-gateway, -d |
Использовать VPN как шлюз по умолчанию |
--dns |
DNS-серверы (переопределяет серверные при экспорте) |
--no-dns |
Не наследовать DNS от сервера |
--keepalive, -k |
Persistent keepalive (секунды) |
rm — удаление сервера или клиента
awgctl rm <SERVER> [CLIENT]
| Аргумент | Описание |
|---|---|
<SERVER> |
Имя сервера |
<CLIENT> |
Имя клиента. Если указано, удаляет клиента вместо сервера |
Примеры:
awgctl rm awg0 # удалить сервер awg0 и все его конфигурации
awgctl rm awg0 client1 # удалить клиента client1 из сервера awg0
export — экспорт конфигурации
awgctl export [OPTIONS] <SERVER> <CLIENT>
| Опция | Описание |
|---|---|
--output, -o |
Файл для сохранения |
--qr, -q |
QR-код вместо текста |
Режимы:
| Результат | Что делать |
|---|---|
| stdout | Текстовый конфиг в терминал |
-o file |
Текстовый конфиг в файл |
-q |
QR-код в терминале (Dense1x2) |
-o file -q |
QR-код как SVG в файл |
list — список серверов и клиентов
awgctl list [OPTIONS] [SERVER]
| Аргумент / Опция | Описание |
|---|---|
[SERVER] |
Имя сервера. Если указано, список клиентов |
--verbose, -v |
Расширенный вывод |
Примеры:
awgctl list # список серверов
awgctl list awg0 # список клиентов сервера awg0
awgctl list -v # серверы с endpoint, DNS, MTU
awgctl list awg0 -v # клиенты с DNS, gateway, keepalive
Вывод:
$ awgctl list
Name Address Port DNS
awg0 10.0.0.1/24 51820 —
$ awgctl list -v
Name Address Port Endpoint DNS MTU Created
awg0 10.0.0.1/24 51820 example.com — — 22.08.26 14:32
$ awgctl list awg0
Name awg0
Address 10.0.0.1/24
Port 51820
Endpoint example.com
DNS —
MTU —
Created 22.08.26 14:32
Name Address DNS Gateway
client1 10.0.0.2/32 — No
client2 10.0.0.3/32 Inherit Yes
$ awgctl list awg0 -v
Name awg0
Address 10.0.0.1/24
Port 51820
Endpoint example.com
DNS —
MTU —
Created 22.08.26 14:32
Name Address DNS Gateway Keepalive Created
client1 10.0.0.2/32 — No No 22.08.26 14:36
client2 10.0.0.3/32 Inherit Yes 25 22.08.26 14:37
doctor — диагностика конфигурации
awgctl doctor
Проверяет все серверы и их клиентов на структурные и конфигурационные проблемы:
- отсутствующие или пустые обязательные поля (адрес, порт, endpoint, DNS)
- пересечение подсетей/портов между серверами или с системными адресами
- конфликты и некорректная принадлежность адресов клиентов
- отсутствие
.conf-файла для сервера - посторонние или повреждённые файлы в директории конфигурации
Выводит найденные проблемы по каждому серверу с иерархией «сервер → ошибки» и
цветовой подсветкой: исправимые проблемы помечаются как предупреждения.
При наличии Nerd Font иконки проблем дополнительно помечаются иконками (предупреждение/ошибка).
Если проблем нет — выводится All OK.
В разработке: флаг
--fix(интерактивное исправление проблем).
completions — генерация автодополнений
awgctl completions <SHELL>
Поддерживаемые оболочки: bash, zsh, fish, powershell, elvish.
Пример:
awgctl completions bash > /etc/bash_completion.d/awgctl
awgctl completions fish > ~/.config/fish/completions/awgctl.fish
awgctl completions zsh > ~/.zfunc/_awgctl
Конфигурация
| Директория | Описание |
|---|---|
/etc/awgctl/ |
Метаданные (TOML) |
/etc/amnezia/amneziawg/ |
Конфигурации AmneziaWG (.conf) |
Переопределение путей
При сборке:
AWGCTL_CONF_DIR=/custom/path cargo build
AWG_CONF_DIR=/custom/path cargo build
Планируется
set— изменение конфигурацииdoctor --fix— интерактивное исправление найденных проблемload— подключение существующей конфигурации
Благодарности
Спасибо idkncc за удобную библиотеку.