Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pavelmilanov/gwg
Wireguard cli manager
https://github.com/pavelmilanov/gwg
golang vpn wireguard wireguard-vpn-setup
Last synced: 3 months ago
JSON representation
Wireguard cli manager
- Host: GitHub
- URL: https://github.com/pavelmilanov/gwg
- Owner: PavelMilanov
- License: mit
- Created: 2023-09-16T10:40:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-20T18:50:08.000Z (about 1 year ago)
- Last Synced: 2024-06-21T19:05:48.724Z (8 months ago)
- Topics: golang, vpn, wireguard, wireguard-vpn-setup
- Language: Go
- Homepage:
- Size: 12.5 MB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# gwg - менеджер Wireguard Server
---
## Для чего нужен
**gwg** - утилита командной строки для автоматического конфигурирования и администрирования wireguard-сервера.
Поддерживает такие фунции как:1) Автоматическая настройка конфигурации wireguard server;
2) Автоматическое изменение конфигурации сервера при добавлении пользователя;
3) Автоматическое изменение конфигурации сервера при удалении пользователя;
4) Автоматическое изменение конфигурации сервера при блокировке/разблокировке пользователя;
5) Просмотр состояния сервера через стандартную утилиту wg show;
6) Просмотр подробной статистики на основе стандартной утилиты wg show dump;
7) Создание общих правил для управления (ограничения скорости) входящим трафиком;
8) Создание правил для управления (ограничения скорости) входящим трафиком для каждого пользователя.## Поддерживаемые платформы
- Любой дистрибутив linux на основе Debian.
## Установка
- Скачать архив с [желаемой](https://github.com/PavelMilanov/gwg/releases) версией и поддерживаемой архитектурой:
```bash
wget https://github.com/PavelMilanov/gwg/releases/download/v0.2.6.2/gwg.linux_amd64.tar
```- Распаковать архив:
```bash
tar -C /usr/bin/ -xvf gwg.linux_amd64.tar
```- Запустить установку:
```bash
/usr/bin/gwg init
```## Обновление
- Распаковать архив:
```bash
rm /usr/bin/gwg && tar -C /usr/bin/ -xvf gwg.linux_amd64.tar
```## Базовое использование
### Просмотр общего функионала
- Синтаксис: `gwg -h`
```bash
gwg -h
Описание: gwg - cli-менеджер wireguard:gwg show - просмотр состояния wireguard-сервера.
gwg stat - просмотр подробной статистики wireguard-сервера.
gwg add - добавления пользователя.
gwg remove - удаление пользователя.
gwg block - блокировка пользователя.
gwg unblock - разблокировка пользователя.
gwg tc - модуль управления трафиком. (По-умолчанию выключен).
gwg ssp - режим прокси-сервера. (По-умолчанию выключен).Помощь: gwg -h
```### Просмотр состояния подключений
- Синтаксис: `gwg show`
```bash
gwg showinterface: wg0
public key: 9zsArCzVC7kBWtvSkF4HBxSGlOvFU0StZSNvrXwVbAM=
private key: (hidden)
listening port: 51830peer: 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`
```bash
gwg stat
1) User: test, Ip: 10.0.0.2/32 , Resieve: 659724, Sent: 9550044
```### Добавление пользователя
- Синтаксис: `gwg add -name `
```bash
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 `
```bash
gwg remove -name test2
___
[Peer]
# Name = test
PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
AllowedIPs = 10.0.0.2/32
```### Блокировка пользователя
- Синтаксис: `gwg block -name `
```bash
gwg block -name test
___
# [Peer]
# Name = test
# PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
# AllowedIPs = 10.0.0.2/32
```### Разблокировка пользователя
- Синтаксис: `gwg unblock -name `
```bash
gwg unblock -name test
___
[Peer]
# Name = test
PublicKey = 68upH1Bn0h1xy+Nuj61qtYRBGummuGBA2cU12xxbHiw=
AllowedIPs = 10.0.0.2/32
```## Модуль TC (Traffic Control)
___#### Просмотр фунционала модуля
```bash
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
```### tc service
```bash
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 <максимальная скорость>`
```bash
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
```![Изображение](./docs/images/default_rate.png)
#### Выключение модуля TC
Синтаксис: `gwg tc service down`
```bash
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`. Для применения изменений необходимо перезапустить службу```bash
gwg tc service restart
Tc config file generated successfully
Tc executable file generated successfully
Gwg tc service restarted
```#### Просмотр текущей конфигурации
Синтаксис: `gwg tc service restart`
```bash
Gwg tc service:
FullSpeed: 8Mbit
Speed: 5Mbit
Classes: []
Filters: []
```### Добавление правил
***Перед созданием правил ограничения трафика, необходимо создать саму полосу пропускания!***
### tc bw
`gwg tc bw` - абстракция над `tc class`, позволяющая создавать полосы пропускания
```bash
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 <макс. скорость>`
```bash
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`
```bash
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 `
```bash
gwg tc bw remove -id 20
class: 20
description: demo;
min-rate: 20Mbit;
cail-rate: 20Mbit;
Removed successfully
```### tc ft
`gwg tc ft` - абстракция над `tc filter`, позволяющая создавать правила фильтрации для классифицированного ранее трафика
#### Создание фильтра
Синтаксис: `gwg tc ft add -d <описание> -c -u <имя пользователя>`
```bash
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`
```bash
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 `
```bash
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`.
```bash
gwg tc service show
Gwg tc service:
FullSpeed: 8Mbit
Speed: 5Mbit
Classes: [{2 regular 3Mbit 2Mbit}]
Filters: [{demo 10.0.0.2/32 2}]
```![Изображение](./docs/images/custom_rate.png)