Эти скрипты генерируют серверные и клиентские файлы конфигурации, а также HTML файлы с QR кодом для настройки мобильных клиентов.
Написаны были довольно давно, когда я снова запутался в ключах при ручной настройке. Вдруг кому тоже пригодятся. Возможно, есть более другие конфигураторы, но наличие собственного закрыло мои потребности в расширении кругозора. Впрочем, где-то видел нечто для организации защищённой локалки на wireguard, но ссылку тогда не сохранил, а теперь никак не могу найти.
Как пользоваться
Скачиваем любым удобным способом отсюда
Устанавливаем питоновские
pyyaml
иqrcode
Переходим в каталог
wgman
Создаём подкаталог с именем сервера и копируем туда файл
config.yaml.sample
:
$ mkdir sample-server
$ cp config.yaml.sample sample-server/config.yaml
Редактируем файл конфигурации. Он достаточно простой:
subnet: 10.10.0.0
subnet_bits: 24
server_private_address: 10.10.0.1
client_address_start: 2
server_public_address: 1.2.3.4
server_port: 443
use_preshared_key: true
default_route: true
dns: 1.1.1.1
Минимально необходимые настройки - это server_public_address
и server_port
. Все остальные настройки, как то: default_route
, dns
, use_preshared_key
- они глобальные, для всех клиентов. Это недостаток, но при необходимости можно либо поправить файл конфигурации перед созданием нового клиента, либо исправить сгенерированную конфигурацию. Правда, QR код просто так уже не исправить.
Итак, серверный каталог создан, config.yaml
готов, - пора создать серверную конфигурацию:
$ ./create-server sample-server
Вот что имеем в результате:
$ ls sample-server/
config.yaml private-key public-key wg0.conf
Файл wg0.conf
- это конфигурация для сервера. Кидаем её в /etc/wireguard
, лучше ссылкой, а потом, если вы невольный любитель systemd, как я, то:
$ systemctl enable wg-quick@wg0
Стартовать серверный интерфейс пока необязательно, всё равно конфигурация полупустая:
$ less sample-server/wg0.conf
[Interface]
PrivateKey = AAbwXXEFu/Hy1zncqri+dsTmZEdEpr5SwWlF0bdsdks= # server private key
ListenPort = 443
Address = 10.10.0.1
Нам надо создать клиентов. Парочку, для примера:
$ ./create-client sample-server client-one
$ ./create-client sample-server client-two
Теперь имеем:
$ ls sample-server/
client-one.conf client-two.conf config.yaml
client-one.html client-two.html ipaddr-map
client-one.preshared-key client-two.preshared-key private-key
client-one.private-key client-two.private-key public-key
client-one.public-key client-two.public-key wg0.conf
Серверная конфигурация теперь выглядит так:
[Interface]
PrivateKey = AAbwXXEFu/Hy1zncqri+dsTmZEdEpr5SwWlF0bdsdks= # server private key
ListenPort = 443
Address = 10.10.0.1
[Peer]
PublicKey = KcNIa1/Tbv43nWZ+GEXfmr+cNL951yoduX7ucwtB4FM= # client-two public key
AllowedIPs = 10.10.0.3/32 # client-two IP address
PresharedKey = f734D81tizY35ypm1urnUFlKhxMAKp1cCpanWfuuhSA=
[Peer]
PublicKey = yRrVT/Hgo4uOFejvSATHKRzAcAmpWKO0zw25j/lLDBA= # client-one public key
AllowedIPs = 10.10.0.2/32 # client-one IP address
PresharedKey = pzEP1x4b3g50AqzFiI9nsLAu+zUjjg+KcqjJuOO/jLU=
Пример сгенерированной клиентской конфигурации:
[Interface]
PrivateKey = oJs9Df5oWhqMiKOv/77SUTh6n16F5i2BqJW4bQ5/ZE8= # client private key
Address = 10.10.0.2/32
DNS = 1.1.1.1
[Peer]
Endpoint = 1.2.3.4:443
PublicKey = C/hqK9Bza7m13KSgpqykb2/IsXaw+W2I0ii5/9xOZXE= # server public key
PersistentKeepalive = 15 # we need this if we're behind a firewall
AllowedIPs = 0.0.0.0/0 # default route
PresharedKey = pzEP1x4b3g50AqzFiI9nsLAu+zUjjg+KcqjJuOO/jLU=
Собственно, всё. Не забываем рестартовать серверный интерфейс после добавления новых клиентов. Можно, конечно, и без рестарта:
$ wg syncconf wg0 <(wg-quick strip wg0)
но тогда маршруты придётся добавлять вручную.
ky0
Оно?
https://github.com/tonarino/innernet
amateur80lvl Автор
Точно! Спасибо!