Portal WG VPN GitHub: установка, настройка и возможности веб-портала для WireGuard

Подробное руководство по Portal WG — веб-порталу для управления WireGuard. Установка из GitHub, настройка Docker, функции, режимы Split и Full Tunnel, сравнение с OpenVPN и IPsec.

Что такое Portal WG и зачем он нужен

Portal WG (WireGuard Portal) — это веб-интерфейс для управления сервером WireGuard. Он позволяет администраторам добавлять и отключать пользователей, генерировать конфигурации и QR-коды, отслеживать подключения без необходимости вручную редактировать конфигурационные файлы. Проект распространяется с открытым исходным кодом на GitHub (репозиторий h44z/wg-portal) и доступен в виде Docker-образа. Основная цель — упростить администрирование VPN на базе WireGuard, особенно в сценариях с большим числом клиентов или при необходимости интеграции с внешними системами аутентификации.

Portal WG использует библиотеку wgctrl для управления существующими интерфейсами WireGuard, что позволяет активировать или деактивировать пользователей без перезапуска всего VPN-сервера. Это ключевое отличие от многих других панелей, которые требуют перезагрузки сервиса при каждом изменении. Поддерживаются базы данных SQLite, MySQL, MsSQL и Postgres, а также аутентификация через OAuth, LDAP (Active Directory или OpenLDAP) и Passkey. Веб-интерфейс написан на Vue.js, поддерживает тёмную тему и несколько языков.

Установка Portal WG из GitHub и Docker

Самый простой способ развернуть Portal WG — использовать официальный Docker-образ из репозитория wgportal/wg-portal. Для production-среды рекомендуется указывать конкретную семантическую версию (например, v2.0.0), а не тег latest, который может быть нестабильным. Пример docker-compose.yml включает проброс сетевого режима host (для корректной работы WireGuard), монтирование каталогов /etc/wireguard, /app/data и /app/config, а также добавление capability NET_ADMIN.

После запуска контейнера веб-интерфейс по умолчанию доступен на порту 8888. Первичная настройка выполняется через YAML-конфигурационный файл, который должен располагаться по пути /app/config/config.yaml. В нём задаются учётные данные администратора, внешний URL, параметры логирования и другие опции. Для миграции с версии 1 на версию 2 требуется специальная процедура, описанная в документации на wgportal.org. Исходный код проекта доступен на GitHub, что позволяет при необходимости собрать бинарник самостоятельно.

Основные функции веб-портала

Portal WG предоставляет широкий набор возможностей для управления WireGuard:

  • Автоматическое назначение IP из пула сети, выделенной для клиента.
  • Генерация QR-кода для быстрой настройки мобильных устройств.
  • Отправка конфигурации по email с QR-кодом и файлом клиента.
  • Бесшовное включение/отключение клиентов без прерывания работы других пользователей.
  • Создание wg-quick конфигураций (wgX.conf) при необходимости.
  • Поддержка нескольких интерфейсов WireGuard на одном сервере.
  • Функция истечения срока действия пира (Peer Expiry) для временного доступа.
  • Управление маршрутами и DNS аналогично wg-quick.
  • Экспорт метрик Prometheus для мониторинга.
  • REST API для автоматизации и интеграции.
  • Вебхуки для выполнения пользовательских действий при обновлении пиров, интерфейсов или пользователей.

Эти функции делают Portal WG подходящим как для небольших домашних серверов, так и для корпоративных развёртываний с десятками и сотнями клиентов.

Режимы работы: Split Tunnel и Full Tunnel

При использовании Portal WG (как и любого VPN на базе WireGuard) можно настроить два основных режима маршрутизации трафика.

Split Tunnel (раздельное туннелирование) — через VPN направляется только трафик, предназначенный для определённых подсетей (например, корпоративная сеть, серверы, камеры видеонаблюдения). Весь остальной интернет-трафик идёт напрямую через обычное подключение пользователя. Этот режим экономит пропускную способность VPN-сервера и снижает задержки для обычного веб-сёрфинга.

Full Tunnel (полное туннелирование) — весь трафик устройства направляется через VPN-сервер. Это обеспечивает максимальную конфиденциальность, скрывает реальный IP-адрес пользователя и позволяет обходить региональные блокировки. Однако при этом возрастает нагрузка на сервер и может увеличиться задержка. Portal WG позволяет гибко настраивать маршруты через конфигурацию интерфейсов и клиентов.

Сравнение с OpenVPN и IPsec

WireGuard, лежащий в основе Portal WG, значительно отличается от традиционных VPN-протоколов.

  • Скорость: WireGuard работает быстрее OpenVPN и IPsec за счёт более лёгкого криптографического кода и меньшего количества накладных расходов. Тесты показывают прирост пропускной способности на 20-50% на одинаковом оборудовании.
  • Простота настройки: WireGuard использует всего несколько строк конфигурации, в то время как OpenVPN требует сложных сертификатов и директив. Portal WG ещё больше упрощает процесс, предоставляя веб-интерфейс.
  • Стабильность: WireGuard лучше работает через NAT и при частой смене IP-адресов (например, на мобильных устройствах). Он быстрее переустанавливает соединение после потери связи.
  • Современное шифрование: WireGuard использует только проверенные криптографические примитивы (ChaCha20, Poly1305, Curve25519), что снижает риск ошибок реализации.
  • Блокировка: Благодаря минималистичному протоколу WireGuard сложнее заблокировать глубоким анализом пакетов, чем OpenVPN, который часто использует известные порты.

Portal WG не генерирует и не применяет правила iptables/nftables автоматически — это остаётся на усмотрение администратора, что даёт больше гибкости, но требует дополнительных знаний.

Интеграция с внешними системами аутентификации

Одна из сильных сторон Portal WG — поддержка различных источников пользователей. Можно использовать:

  • Встроенную базу данных (SQLite, MySQL, MsSQL, Postgres) — простой вариант для небольших команд.
  • OAuth — интеграция с провайдерами вроде Google, GitHub или любыми другими, поддерживающими стандарт OAuth 2.0.
  • LDAP — подключение к Active Directory или OpenLDAP, что удобно для корпоративных сред, где уже существует централизованное управление учётными записями.
  • Passkey — поддержка аутентификации без пароля с использованием криптографических ключей.

Это позволяет администраторам не создавать отдельных учётных записей в Portal WG, а использовать существующую инфраструктуру. При каждом подключении пользователя Portal WG проверяет его учётные данные и автоматически назначает IP-адрес из пула.

Ограничения и что не входит в Portal WG

Разработчики чётко обозначают границы функциональности Portal WG:

  • Не генерирует и не применяет правила iptables/nftables. Администратор должен самостоятельно настроить межсетевой экран для маршрутизации трафика и NAT.
  • Поддерживает только Linux. Для Windows или macOS потребуется использовать другие инструменты или запускать Portal WG на отдельном Linux-сервере.
  • Не импортирует автоматически приватные ключи существующей установки WireGuard. Если вы переходите с ручной конфигурации, ключи нужно перенести вручную.
  • Версия 2 использует полностью новую схему базы данных и конфигурации, поэтому миграция с v1 требует отдельного процесса.

Эти ограничения важно учитывать при планировании развёртывания, особенно в production-среде.

Практические сценарии использования

Portal WG подходит для множества задач:

  • Удалённый доступ к серверам и оборудованию: инженеры могут подключаться к серверам, системам видеонаблюдения, СКУД и промышленным контроллерам через защищённый туннель.
  • Объединение сетей филиалов: офис, склад и удалённый объект могут работать как единая локальная сеть.
  • Безопасный интернет для сотрудников: при работе из дома или в публичных Wi-Fi сетях весь трафик шифруется.
  • Обход региональных блокировок: Full Tunnel режим позволяет получить доступ к заблокированным ресурсам, используя IP-адрес сервера.
  • Временный доступ для подрядчиков: функция истечения срока действия пира позволяет автоматически отключать доступ после завершения проекта.

Благодаря REST API и вебхукам Portal WG можно интегрировать с системами автоматизации, например, для автоматического создания клиентов при регистрации нового сотрудника в LDAP.

Вопросы безопасности и рекомендации

При использовании Portal WG важно соблюдать базовые меры безопасности:

  • Используйте HTTPS для веб-интерфейса, особенно если он доступен из интернета. Portal WG поддерживает настройку внешнего URL, но не предоставляет встроенного SSL-терминатора — рекомендуется использовать обратный прокси (Nginx, Caddy) с Let's Encrypt.
  • Ограничьте доступ к порту 8888 по IP-адресам с помощью файрвола, если панель не должна быть публичной.
  • Регулярно обновляйте Portal WG до последней стабильной версии, чтобы получать исправления безопасности.
  • Настройте резервное копирование базы данных и конфигурационных файлов (каталоги /app/data и /app/config).
  • Используйте сложные пароли для административной учётной записи и, по возможности, включите двухфакторную аутентификацию через OAuth или Passkey.
  • Мониторьте метрики Prometheus для обнаружения аномальной активности.

Portal WG сам по себе не добавляет уязвимостей в WireGuard, но неправильная конфигурация окружения (например, открытый порт панели без HTTPS) может стать точкой входа для злоумышленников.

Вопросы и ответы

Как установить Portal WG на сервер с помощью Docker?

Создайте файл docker-compose.yml с образом wgportal/wg-portal:v2, укажите network_mode: host, пробросьте volumes для /etc/wireguard, /app/data и /app/config, добавьте cap_add: NET_ADMIN. Запустите docker-compose up -d. Веб-интерфейс будет доступен на порту 8888. Подробнее — в документации на wgportal.org.

В чём разница между Split Tunnel и Full Tunnel в Portal WG?

Split Tunnel направляет через VPN только трафик к определённым подсетям (например, корпоративным ресурсам), а остальной интернет идёт напрямую. Full Tunnel пропускает весь трафик через VPN, скрывая IP пользователя и шифруя все данные. Выбор зависит от задач: Split Tunnel экономит пропускную способность, Full Tunnel обеспечивает максимальную конфиденциальность.

Можно ли использовать Portal WG с существующей установкой WireGuard?

Да, Portal WG может управлять уже существующими интерфейсами WireGuard. Он использует библиотеку wgctrl для чтения и изменения конфигурации. Однако приватные ключи нужно импортировать вручную — автоматический импорт не поддерживается. Убедитесь, что интерфейсы WireGuard уже настроены и работают.

Какие базы данных поддерживает Portal WG?

Portal WG поддерживает SQLite, MySQL, Microsoft SQL Server и PostgreSQL. Для небольших развёртываний достаточно SQLite, для корпоративных сред рекомендуется MySQL или PostgreSQL. Выбор базы данных указывается в YAML-конфигурации.

Как настроить аутентификацию через LDAP в Portal WG?

В конфигурационном файле config.yaml укажите источник пользователей как LDAP, задайте параметры подключения к серверу Active Directory или OpenLDAP, а также атрибуты для поиска пользователей. Portal WG будет проверять учётные данные при каждом входе. Подробные примеры — в официальной документации.

Поддерживает ли Portal WG IPv6?

Да, Portal WG полностью поддерживает IPv6. Вы можете назначать клиентам IPv6-адреса из пула, а также настраивать маршруты для IPv6-трафика. Это особенно важно для современных сетей и при развёртывании в средах с двойным стеком.

Какие альтернативы Portal WG существуют для управления WireGuard?

Среди популярных альтернатив: WG-Easy (простая панель на Node.js), Firezone (с поддержкой SSO и интеграцией с облаками), Netmaker (с автоматизацией mesh-сетей) и Subspace (с упором на масштабирование). Portal WG выделяется поддержкой LDAP, OAuth, REST API и вебхуков, что делает его гибким для корпоративных сценариев.