gwg - утилита командной строки для автоматического конфигурирования и администрирования wireguard-сервера. Поддерживает такие фунции как:
- Автоматическая настройка конфигурации wireguard server;
- Автоматическое изменение конфигурации сервера при добавлении пользователя;
- Автоматическое изменение конфигурации сервера при удалении пользователя;
- Автоматическое изменение конфигурации сервера при блокировке/разблокировке пользователя;
- Просмотр состояния сервера через стандартную утилиту wg show;
- Просмотр подробной статистики на основе стандартной утилиты wg show dump;
- Создание общих правил для управления (ограничения скорости) входящим трафиком;
- Создание правил для управления (ограничения скорости) входящим трафиком для каждого пользователя.
- Любой дистрибутив linux на основе Debian.
- Скачать архив с желаемой версией и поддерживаемой архитектурой:
wget https://github.com/PavelMilanov/gwg/releases/download/v0.2.6.2/gwg.linux_amd64.tar
- Распаковать архив:
tar -C /usr/bin/ -xvf gwg.linux_amd64.tar
- Запустить установку:
/usr/bin/gwg init
- Распаковать архив:
rm /usr/bin/gwg && tar -C /usr/bin/ -xvf gwg.linux_amd64.tar
- Синтаксис:
gwg -h
gwg -h
Описание: gwg - cli-менеджер wireguard:
gwg show - просмотр состояния wireguard-сервера.
gwg stat - просмотр подробной статистики wireguard-сервера.
gwg add - добавления пользователя.
gwg remove - удаление пользователя.
gwg block - блокировка пользователя.
gwg unblock - разблокировка пользователя.
gwg tc - модуль управления трафиком. (По-умолчанию выключен).
gwg ssp - режим прокси-сервера. (По-умолчанию выключен).
Помощь: gwg <command> -h
- Синтаксис:
gwg show
gwg show
interface: wg0
public key: 9zsArCzVC7kBWtvSkF4HBxSGlOvFU0StZSNvrXwVbAM=
private key: (hidden)
listening port: 51830
peer: 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
endpoint: 192.168.1.4:58082
allowed ips: 10.0.0.2/32
latest handshake: 15 minutes, 40 seconds ago
transfer: 644.26 KiB received, 9.11 MiB sent
- Синтаксис:
gwg stat
gwg stat
1) User: test, Ip: 10.0.0.2/32 , Resieve: 659724, Sent: 9550044
- Синтаксис:
gwg add -name <alias>
gwg add -name test2
____
[Peer]
# Name = test
PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
AllowedIPs = 10.0.0.2/32
[Peer]
# Name = test2
PublicKey = 1RzC4fTiP84n1s9fKvh6YNQSgsFpdj3omlVD1JUwhSg=
AllowedIPs = 10.0.0.3/32
- Синтаксис:
gwg remove -name <alias>
gwg remove -name test2
___
[Peer]
# Name = test
PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
AllowedIPs = 10.0.0.2/32
- Синтаксис:
gwg block -name <alias>
gwg block -name test
___
# [Peer]
# Name = test
# PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
# AllowedIPs = 10.0.0.2/32
- Синтаксис:
gwg unblock -name <alias>
gwg unblock -name test
___
[Peer]
# Name = test
PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
AllowedIPs = 10.0.0.2/32
gwg tc -h
Описание: подсистема классификации трафика по разрешенной полосе пропускания.
gwg tc service - управление службой gwg traffic control.
gwg tc bw - управление классами gwg traffic control.
gwg tc ft - управление фильтрами gwg traffic control.
Помощь: gwg tc (service|bw|ft) -h
gwg tc service -h
Описание: tc service - управление службой gwg trafic control.
gwg tc service up - включить службу (по-умолчанию выключена).
gwg tc service down - выключииь службу.
gwg tc service restart - перечитать конфигурацию и перезапустить службу.
gwg tc service show - посмотреть текущую конфигурацию службы.
Помощь: gwg tc service (up|down|restart|show) -h
- Синтаксис:
gwg tc service up -s <скорость> -ms <максимальная скорость>
gwg tc service up -s 5Mbit -ms 8Mbit
Classes not configured
Filters not configured
Tc config file generated successfully
Tc executable file generated successfully
Created symlink /etc/systemd/system/multi-user.target.wants/tc.service → /etc/systemd/system/tc.service.
Gwg tc service started
Синтаксис: gwg tc service down
Removed /etc/systemd/system/multi-user.target.wants/tc.service.
Gwg tc service down
Удаляет все правила tc
и выключает службу tc.service
Синтаксис: gwg tc service restart
Необходима в том случае, если были добавлены/ удалены tc bw
или tc ft
. Для применения изменений необходимо перезапустить службу
gwg tc service restart
Tc config file generated successfully
Tc executable file generated successfully
Gwg tc service restarted
Синтаксис: gwg tc service restart
Gwg tc service:
FullSpeed: 8Mbit
Speed: 5Mbit
Classes: []
Filters: []
Перед созданием правил ограничения трафика, необходимо создать саму полосу пропускания!
gwg tc bw
- абстракция над tc class
, позволяющая создавать полосы пропускания
gwg tc bw -h
Описание: tc bw - классификатор для задания ограничения скорости.
gwg tc bw add - создать новый класс gwg traffic control.
gwg tc bw remove - удалить класс gwg traffic control.
gwg tc bw show - просмотр существующих классов gwg traffic control.
Помощь: gwg tc bw (add|remove|show) -h
Синтаксис: gwg tc bw add -d <название п/п> -m <мин. ск-ть> -c <макс. скорость>
gwg tc bw add -d regular -m 2Mbit -c 3Mbit
class: 2
description: regular;
min-rate: 2Mbit;
cail-rate: 3Mbit;
Added successfully
Синтаксис: gwg tc bw show
class: 2
description: regular;
min-rate: 2Mbit;
cail-rate: 3Mbit;
class: 20
description: demo;
min-rate: 20Mbit;
cail-rate: 20Mbit;
Синтаксис: gwg tc bw remove -id <class: id>
gwg tc bw remove -id 20
class: 20
description: demo;
min-rate: 20Mbit;
cail-rate: 20Mbit;
Removed successfully
gwg tc ft
- абстракция над tc filter
, позволяющая создавать правила фильтрации для классифицированного ранее трафика
Синтаксис: gwg tc ft add -d <описание> -c <class: id> -u <имя пользователя>
gwg tc ft add -d demo -c 2 -u test
filter: demo
user: 10.0.0.2/32;
class: 2;
Added successfully
Синтаксис: gwg tc ft show
gwg tc ft show
filter: demo
user: 10.0.0.2/32;
class: 2;
filter: demo2
user: 10.0.0.2/32;
class: 2;
Синтаксис: gwg tc ft remove -id <filter: id>
gwg tc ft remove -id demo2
filter: demo2
user: 10.0.0.2/32;
class: 2;
Removed successfully
После создания gwg tc bw
и gwg tc ft
необходимо перечитать конфигурацию: gwg tc service restart
.
gwg tc service show
Gwg tc service:
FullSpeed: 8Mbit
Speed: 5Mbit
Classes: [{2 regular 3Mbit 2Mbit}]
Filters: [{demo 10.0.0.2/32 2}]