Skip to content

Сделать генерацию конфигов Wireguard для участников #589

@jekhor

Description

@jekhor

Есть идея перевести VPN для доступа в сеть ХС с OpenVPN на WireGuard.
Для этого нужно решение по генерации конфигов, поскольку WG рассчитано на уникальность ключей и IP-адресов для каждого клиента. У каждого участника может быть несколько устройств, с которых он захочет иметь доступ в ХС, в том числе одновременно.

Возможный вариант:
В профиле пользователя есть список имеющихся конфигураций, пустой по дефолту. Рядом ссылка на инструкцию по настройке клиента под Windows/Linux/Mac.
Кнопка "Создать конфигурацию WG", по нажатию на неё:

  1. Генерируется пара закрытый-открытый ключ клиента.
  2. Выделяется IP адрес из пула и помечается в базе как выделенный (либо храним базу адресов, либо просто инкрементируемое поле с последним использованным адресом).
  3. Эти данные сохраняются в базу, пользователю показывается, что в список конфигураций добавилась новая.
  4. Закрытый ключ клиента и настройки IP-адреса сохраняются в базе для дальнейшего использования на VPN-сервере.
  5. VPN-сервер уведомляется об изменении конфигурации и экспортирует конфиг себе (либо делает это по крону раз в 10 минут).
  6. По нажатию на ссылку "скачать конфигурацию" генерируется клиентский конфиг, содержащий: открытый ключ сервера, закрытый ключ клиента, адрес сервера, настройки IP маршрутизации, keepalive.
  7. Пользователь скачивает конфиг, устанавливает его и запускает VPN.

VPN-сервер:
По крону обновляет конфигурацию клиентов с сайта. При этом сайт отдаёт конфиги только активных юзеров. Сервер синхронизирует локальную базу с базой сайта, добавляя-удаляя-редактируя записи у себя.

Открытые вопросы для обсуждения:

  • разрешать ли default route (доступ в интернет через ХС) или только доступ в сеть ХС? Если да, то опционально (галочка в свойствах конфигурации) или по дефолту?

  • можно ли с WG сделать, чтобы работал mDNS/Bonjour (доступ по именам устройств вида freddy.local)?
    Ответ: Можно, но нужно ставить mdns рефлектор на VPN сервере. В теории возможна маршрутизация multicast пакетов, но на практике сложна в настройке (нужна корректировка TTL и всё такое).

  • можно ли WG интерфейс сервера объединить в мост с ETH-интерфейсом, смотрящим в сеть ХС, и раздать клиентам IP из той же подсети, что и внутри ХС? И надо ли? Тогда не надо настраивать ничего на маршрутизаторе, зато усложняет настройку VPN-сервера. Сейчас OpenVPN сервер как раз работает в режиме ethernet-моста, клиент получает IP-адрес от основного DHCP-сервера ХС.
    Ответ: Можно использовать методику proxy arp, но на практике не нужно, проще раздать маршруты через DHCP и редиректить пакеты, всё равно пришедшие на default gateway, но адресованные узлам-клиентам WG, на собственно маршрутизаторе.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions