Как установить и настроить OpenVPN Server в Windows

OpenVPN это программный комплекс с открытым исходным кодом, который является одним из самых популярных и простых решений для реализации безопасной VPN. OpenVPN позволяет объединить сервер и клиентов (даже находящихся за NAT или брандмауэром) в единую сеть или соединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически во всех доступных операционных системах, включая Linux, Windows, MacOS и *BSD. Вы можете установить сервер OpenVPN на Windows Server 2022/20119/2016/2012R2 или даже на компьютер под управлением настольной версии Windows (Windows 10 или 11).

В этой статье мы покажем, как установить и настроить OpenVPN-сервер на компьютере под управлением Windows 10, установить OpenVPN-клиент на другом Windows-устройстве и установить безопасное VPN-соединение.

OpenVPN чрезвычайно популярен в сегменте SOHO для предоставления доступа удаленным сотрудникам: вам не нужно покупать специальное оборудование, лицензии, чтобы построить VPN-сервер на базе Windows Server, выставить RDP-порт в Интернет и легко защититься от атак грубой силы на RDP.

Как установить серверную службу OpenVPN на Windows

Загрузите установщик OpenVPN MSI для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это OpenVPN-2.5.7-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.7-I602-amd64.msi).

Запустите установку и выберите Служба OpenVPN установить. Если вы хотите, чтобы ваш сервер OpenVPN запускался автоматически, вы можете не устанавливать OpenVPN GUI.

Установка OpenVpn Server под Windowsустановка OpenVpn Server в Windows

OpenVPN 2.5 (и более новые версии) поддерживает WinTun драйвер от разработчиков WireGuard. Этот драйвер работает быстрее, чем стандартный драйвер TAP OpenVPN. Мы рекомендуем установить драйвер Wintun вместо TAP-Windows6.

Установите Скрипты управления сертификатами EasyRSA Утилита OpenSSL.

установите драйвер WinTun и инструменты EasyRSAустановка драйвера WinTun и инструментов EasyRSA

Завершите установку.

По умолчанию OpenVPN устанавливается в C:\Program Files\OpenVPN.

После завершения установки вы увидите новый сетевой адаптер Туннель пользовательского пространства Wintun. Этот адаптер отключается, если служба OpenVPN не запущена.

Сетевой адаптер OpentVPN туннель пользовательского пространства wintunСетевой адаптер OpentVPN wintun userspace tunnel

Создание ключей и сертификатов шифрования OpenVPN

OpenVPN основана на шифровании OpenSSL. Это означает, что для установления сетевого соединения между клиентом и VPN-сервером необходимо использовать ключи и сертификаты RSA3.

Откройте командную строку и перейдите в каталог easy-rsa:

cd "C:\Program Files\OpenVPN\easy-rsa"

Создайте копию файла:

copy vars.example vars

Откройте файл vars файл в любом текстовом редакторе. Проверьте пути к рабочим папкам OpenVPN и EaseRSA.

Обязательно отредактируйте переменную EASYRSA_TEMP_DIR, как показано ниже:

set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"

set_var EASYRSA_TEMP_DIR set_var EASYRSA_TEMP_DIR

Вы можете заполнить поля сертификата (необязательно):

set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "BY"
set_var EASYRSA_REQ_CITY "MUN"
set_var EASYRSA_REQ_ORG "WOSHUB-Com"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "IT dept"

Установите дату истечения срока действия сертификата:

set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 825

Сохраните файл и выполните команду:

EasyRSA-Start.bat

Все следующие команды должны быть запущены в оболочке EasyRSA:

Инициализировать 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

Затем создайте корневой ЦС:

./easyrsa build-ca

Введите пароль ЦС дважды:

CA creation is 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
ключ: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key

Подпишите запрос на выпуск сертификата сервера с помощью вашего центра сертификации:

./easyrsa sign-req server server

Подтвердите данные, набрав да.

Затем введите пароль корневого центра сертификации.

Файл server.crt появится в папке выдан папка (C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt).

сертификат сервера openvpn в папке issuedopenvpn server certifate fil в папке issued

Затем вы можете сгенерировать ключи Диффи-Хеллмана (это займет много времени):
./easyrsa gen-dh

easyrsa gen-dh генерировать ключи Диффи-Хеллмана easyrsa gen-dh генерировать ключи Диффи-Хеллмана

Чтобы обеспечить дополнительную защиту вашего VPN-сервера, рекомендуется включить tls-auth. Эта функция позволяет использовать HMAC-подписи в рукопожатии SSL/TLS, тем самым инициируя дополнительную проверку целостности. Пакеты без такой подписи будут отбрасываться VPN-сервером. Это защитит вас от сканирования портов VPN-сервера, DoS-атак, переполнения буфера SSL/TLS и т. д.

Сгенерируйте ключ tls-auth:

cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.key

[C:\Program Files\OpenVPN\bin\ta.key появится файл. Переместите его в C:\Program Files\OpenVPN\easy-rsa\pki папка.

Затем вы можете сгенерировать ключи для ваших клиентов OpenVPN. У каждого клиента, подключающегося к вашему VPN-серверу, должна быть своя пара ключей.

Существует несколько способов генерировать ключи OpenVPN и распространять их среди клиентов.

В примере ниже мы создадим клиентский ключ на сервере и защитим его паролем (PEM pass phrase):

./easyrsa gen-req testuser1
./easyrsa sign-req client testuser1

easyrsa sign certificare requesteasyrsa sign certificare request

Скопируйте файл ключа (C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key) на компьютер клиента сообщите пользователю пароль (голосом, по электронной почте, SMS). Клиент может отключить защиту ключа паролем:

openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1_use.key"

openssl rsa отключить PEM-парольopenssl rsa disable PEM pass phrase

Если вы хотите сгенерировать ключ, не защищенный паролем, выполните команду:

./easyrsa gen-req testuser2 nopass

Вы можете создать любое количество ключей и сертификатов для пользователей на вашем VPN-сервере. Аналогичным образом создайте ключи и сертификаты для других клиентов.

Вы можете отзывать скомпрометированные сертификаты клиентов:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke testuser2

Итак, мы сгенерировали набор ключей и сертификатов для сервера OpenVPN. Теперь вы можете настроить и запустить свою службу VPN.

Файл конфигурации сервера OpenVPN для Windows

Скопируйте шаблон файла конфигурации для сервера OpenVPN:

copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"

Откройте файл server.ovpn в любом текстовом редакторе и выполните настройки. Я использую следующую конфигурацию OpenVPN:

# Specify a port, a protocol and a device type
port 1194
proto udp
dev tun
# Specify paths to server certificates
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
# Specify the settings of the IP network your VPN clients will get their IP addresses from
server 10.24.1.0 255.255.255.0
# If you want to allow your clients to connect using the same key, enable the duplicate-cn option (not recommended)
# duplicate-cn
# TLS protection
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
# Other options
keepalive 20 60
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
mute 20
windows-driver wintun

Сохраните файл.

OpenVPN позволяет использовать как TCP, так и UDP протоколы. В данном примере мы запустили OpenVPN на UDP-порту 1194. Рекомендуется использовать UDP поскольку он оптимален как с точки зрения производительности, так и безопасности.

Не забудьте открыть порты в брандмауэре для указанного вами номера порта OpenVPN на клиенте и сервере. Вы можете открыть порт в Windows Defender с помощью PowerShell.
Правило брандмауэра для сервера OpenVPN:

New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow

Правило для клиента:

New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow

Затем запустите службу OpenVPN и измените тип ее запуска на автоматический. Используйте PowerShell для включения службы:

Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service

запуск службы OpenVPNService в Windowsзапуск службы OpenVPNService в Windows

Откройте диалоговое окно сетевых подключений (ncpa.cpl) и убедитесь, что виртуальный адаптер OpenVPN Wintun теперь включен. Если это не так, проверьте файл журнала C:\Program Files\OpenVPN\log\server.log.

Виртуальный адаптер OpenVPN Wintun в WindowsВиртуальный адаптер OpenVPN Wintun в Windows

Если при запуске OpenVPN вы видите в журнале следующую ошибку:

Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with…

Измените символ перевода строки на CRLF в Windows (в Notepad++ выберите Edit -> EOL Conversion -> Windows CR LF) в файле server.ovpn. Сохраните файл и перезапустите службу OpenVPNS.

Эта конфигурация OpenVPN позволяет удаленным клиентам получать доступ только к ресурсам сервера. Другие компьютеры и службы в локальной сети сервера недоступны для удаленных клиентов. Чтобы разрешить клиентам OpenVPN доступ к внутренней локальной сети, включите опцию IPEnableRouter параметр в реестре (включает IP-маршрутизацию в Windows, включая маршрутизацию между сетями Hyper-V, и позволяет использовать переадресацию портов):

reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /f

Добавьте маршруты к локальной IP-сети в файл конфигурации сервера:

push "route 10.24.1.0 255.255.255.0"
push "route 192.168.31.0 255.255.255.0"

При необходимости назначьте клиенту адреса DNS-серверов:

push "dhcp-option DNS 192.168.31.10"
push "dhcp-option DNS 192.168.31.11"

Если вы хотите перенаправлять все запросы клиента (включая интернет-трафик) на ваш OpenVPN-сервер, добавьте опцию:

push "redirect-gateway def1"

Эти опции описывают рассмотренные ранее случаи: Потеря подключения к Интернету после подключения к VPN и Отсутствие разрешения DNS при подключении к VPN.

Настройка клиента OpenVPN в Windows

Создайте шаблонный файл конфигурации VPN-клиента (на основе шаблона client.ovpn) на вашем сервере со следующими настройками (имя файла testuser1.ovpn):

client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert testuser1.crt
key testuser1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3
Укажите публичный IP-адрес или DNS-имя вашего OpenVPN-сервера в поле удаленный директива.

Скачать и установить OpenVPN Connect для Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).

установить OpenVPN Client Connect для Windows установить OpenVPN Client Connect для Windows

Затем скопируйте следующие файлы с вашего сервера на компьютер с установленным клиентом OpenVPN:

  • ca.crt
  • testuser1.crt
  • testuser1.key
  • dh.pem
  • ta.key
  • testuser1.ovpn

импорт файла конфигурации *.ovpn в OpenVPN Connect для Windows импорт файла *.ovpn config в OpenVPN Connect для Windows

Импорт *.ovpn файл профиля и попробуйте подключиться к вашему VPN-серверу.

Если вы все настроили правильно, вы увидите изображение ниже:

openvpn-клиент успешно подключился к серверуopenvpn клиент успешно подключился к серверу

Проверьте журнал соединений OpenVPN на клиенте: C:\Program Files\OpenVPN Connect\agent.log

Mon Jul 17 08:09:30 2022 proxy_auto_config_url
Mon Jul 17 08:09:31 2022 TUN SETUP
TAP ADAPTERS:
guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name="Local Area Connection"
Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED
TAP-Windows Driver Version 9.24
ActionDeleteAllRoutesOnInterface iface_index=22
netsh interface ip set interface 22 metric=1
Ok.
netsh interface ip set address 22 static 10.24.1.10 255.255.255.252 gateway=10.24.1.5 store=active
IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1

Клиент успешно подключился к VPN-серверу и получил IP-адрес 10.24.1.10.

Теперь проверьте журнал OpenVpn на стороне сервера (C:\Program Files\OpenVPN\log\openvpn.log). Здесь вы также можете увидеть, что клиент с testuser1 сертификат успешно подключился к серверу.

2022-07-17 08:09:35 192.168.13.20:55648 [tesuser1] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI_sva: pool returned IPv4=10.24.1.10, IPv6=(Not enabled)
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: Learn: 10.24.1.10 -> testuser1/192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: primary virtual IP for tesuser1/192.168.13.20:55648: 10.24.1.10

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *