OpenVPN – это набор open source инструментов, который заслуженно является одним из самых популярных и легких решений для организации корпоративной защищенной VPN сети. OpenVPN позволяет объединить в общую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на любой операционной системе (пример настройки OpenVPN на Linux), включая обычные компьютеры с десктопными редакциями Windows 11 и 10, или на Windows Server.
Мы разворачиваем OpenVPN сервер в следующем окружении:
- Локальная сеть:
192.168.13.0/24 - IP адрес компьютера с Windows, на котором мы разворачиваем OpenVPN в локальной сети:
192.168.13.200 - IP подсеть для VPN:
10.24.1.0/24 - VPN порт и протокол:
UDP 1194 - Внешний IP адрес/DNS имя, к которому будут подключаться клиенты:
myvpn.winitpro.ru123.123.123.123
Подразумеваем, что у Windows хоста нет белого IP адреса. На внешнем (WAN) интерфейсе роутера нужно настроить правило NAT трансляции трафика с порта
123.123.123.123:1194/UDP
на IP адрес OpenVPN сервера в LAN
192.168.13.200:1194/UDP
Базовая схема и IP адрессация такой типовой реализации OpenVPN решения представлена ниже:

Прежде, чем приступать убедитесь, что вы можете настроить правило NAT трансляции на своем внешнем роутере и понимаете, что это значит. Если же на сетевом интерфейсе вашего Windows хоста назначен белый IP адрес, то конфигурация еще больше упрощается за счет прямого подключения.
Установка службы OpenVPN сервера в Windows
Для развертывания OpenVPN сервера вам понадобится компьютер с Windows 10/11 с редакцией Pro или Enterprise (установка на Home редакции также возможно, но с рядом ограничений) или полноценный хост с Windows Server 2019/2022/2025 (если вы хотите планируете использовать сложную конфигурация с множеством правил маршрутизации и NAT трансляции).
Скачайте MSI установщик OpenVPN Community Edition для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это версия OpenVPN-2.7.6-I001-amd64.msi (5.6 Мб). Установщик включает в себя и серверную и клиентские части.
Запустите установку. При выборе компонентов OpenVPN нужно обязательно установить:
- OpenVPN Service + документацию и скрипты
- Драйвер Data Channel Offload (оптимальный драйвер для Windows в версии OpenVPN 7 + )
- OpenSSL Utilities (включая East RSA 3 скрипты)
Отключите установку компонентов OpenVPN GUI (это VPN клиент, который не нужен нам на сервере). Откажитесь от установки драйвера TAP-Windows6.

ovpn-dco-win
), обрабатывающего трафика в ядре Windows. TAP-Windows6 еще более старый тип сетевого адаптера OpenVPN и рекомендуется к использованию только в целях совместимости).Запустите установку.
C:\Program Files\OpenVPN
.После окончания установки в панели управления адаптерами
ncpa.cpl
появится новый сетевой адаптер типа OpenVPN Data Channel Offload. Этот адаптер отключен, если служба OpenVPN не запущена.

Создаем ключи шифрования и сертификаты для OpenVPN
В OpenVPN для реализации криптографических функций и обмена ключами используется open-source библиотека OpenSSL. Это означает, что для обмена трафиком между клиентом и сервером VPN нужно сгенерировать ключи и сертификаты с использованием RSA3. Скрипты Easy-RSA используются для создания вашей локальной инфраструктуры открытых ключей (PKI), включая центр сертификации, сертификаты сервера, клиента и их ключей.
Откройте командную строку и перейдите в каталог easy-rsa:
cd "C:\Program Files\OpenVPN\easy-rsa"
В файле vars можно задать глобальные переменные окружения PKI EasyRSA (опционально, можно пропустить этот шаг). Для этого, создайте копию файла:
copy vars.example vars
После этого можете отредактировать vars с помощью любого текстового редактора и изменить настройки. Например, я раскомментирую и заполню информационные поля DN для сертификатов (опционально):
set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-Company" set_var EASYRSA_REQ_EMAIL " admin@server.vpn.ru " set_var EASYRSA_REQ_OU " IT department "

Срок действия сертификатов задается с помощью:
#set_var EASYRSA_CA_EXPIRE 3650 #set_var EASYRSA_CERT_EXPIRE 825
Сохраните файл и выполните команду:
.\EasyRSA-Start.bat
Следующие команды выполняются в оболочке EasyRSA Shell:
Инициализация PKI:
./easyrsa init-pki
Должна появится надпись:
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki

openssl.exe
. В современных версиях OpenVPN он встроен в дистрибутив.Теперь нужно сгенерировать корневой CA:
./easyrsa build-ca
Задайте дважды пароль для CA:
CA creation complete and you may now import and sign cert requests.
Данная команда сформировала:
- Корневой сертификат центра сертификации:
C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt - Ключ центра сертификации
C:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key
Теперь нужно сгенерировать запрос сертификата и ключ для вашего сервера OpenVPN:
./easyrsa gen-req server nopass
Утилита сгенерирует два файла:
req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req key: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key
Подпишем запрос на выпуск сертификата сервера с помощью нашего CA:
./easyrsa sign-req server server
Подтвердите правильность данных, набрав yes.
Затем введите пароль CA от корневого CA.
В каталоге issued появится сертификат сервера (
C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt
)

Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./easyrsa gen-dh

В OpenVPN (2.6/2.7) для дополнительной защиты управляющего TLS-трафика можно включать опцию tls-crypt (ранее использовалась опция tls-auth). Для этого нужно сгенерировать дополнительный ключ командой (в обычной командной строке):
cd "C:\Program Files\OpenVPN\bin"
./openvpn --genkey secret tc.key
Должен появиться файл
C:\Program Files\OpenVPN\bin\tc.key
Теперь можно сформировать ключи для клиентов OpenVPN. Для каждого клиента, который будет подключаться к вашему серверу нужно создать собственные ключи.
Есть несколько способов генерации ключей и передачи их клиентам. В следующем примере, мы сгенерируем и подпишем ключ клиента с именем kbuldogov и защитим его паролем:
./easyrsa build-client-full kbuldogov

Данный ключ (
C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key
) нужно передать клиенту и сообщить пароль. Клиент может снять защиту паролем для ключа:
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov_use.key"

Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:
./easyrsa gen-req kbuldogov nopass
На сервере с OpenVPN вы можете создать неограниченное количество ключей и сертификатов для пользователей. Аналогичным образом сформируйте ключи и сертификаты для других клиентов.
Итак, мы сгенерировали набор ключей и сертификатов для OpenVPN сервера и одного клиента. Теперь можно настроить и запустить службу OpenVPN.
Конфигурационный файл OpenVPN сервера в Windows
Настройки OpenVPN сервера хранятся в конфигурационном файле C:\Program Files\OpenVPN\config-auto\server.ovpn . Можно создать новый чистый тестовый файл с этим именем, а можно скопировать готовый шаблон конфигурационного файл OpenVPN сервера:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"
Скопируйте в каталог с конфигурацией сервера (
C:\Program Files\OpenVPN\config-auto
) следующие файлы ключей и сертификатов:
- ca.crt из C:\Program Files\OpenVPN\easy-rsa\pki
- dh.pem из C:\Program Files\OpenVPN\easy-rsa\pki
- server.crt из C:\Program Files\OpenVPN\easy-rsa\pki\issued
- server.key из C:\Program Files\OpenVPN\easy-rsa\pki\private
- tc.key из C:\Program Files\OpenVPN\bin\
Откройте файл server.ovpn в любом текстовом редакторе и внесите свои настройки. Пример начального конфига для OpenVPN:
# Указываем порт, протокол и устройство port 1194 proto udp dev tun # Сертификаты и ключи сервера ca ca.crt cert server.crt key server.key dh dh.pem # TLS защита tls-crypt tc.key # Указываем настройки IP сети (пул IP адресов), адреса из которой будет будут получать VPN клиенты. В тестовом файле можно создать резервации DHCP адресов для клиентов server 10.24.1.0 255.255.255.0 ifconfig-pool-persist ipp.txt #если нужно разрешить клиентам подключаться под одним ключом, нужно включить опцию duplicate-cn (не рекомендуется) #duplicate-cn # Настройки криптографии (только современные шифры): data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305 data-ciphers-fallback AES-256-GCM # Отключение неактивных клиентов keepalive 10 120 persist-key persist-tun # логи log-append server.log status openvpn-status.log verb 3 mute 20
Сохраните файл.
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:/Program Files/OpenVPN/easy-rsa/pki/issued/server.crt"
Не забудьте на сервере открыть на файерволе порты для указанного вами порта OpenVPN Можно открыть порты в Windows Defender с помощью PowerShell.
Правило для сервера:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow
Также, чтобы OpenVPN клиенты могли проверять доступность Windows сервера по ICMP:
Set-NetFirewallRule -Name CoreNet-Diag-ICMP4-EchoRequest-In -enabled True -RemoteAddress 10.24.1.0/24
Теперь нужно запустить службу OpenVPN и изменить тип ее запуска на автоматический. Воспользуйтесь таким командами PowerShell, чтобы включить службу:
Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service

Откройте панель управления, и убедитесь, что виртуальный сетевой адаптер OpenVPN Data Channel Offload теперь активен. Если нет, смотрите лог
C:\Program Files\OpenVPN\log\server.log
.

Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with..
Смените в файле server.ovpn символы переноса строки на Windows CRLF (в notepad++ нужно выбрать Edit -> EOL Conversion -> Windows CR LF). Сохраните файл, перезапустите службу OpevVPNService.
Разрешаем маршрутизацию и NAT через OpenVPN
Рассмотренный выше конфиг позволит удаленным клиентам получить доступ только к самому серверу OpenVPN и запущенным на нем службам, но другие компьютеры и сервисы в локальной сети сервера для них недоступны. Чтобы разрешить клиентам OpenVPN получить доступ ко всей внутренней сети, в которой расположен сервер и другим подсетям, доступных через него, нужно добавить в конфигурационный файл сервера OpenVPN (
server.ovpn
) маршруты до внутренних IP сети, которые должны быть доступны клиентам OpenVPN. Эти правила будут добавлены в таблицу маршрутизации клиента при подключении.
push "route 10.24.1.0 255.255.255.0" push "route 192.168.13.0 255.255.255.0"
Можно назначить клиенту адреса DNS серверов для разрешения имен в сети OpenVPN:
push "dhcp-option DNS 192.168.100.11" push "dhcp-option DNS 192.168.100.12"
Если нужно завернуть все запросы клиента (в том числе интернет-трафик) на ваш OpenVPN сервер, добавьте опцию:
push "redirect-gateway def1"
В этом случае весь трафик клиента будет идти через OpenVPN сервер (при доступе к Интернету на клиенте весь трафик будет заворачиваться на сервер).
Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V):
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f
Разрешаем пересылку пакетов между сетями:
Set-NetIPInterface -Forwarding Enabled
Теперь нужно включить NAT маскарадинг на Windows хосте, где запущен OpenVPN сервер. Это нужно, чтобы Windows подменял адреса VPN клиентов (10.24.1.X) на свой собственный физический IP из локальной сети. Чтобы создать правило маскировки для нашей VPN сети, выполните команду:
New-NetNat -Name "OpenVPN-NAT" -InternalIPInterfaceAddressPrefix "10.24.1.0/24"

Если в качестве OpenVPN сервера у вас используется хост с Windows Server, то для более гибкой маршрутизации трафика и настройки правил NAT можно использовать роль Routing and Remote Access (RRAS). Включите роль в Windows Server с помощью PowerShell:
Install-WindowsFeature -Name Routing -IncludeManagementTools
Откройте консоль управления
rrasmgmt.msc
, создайте новую Custom configuration с поддержкой NAT и LAN routing.

Запустите службу, затем перейдите в IPv4 -> NAT и добавьте новое правило в конфигурацию. Добавьте интерфейс локальной сети (LAN) и в его свойствах включите опции Public interface connected to the Internet и Enable NAT on this interface.

Настройка OpenVPN клиента в Windows
Теперь рассмотрим, как настроить OpenVPN клиент на Windows. Начнем с установки клиента OpenVPN, который устанавливается из того же самого дистрибутива, из которого мы разворачивали сервер.
При установке из MSI файла
OpenVPN-2.7.6-I001-amd64.msi
нужно выбрать только OpenVPN Gui+ и сетевой драйвер. Отключите установку службы OpenVPN и утилит OpenSSL, на клиенте они не нужны.

Также можно установить клиент OpenVPN в Windows с помощью встроенного пакетного менеджера WinGet:
winget install OpenVPNTechnologies.OpenVPN

Конфигурационный файл OpenVPN клиента можно хранить в профиле текущего пользователя (
C:\Users\username\OpenVPN\config
) или в каталоге
C:\Program Files\OpenVPN\config\
(в этом случае настроенное VPN подключение будет доступно всем пользователям Windows)
Скопируйте с OpenVPN сервера на клиента следующие ключи и сертификаты и поместите их в один из указанных выше каталогов:
- ca.crt (корневой сертификат сервера) из C:\Program Files\OpenVPN\easy-rsa\pki
- kbuldogov.crt (сертификат клиента) из C:\Program Files\OpenVPN\easy-rsa\pki\issued
- kbuldogov.key (закрытый ключ клиента) из C:\Program Files\OpenVPN\easy-rsa\pki\private
- tc.key (секретный ключ TLS-шифрования) из C:\Program Files\OpenVPN\bin\
Создайте в этой же папке конфигурационный файла для клиента OpenVPN со следующими параметрами (имя файла kbuldovov.ovpn):
client dev tun proto udp remote myvpn.winitpro.ru 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert kbuldogov.crt key kbuldogov.key remote-cert-tls server tls-crypt tc.key data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305 data-ciphers-fallback AES-256-GCM connect-retry-max 25 verb 3
remote
указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.Ключи и сертификаты можно зашить в файл конфигурации OVPN, и не отдавать в виде отдельных файлов. Для откройте по очереди все файлы текстовым редакторам и их содержимое прямо в файл kbuldovov.ovpn внутрь специальных тегов:
# ca ca.crt # cert kbuldogov.crt # key kbuldogov.key # tls-crypt tc.key <ca> -----BEGIN CERTIFICATE----- ...содержимое файла ca.crt... -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- ...содержимое kbuldogov.crt -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- ...содержимое файла kbuldogov.key -----END PRIVATE KEY----- </key> <tls-crypt> -----BEGIN OpenVPN Static key V1----- ...содержимое файла tc.key... -----END OpenVPN Static key V1----- </tls-crypt>

Сохраните файл. Теперь можно подключиться к OpenVPN серверу. Щёлкните по значку OpenVPN GUI в трее и выберите Connect.

Если все настроено правильно, появится сообщение об успешном подключении и IP адресе из VPN диапазона, назначенном клиенту.

Откройте панель управления сетевыми адаптерами (
ncpa.cpl
) и проверьте что адаптер OpenVPN Data Channel Offload теперь активен.

Если что-то не работает, или появляются ошибки, логи OpenVPN клиента пишутся в файл
%userprofile%\OpenVPN\log\client.log
Отзыв сертификатов клиентов в OpenVPN
OpenVPN позволяет отзывать выпущенные сертификаты клиентов с помощью списка отзыва сертификатов (Certificate Revocation List, CRL). Это может понадобится если пользователь, для которого выпущен сертификат уволен из компании или сертификат был скомпрометирован.
По умолчанию файл, в котором хранится список отзыва сертификатов имеет ограниченный срок действия — 180 дней. Чтобы OpenVPN-сервер не перестал пускать клиентов после этого срока с ошибкой (CRL has expired), нужно сначала увеличить срок его действия:
cd "C:\Program Files\OpenVPN\easy-rsa"
EasyRSA-Start.bat
export EASYRSA_CRL_DAYS=3650
(или внести изменения в файл vars)
./easyrsa gen-crl

Выполните команду отзыва, указав имя клиента:
./easyrsa revoke myclient01
Обновите список отзыва сертификатов:
./easyrsa gen-crl
Скопируйте файл
C:\Program Files\OpenVPN\easy-rsa\pki\crl.pem
в директорию с конфигурацией OpenVPN сервер (
C:\Program Files\OpenVPN\config-auto\
).
Добавьте в конец файла server.ovpn строку:
crl-verify crl.pem

Перезапустите службу OpenVPN Service. Теперь пользователь с отозванным сертификатом не сможет подключиться к серверу.
