Что такое 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 и вебхуков, что делает его гибким для корпоративных сценариев.