OpenVPN-сервер на Windows Server: установка и настройка
Встроенный RRAS в Windows Server умеет поднимать VPN, но это отдельный протокол PPTP/SSTP с собственными ограничениями и историей уязвимостей — не тот OpenVPN, инструкции для которого гуляют по интернету и который проверяют на прочность годами. Если нужен именно классический OpenVPN на Windows Server — тот же протокол, что и на Linux, с сертификатами и понятным конфигом, — ставится он отдельным пакетом Community Edition, а не через роль RRAS. Ниже — установка, генерация сертификатов через easy-rsa под Windows и запуск сервера как штатной службы, которая переживает перезагрузку.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Почему не RRAS
RRAS (Routing and Remote Access) — встроенная роль Windows Server, которая умеет поднимать VPN-подключения, но работает с протоколами PPTP, L2TP/IPsec и SSTP. PPTP давно считается небезопасным, L2TP/IPsec тяжелее в настройке из-за NAT и общих ключей, а SSTP хоть и завязан на TLS, но это собственный протокол Microsoft с не такой обкатанной клиентской поддержкой на не-Windows устройствах.
OpenVPN — другой протокол, реализованный поверх OpenSSL и собственного транспортного слоя: открытый код, независимый аудит, клиенты под все основные платформы, один формат конфигурации что на Linux, что на Windows. RRAS для его работы не нужен и не участвует — OpenVPN на Windows Server ставится как самостоятельное приложение со своим виртуальным адаптером (TAP или Wintun), в обход роли RRAS. Если сервер уже настроен под RRAS для других задач, конфликтов обычно нет: это независимые сетевые стеки, но два VPN-решения на одном сервере усложняют диагностику при проблемах с маршрутизацией.
Установка OpenVPN Community Edition
Официальный дистрибутив для Windows публикует сообщество OpenVPN на community-странице проекта — не путайте с коммерческим OpenVPN Access Server, это другой продукт с веб-панелью и лицензированием по числу подключений. Community Edition — бесплатный, с открытым исходным кодом, без ограничений на количество клиентов.
Порядок установки:
- Скачайте
.msi-инсталлятор с официальной страницы загрузок OpenVPN (community downloads), выбрав актуальную стабильную ветку под вашу разрядность Windows Server (2016, 2019, 2022, 2025 — все поддерживаются). - Запустите установщик от имени администратора.
- В списке компонентов оставьте отмеченными OpenVPN Service, драйвер сетевого адаптера (TAP-Windows6 или Wintun — на новых сборках предлагается Wintun, он быстрее и меньше нагружает CPU) и EasyRSA 3 Certificate Management Scripts — этот компонент понадобится для сертификатов на следующем шаге.
- Укажите путь установки — по умолчанию
C:\Program Files\OpenVPN. Внутри появятся подпапкиconfig,easy-rsa,bin,log. - Согласитесь на установку драйвера виртуального адаптера — без него сервер не сможет поднять туннель.
После установки в системе появляется служба OpenVPNService (пока остановленная — конфига ещё нет) и утилита OpenVPN GUI в системном трее для управления отдельными профилями. Для серверного сценария GUI не обязателен: сервер работает как служба, а GUI пригодится, только если с этой же машины подключаются как клиент к другому серверу.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверГенерация сертификатов через easy-rsa на Windows
OpenVPN аутентифицирует стороны через TLS-сертификаты: у сервера свой сертификат, у каждого клиента — свой, все подписаны одним центром сертификации (CA). Инсталлятор кладёт easy-rsa 3 в C:\Program Files\OpenVPN\easy-rsa, но версия под Windows работает не через .sh-скрипты, а через EasyRSA-Start.bat, который открывает специальную командную оболочку с уже настроенным окружением.
Запустите EasyRSA-Start.bat от имени администратора и выполните инициализацию PKI:
./easyrsa init-pki
./easyrsa build-ca nopass
Флаг nopass убирает пароль на приватный ключ CA — удобно для автоматизации, но означает, что файл ca.key нужно держать под жёсткими правами доступа и не копировать никуда, кроме как для резервной копии в защищённом месте. Дальше генерируется сертификат сервера и Diffie-Hellman параметры:
./easyrsa build-server-full server nopass
./easyrsa gen-dh
Генерация DH-параметров на Windows идёт заметно дольше, чем на Linux (нет аппаратного ускорения энтропии через /dev/urandom в привычном виде) — на слабом сервере процесс может занять несколько минут, это нормально, прерывать не нужно.
Для каждого клиента — своя пара:
./easyrsa build-client-full client1 nopass
Повторите команду с новым именем для каждого нового клиента (client2, client3 и так далее) — общий сертификат на несколько устройств использовать нельзя: отозвать доступ одному человеку, не трогая остальных, можно только если у каждого свой сертификат.
Готовые файлы остаются в easy-rsa/pki: ca.crt и ca.key — сертификат и ключ CA, issued/server.crt и private/server.key — пара сервера, issued/client1.crt и private/client1.key — пара клиента. Дополнительно сгенерируйте tls-crypt-ключ для защиты от DoS-сканирования порта и подмены пакетов:
openvpn --genkey secret ta.key
Файл ta.key копируется и на сервер, и каждому клиенту — в отличие от пары CA/сертификат, это общий симметричный ключ.
Конфигурация сервера
Скопируйте нужные файлы из pki в C:\Program Files\OpenVPN\config: ca.crt, server.crt, server.key, dh.pem, ta.key. Там же создайте файл server.ovpn (расширение важно — служба Windows подхватывает именно .ovpn, а не .conf, как на Linux):
port 1194
proto udp
dev tun
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\server.crt"
key "C:\\Program Files\\OpenVPN\\config\\server.key"
dh "C:\\Program Files\\OpenVPN\\config\\dh.pem"
tls-crypt "C:\\Program Files\\OpenVPN\\config\\ta.key"
server 10.8.0.0 255.255.255.0
topology subnet
keepalive 10 120
cipher AES-256-GCM
auth SHA256
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log-append "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
Пути в конфиге на Windows пишутся с двойными обратными слешами или в кавычках с одинарными — оба варианта рабочие, лишь бы путь не разрывался пробелом без кавычек (стандартный путь C:\Program Files\OpenVPN как раз содержит пробел). server 10.8.0.0 255.255.255.0 задаёт внутреннюю туннельную подсеть, topology subnet — современная схема адресации без деления на point-to-point пары, рекомендуемая для новых установок.
Если клиентам нужен доступ не только к самому серверу, а ко всей локальной сети за ним, добавьте маршрут и, при необходимости, редирект шлюза по умолчанию:
push "route 192.168.1.0 255.255.255.0"
; push "redirect-gateway def1 bypass-dhcp"
Вторая строка закомментирована намеренно: включайте её, только если действительно нужно заворачивать весь интернет-трафик клиента через сервер — иначе туннель молча заберёт себе весь исходящий трафик пользователя, включая обращения к сайтам, не имеющим отношения к серверу.
Запуск и автозапуск как службы Windows
Ключевая особенность серверного сценария на Windows: OpenVPN здесь не запускается вручную через GUI-иконку в трее (это режим клиента), а работает как штатная служба OpenVPNService, которая при старте сканирует папку config и поднимает туннель для каждого .ovpn-файла в ней. Служба стартует ещё до входа пользователя в систему — то, что нужно для сервера, который перезагружается без присутствия администратора рядом.
Запустить и проверить службу можно через services.msc либо из PowerShell от имени администратора:
Get-Service -Name "OpenVPNService"
Set-Service -Name "OpenVPNService" -StartupType Automatic
Start-Service -Name "OpenVPNService"
Если после старта служба сразу переходит в состояние Stopped — почти всегда проблема в самом server.ovpn: опечатка в пути к сертификату, лишний пробел или незакрытая кавычка. Подробный лог смотрите в C:\Program Files\OpenVPN\log\openvpn.log, там видна точная строка, на которой парсер конфига упал.
Для массового развёртывания на нескольких серверах установку и копирование конфигов можно выполнить через msiexec /i openvpn-install.msi /quiet и заранее подготовленный набор файлов — тогда после установки останется только Start-Service.
Открытие порта в Windows Firewall
По умолчанию Windows Firewall блокирует входящий трафик на нестандартные порты, поэтому без отдельного правила клиенты снаружи до сервера не достучатся, даже если сама служба OpenVPN работает исправно. Правило создаётся так же, как для любого другого UDP-сервиса:
New-NetFirewallRule -DisplayName "OpenVPN UDP 1194" `
-Direction Inbound -Protocol UDP -LocalPort 1194 -Action Allow
Если транспорт TCP (например, порт 443 для маскировки под обычный HTTPS-трафик в сетях со строгой фильтрацией), правило аналогичное, только протокол и порт другие. Общий подход к настройке фаервола под туннели на Windows Server — с примерами для нескольких сервисов сразу и разбором частых ошибок — в статье про настройку Windows Firewall для туннеля.
Отдельно проверьте правила на уровне облачного провайдера или хостера — Security Group или аналог часто блокирует порт ещё до того, как трафик доходит до Windows Firewall внутри виртуальной машины, и тогда локальное правило само по себе не поможет.
Клиентские конфиги и проверка подключения
Клиентский .ovpn-файл собирается из тех же материалов, что и серверный, но с обратными ролями и без server-директив:
client
dev tun
proto udp
remote ВАШ_IP_ИЛИ_ДОМЕН 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3
<ca>
... содержимое ca.crt ...
</ca>
<cert>
... содержимое client1.crt (только сама сертификатная часть между BEGIN/END CERTIFICATE) ...
</cert>
<key>
... содержимое client1.key ...
</key>
<tls-crypt>
... содержимое ta.key ...
</tls-crypt>
Такой файл со встроенными сертификатами (inline-формат) удобнее рассылать пользователям — один файл вместо пяти отдельных. Импортируется он в любой OpenVPN-клиент: OpenVPN GUI на Windows, OpenVPN Connect на macOS/iOS/Android, клиент на Linux.
После подключения проверьте, что туннель действительно поднялся:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*TAP*" -or $_.InterfaceDescription -like "*Wintun*"}
Test-Connection 10.8.0.1 -Count 4
Если пинг до внутреннего адреса сервера проходит, а в логе клиента есть строка Initialization Sequence Completed — туннель работает штатно. Частые ошибки на этом шаге — просроченный или неверно скопированный сертификат и несовпадение времени между клиентом и сервером — разобраны отдельно в статьях про ошибку аутентификации OpenVPN и про TLS handshake failed.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли поставить OpenVPN через роль RRAS в Windows Server?
Нет, RRAS работает с другими протоколами (PPTP, L2TP/IPsec, SSTP) и не имеет отношения к OpenVPN. OpenVPN Community Edition ставится отдельным .msi-пакетом и работает как самостоятельная служба, независимо от того, включена роль RRAS или нет.
Чем OpenVPN Community Edition отличается от OpenVPN Access Server?
Community Edition — бесплатный проект с открытым кодом, конфигурируется вручную через файлы. Access Server — коммерческий продукт с веб-панелью управления и лицензированием по числу одновременных подключений. Для одного сервера под свои задачи или задачи команды обычно достаточно бесплатной Community-версии.
TAP или Wintun — какой драйвер адаптера выбрать при установке?
Wintun современнее, быстрее и меньше нагружает CPU, его стоит выбирать на новых установках, если инсталлятор предлагает такой вариант. TAP-Windows6 — более старый драйвер, оставленный для совместимости со старыми клиентами и специфичными сценариями, где Wintun пока не поддерживается.
Почему служба OpenVPNService не видит мой конфиг?
Служба сканирует только папку C:\Program Files\OpenVPN\config и только файлы с расширением .ovpn — конфиг с расширением .conf или лежащий в другой директории она не подхватит. Переименуйте файл или переместите его в нужную папку и перезапустите службу.
Нужен ли отдельный сертификат каждому клиенту, или можно один на всех?
Нужен отдельный. Общий сертификат на несколько устройств технически заведётся, но лишает возможности отозвать доступ одному пользователю без пересборки всей PKI и переустановки сертификатов у всех остальных — при увольнении сотрудника или компрометации устройства это критично.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →