Скрипты для wireguard

—

от автора

Эти скрипты генерируют серверные и клиентские файлы конфигурации, а также 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)

но тогда маршруты придётся добавлять вручную.


ссылка на оригинал статьи https://habr.com/ru/articles/758654/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *