Openvpn server для windows server

Установим и настроим OpenVPN сервер. На сервере используется операционная система Windows Server 2019.

OpenVPN — бесплатная реализация технологии виртуальной частной сети (VPN) для создания зашифрованных каналов связи между компьютерами типа точка-точка или сервер-клиенты за NAT и Firewall.

Установка OpenVPN Server

Скачиваем дистрибутив для установки OpenVPN:

Community Downloads

vpn

Прокручиваем вниз, выбираем стабильную версию. Я буду использовать версию 2.4.9.

Для операционной системы Windows доступны два пакета:

  • WINDOWS 7/8/8.1/SERVER 2012R2 INSTALLER (NSIS)
  • WINDOWS 10/SERVER 2016/SERVER 2019 INSTALLER (NSIS)

Для Windows Server 2019 подходит второй вариант, скачиваю.

vpn

Запускаем инсталлятор OpenVPN.

vpn

Открывается мастер установки. Next.

vpn

Принимаем лицензионное соглашение. I Agree.

vpn

Выбираем компоненты. Выделите EasyRSA 2 Certificate Management Scripts. Для сервера OpenVPN GUI можно не устанавливать, если вы планируете запускать OpenVPN в качестве службы. Next.

vpn

Выбираем путь установки, я оставляю по умолчанию C:\Program Files\OpenVPN. Install.

vpn

Начинается процесс установки OpenVPN.

vpn

Установка успешно завершена. Next.

vpn

Finish.

vpn

Установка выполнена в директорию C:\Program Files\OpenVPN.

vpn

После установки у нас появляется новый сетевой адаптер TAP-Windows Adapter V9.

vpn

Адаптер отключён. Если по каким-то причинам нужно добавить несколько таких адаптеров, то загляните в папку C:\Program Files\TAP-Windows\bin.

vpn

Здесь есть скрипты для установки адаптера, добавления адаптера и удаления всех адаптеров.

vpn

Пример установки адаптера. В командной строке под администратором:

cd "C:\Program Files\TAP-Windows\bin"
"C:\Program Files\TAP-Windows\bin\tapinstall.exe" install "C:\Program Files\TAP-Windows\driver\OemVista.inf" tap0901

В большинстве случаев дополнительно настраивать сетевой адаптер не требуется.

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

Запускаем командную строку под администратором и переходим в рабочую директорию C:\Program Files\OpenVPN\easy-rsa.

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

В этой папке есть всё необходимое для генерации сертификатов.

vpn

Выполняем:

init-config.bat
copy vars.bat.sample vars.bat

Создаётся файл vars.bat с настройками и примером готовых параметров для создания CSR запроса сертификатов. Заполним его. Открываем vars.bat блокнотом.

notepad vars.bat

vpn

Открывается vars.bat.

vpn

Здесь стоит обратить внимание на пути к рабочим директориям. Например, вы можете указать свой путь к openssl.exe, если установили OpenVPN в другую директорию. Здесь же можно изменить длину ключей шифрования.

vpn

Заполняем переменные в нижней части файла, указываем:

  • KEY_COUNTRY — страна
  • KEY_PROVINCE — область
  • KEY_CITY — город
  • KEY_ORG — организация
  • KEY_EMAIL — e-mail
  • KEY_CN — (Common Name) имя сервера
  • KEY_NAME — (Name) имя сервера
  • KEY_OU — (Organization Unit) отдел
  • PKCS11_MODULE_PATH — для токенов двухфакторной аутентификации, нам не требуется, укажу имя сервера
  • PKC11_PIN — ПИН для токенов двухфакторной аутентификации, нам не требуется, укажу 1234

Для каждого сертификата нужно будет указывать свои NAME и COMMON NAME, можно их не указывать в vars.bat, потому как при генерации все параметры будут запрашивать.

Обращаем внимание на строку:

set KEY_KONFIG=openssl-1.0.0.cnf

Это имя конфигурационного файла. Находим его в рабочей директории.

vpn

Откроем блокнотом.

vpn

Внутри есть параметр default_days, в котором можно указать срок действия будущих сертификатов. По умолчанию у меня стоит 3650 дней, это 10 лет. Меня устраивает. Вероятно, кому-то при генерации клиентских сертификатов может понадобиться уменьшить этот срок.

Сохраняем все изменения и возвращаемся к командной строке. Подгружаем утверждённые нами переменные:

vars.bat

vpn

Очищаем директорию с ключами:

clean-all.bat

vpn

Сертификаты, которые мы будем создавать, появятся в папке C:\Program Files\OpenVPN\easy-rsa\keys. Сейчас эта папка очистилась, в ней два файла: index.txt и serial.

vpn

Генерируем ключ и сертификат центра сертификации:

build-ca.bat

vpn

В процессе генерации сертификата нас будут спрашивать все те же параметры, которые мы указали в vars.bat. Если параметр нас устраивает (а он нас устраивает), просто нажимаем ввод и переходим к следующему вопросу. После завершения работы скрипта в папке C:\Program Files\OpenVPN\easy-rsa\keys появляется два файла:

  • ca.crt — сертификат центра сертификации
  • ca.key — ключ центра сертификации

Ключ секретный, никому не передавайте, он будет храниться на сервере.

vpn

Генерируем ключ Диффи-Хеллмана:

build-dh.bat

vpn

В папке C:\Program Files\OpenVPN\easy-rsa\keys появляется файл:

  • dh2048.pem

vpn

Генерируем ключ и сертификат сервера, назовём сервер именем «server«:

build-key-server.bat server

vpn

В процессе генерации серверного сертификата нас будут спрашивать те же параметры, которые мы указали в vars.bat. Если параметр нас устраивает (а он нас снова устраивает), просто нажимаем ввод и переходим к следующему вопросу. На вопрос Sign the certificate отвечаем y. На вопрос 1 out of 1 certificate requests certified, commit отвечаем y.

После завершения работы скрипта в папке C:\Program Files\OpenVPN\easy-rsa\keys появляется четыре файла:

  • 01.pem — не понадобится
  • server.crt — сертификат сервера
  • server.csr — запрос сертификата сервера, не понадобится
  • server.key — ключ сервера

Ключ секретный, никому не передавайте, он будет храниться на сервере.

vpn

Генерируем ключ и сертификат первого клиента. Для каждого клиента нужно указывать своё имя файла, Name и Common Name. Назовём первого клиента именем «client«:

build-key.bat client

vpn

В процессе генерации клиентского сертификата нас будут спрашивать те же параметры, которые мы указали в vars.bat. Нас устраивают все параметры кроме NAME и COMMON NAME, на них отвечаем client. Помним, что для другого клиента имя должно быть другим. На вопрос Sign the certificate отвечаем y. На вопрос 1 out of 1 certificate requests certified, commit отвечаем y.

После завершения работы скрипта в папке C:\Program Files\OpenVPN\easy-rsa\keys появляется четыре файла:

  • 02.pem — не понадобится
  • client.crt — сертификат первого клиента
  • client.csr — запрос сертификата первого клиента, не понадобится
  • client.key — ключ первого клиента

vpn

Для каждого нового клиента, который будет подключаться к серверу OpenVPN необходимо сгенерировать свой клиентский сертификат. Но это можно сделать позже, пока добьёмся подключения хотя бы одного клиента.

В настройках сервера можно потом включить настройку duplicate-cn, которая позволяет подключаться всем клиентам по одному общему сертификату, но это небезопасно и не рекомендуется. Используйте только в тестовых целях.

# Uncomment this directive if multiple clients
# might connect with the same certificate/key
# files or common names. This is recommended
# only for testing purposes. For production use,
# each client should have its own certificate/key
# pair.
#
# IF YOU HAVE NOT GENERATED INDIVIDUAL
# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
# EACH HAVING ITS OWN UNIQUE «COMMON NAME»,
# UNCOMMENT THIS LINE OUT.
;duplicate-cn

Я на сервере собираюсь использовать tls-auth для дополнительной проверки целостности, это обеспечит дополнительный уровень безопасности протокола SSL/TLS при создании соединения:

  • Сканирование прослушиваемых VPN-сервером портов
  • Инициация SSL/TLS-соединения несанкционированной машиной на раннем этапе
  • DoS-атаки и флуд на порты OpenVPN
  • Переполнение буфера SSL/TLS

При использовании tls-auth на клиенте не понадобится ключ Диффи-Хеллмана, но пусть будет. Генерируем ключ tls-auth:

openvpn --genkey --secret keys/ta.key

vpn

В папке C:\Program Files\OpenVPN\easy-rsa\keys появляется файл:

  • ta.key

vpn

Минимальный набор сертификатов сгенерирован.

Настройка OpenVPN сервера

Чтобы случайно всё не удалить, создадим папку C:\Program Files\OpenVPN\ssl и скопируем в неё сертификаты. Это будет рабочая папка сервера.

mkdir "C:\Program Files\OpenVPN\ssl"
copy "C:\Program Files\OpenVPN\easy-rsa\keys" "C:\Program Files\OpenVPN\ssl"

vpn

Создадим конфигурационный файл сервера C:\Program Files\OpenVPN\config\server.ovpn:

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

Открываем блокнотом и редактируем:

notepad "C:\Program Files\OpenVPN\config\server.ovpn"

Лучше изучить конфигурационный файл, я предлагаю свой вариант конфига:

port 1194
proto udp
dev tun
ca "C:\\Program Files\\OpenVPN\\ssl\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\ssl\\server.crt"
key "C:\\Program Files\\OpenVPN\\ssl\\server.key"  # This file should be kept secret
dh "C:\\Program Files\\OpenVPN\\ssl\\dh2048.pem"
server 10.8.0.0 255.255.255.0
tls-auth "C:\\Program Files\\OpenVPN\\ssl\\ta.key" 0 # This file is secret
keepalive 10 120
comp-lzo
persist-key
persist-tun
cipher AES-256-CBC
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 4
mute 20

Указываем параметры сервера, пути к ключам и сертификатам. Здесь же пути к логам. Для тестирования можно использовать tcp протокол:

proto tcp

Переходим к службам:

services.msc

vpn

Находим службу OpenVPNService.

vpn

Настраиваем на автоматический запуск при загрузке сервера.

vpn

Запускаем службу.

vpn

Согласно настройкам сервера в папке C:\Program Files\OpenVPN\log должны появиться логи. Это один из инструментов администратора OpenVPN сервера.

vpn

Активировался сетевой адаптер TAP-Windows Adapter V9.

vpn

Согласно настройкам сервера IP адрес 10.8.0.1.

vpn

Проверяем поднялся ли порт tcp 1194:

netstat -tan | find "1194"

Порт должен прослушиваться.

vpn

Теперь нужно настроить firewall. Открываем Windows Defender Firewall with Advanced Security.

vpn

Переходим в Inbound Rules.

vpn

Создаём правило — New Rule…

vpn

Тип правила — Port. Next.

vpn

Протоколы и порты — UDP 1194. Как в настройках сервера. Next.

vpn

Действия — Allow the connection. Next.

vpn

Для всех сетей. Next.

vpn

Указываем название правила — OpenVPN. Next.

Правило создано, теперь firewall не блокирует входящие UDP соединения на 1194 порту.

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

На компьютере клиента устанавливаем OpenVPN точно также как на сервер. Галку EasyRSA 2 Certificate Management Scripts не указываем. Галку OpenVPN GUI указываем.

vpn

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

Копируем в отдельную папку for_client (её содержимое отправим потом на компьютер клиента) на сервере файлы для клиента:

  • ca.crt
  • client.crt
  • client.key
  • dh2048.pem
  • ta.key

vpn

Туда же из папки C:\Program Files\OpenVPN\sample-config копируем client.ovpn

vpn

Переименовываю client.ovpn в config.ovpn. Можно использовать любое имя, лучше созвучное с названием организации. Вот такой получился набор.

vpn

Редактируем файл config.ovpn.

client
dev tun
proto udp
remote internet-lab.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\client.crt"
key "C:\\Program Files\\OpenVPN\\config\\client.key"
tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1
#dh "C:\\Program Files\\OpenVPN\\config\\dh2048.pem"
cipher AES-256-CBC
comp-lzo
verb 0
connect-retry-max 25

Здесь указываем пути к ключам и сертификатам клиента. Не забываем про адрес и порт сервера, куда подключаться, для примера я указал internet-lab.ru UDP 1194.

Отправляем подготовленные файлы на компьютер клиента и копируем в C:\Program Files\OpenVPN\config.

vpn

На клиента запускаем OpenVPN GUI.

vpn

В трее появляется значок OpenVPN.

vpn

Правой кнопкой — подключиться.

vpn

Устанавливается соединение.

vpn

Значок позеленел, назначен адрес 10.8.0.6.

vpn

Можно подключаться к серверу, если есть доступы.

vpn

Для второго и последующего клиента генерируем свой набор клиентских сертификатов.

vpn

Отзыв сертификата

Иногда нужно отозвать сертификат, выданный клиенту. Кто-то увольняется, кто-то палит сертификаты.

cd "C:\Program Files\OpenVPN\easy-rsa"
vars.bat
revoke-full client

Где client — это имя клиента.

В папке C:\Program Files\OpenVPN\keys появляется файл:

  • crl.pem

Копируем его с заменой в рабочую директорию сервера C:\Program Files\OpenVPN\ssl.

Добавляем строчку в конфигурационный файл сервера:

crl-verify "C:\\Program Files\\OpenVPN\\keys\\crl.pem"  

Перезапускаем службу OpenVPN сервера.

net stop OpenVPNService
net start OpenVPNService

Если в конфигурационном файле уже был ранее указан путь к crl.pem, то службу можно не перезапускать, OpenVPN перечитывает CRL один раз в час. Но в течении этого часа клиенты с отозванными сертификатами смогут продолжать подключаться и работать.

Для клиента с отозванным сертификатом процесс подключения будет «зависать». В логе можно увидеть:

TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed

Чтобы клиент не стучался постоянно на сервер, у него в конфиге есть опция:

connect-retry-max 25

Передать эту опцию при отзыве сертификата нельзя, поэтому указывайте её всем клиентам заранее.

Ссылки

OpenVPN 2.5.1 сервер на Windows

OpenVPN – это набор open source программ, который заслуженно является одним из самых популярных и легких решений для реализации защищенной VPN сети. OpenVPN позволяет объединить в единую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на всех доступных операционных системах (пример настройки OpenVPN на Linux). Вы можете установить OpenVPN сервер даже на обычный компьютер с десктопной редакцией Windows 10.

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

Содержание:

  • Установка службы OpenVPN сервера в Windows
  • Создаем ключи шифрования и сертификаты для OpenVPN
  • Конфигурационный файл OpenVPN сервера в Windows
  • Настройка OpenVPN клиента в Windows

Установка службы OpenVPN сервера в Windows

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

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

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

установка openvpn сервера в windows 10

Начиная с версии OpenVPN 2.5, поддерживается драйвер WinTun от разработчиков WireGuard. Считается, что этот драйвер работает быстрее чем классический OpenVPN драйвер TAP. Установите драйвер Wintun, откажитесь от установки TAP-Windows6.

Установите OpenSSL утилиту EasyRSA Certificate Management Scripts.

WinTun драйвер openvpn

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

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

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

сетевой адаптер Wintun Userspace Tunnel

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

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

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

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

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

copy vars.example vars

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

Обязательно поправьте переменную EASYRSA_TEMP_DIR следующим образом:

set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"

EASYRSA_TEMP_DIR

Можете заполнить поля для сертификатов (опционально)

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 " [email protected] "
set_var EASYRSA_REQ_OU " IT department "

конфигурационный файл vars при установке сертфикатов easyrsa

Срок действия сертификатов задается с помощью:

#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

Теперь нужно сгенерировать корневой 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»)

сертификат сервера openvpn

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

Для дополнительной защиты VPN сервера желательно включить tls-auth. Данная технология позволяет использовать подписи HMAC к handshake-пакетам 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. Для каждого клиента, который будет подключаться к вашему серверу нужно создать собственные ключи.

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

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

пароль для защиты ключа клиента easyrsa

Данный ключ («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 имяклиента nopass

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

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

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

Конфигурационный файл OpenVPN сервера в Windows

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

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

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

# Указываем порт, протокол и устройство
port 1194
proto udp
dev tun
# Указываем пути к сертификатам сервера
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"
# Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты
server 10.24.1.0 255.255.255.0
#если нужно разрешить клиентам подключаться под одним ключом, нужвно включить опцию duplicate-cn (не рекомендуется)
#duplicate-cn
# TLS защита
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
# Другая параметры
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 на 1194 UDP. Рекомендуется использовать протокол UDP, это оптимально как с точки зрения производительности, так и безопасности.

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

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

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

сетевой адаптер openvpn wintun

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

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.

Данный конфиг позволит удаленным клиентам получить доступ только к серверу, но другие компьютеры и сервисы в локальной сети сервера для них недоступны. Чтобы разрешить клиентам OpenVPN получить доступ к внутренней сети нужно:

Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V): reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /v IPEnableRouter /t REG_DWORD /d 1 /f

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

push "route 10.24.1.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"

Если нужно, назначьте клиенту адреса DNS серверов:

push "dhcp-option DNS 192.168.100.11"
push "dhcp-option DNS 192.168.100.12"

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

push "redirect-gateway def1"

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

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

client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert kbuldogov.crt
key kbuldogov.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3

В директиве remote указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.

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

установка openvpn connect в windows

Теперь на компьютер с клиентом OpenVPN нужно с сервера скопировать файлы:

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

импорт конфигурации клиента ovpn в openvpn клиент

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

Если все настроено правильно, появится такая картинка. подключение к openvpn установлено

Проверьте теперь лог OpenVPN на клиенте «C:\Program Files\OpenVPN Connect\agent.log»

Mon Dec 27 08:09:30 2021 proxy_auto_config_url
Mon Dec 27 08:09:31 2021 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.6 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

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

Проверьте теперь лог на сервере («C:\Program Files\OpenVPN\log\openvpn.log»). Здесь также видно, что клиент с сертификатом kbuldogov успешно подключится к вашему серверу.

2021-12-27 08:09:35 192.168.13.202:55648 [kbuldogov] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.202:55648
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI_sva: pool returned IPv4=10.24.1.6, IPv6=(Not enabled)
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: Learn: 10.24.1.6 -> kbuldogov/192.168.13.202:55648
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: primary virtual IP for kbuldogov/192.168.13.202:55648: 10.24.1.6

We will see here how to set up a OpenVPN server under Microsoft Windows Server.

This is a continuation of the previous «How To» that I wrote here but with Windows 2019 (which doesn’t change much) and the addition of setting up routing to be able to access LAN from our remote client.

OpenVPN is a very powerfull VPN which has several advantages : it is free, compatible with most operating systems, easy to implement and highly configurable.

1. Network diagram

2. OpenVPN Server

  • OpenVPN Server Properties :
    • OS : Windows Server 2019
    • Role : OpenVPN Server
    • IP : 192.168.0.254

2.1. Prerequisites

2.1.1. OpenSSL

OpenSSL Logo

In order to create the connection certificates, we will have to install OpenSSL software library. I personnaly use the slproweb.com packages.

2.1.1.1. Download OpenSSL

Download the latest OpenSSL Light version.slproweb website Download OpenSSL

2.1.1.2. Install OpenSSL
  • Accept the agreement :

OpenSSL installation | License agreement

  • Select destination location :

OpenSSL installation | Destination location

  • Select start menu folder :

OpenSSL installation | Select Start Menu Folder

  • Select OpenSSL binaries directory :

OpenSSL installation | OpenSSL DLLs location

  • Click to install :

OpenSSL installation | Ready to install

  • Click Finish to exit (and make a donation if you can 😊) :

OpenSSL installation | Donation to windows

2.1.1.3. Add OpenSSL in Environment Variables

We need to add OpenSSL inside the environment variables.

  • Run SystemPropertiesAdvanced to open System Properties :

Run SystemPropertiesAdvanced

  • Click Environment Variables… :

System Properties Window

  • Edit Path :

  • Click New and add %ProgramFiles%\OpenSSL-Win64\bin :

Edit environment variable

  • Open a new Windows command and check that you can run openssl command :

Windows Firewall

Windows Firewall logo

We need to open 1194 udp port to allow OpenVPN clients connections.

  • Use the Windows Firewall Management Console or this command inside a Administrator command line console to do that.
C:\Windows\system32>netsh advfirewall firewall add rule name="OpenVPN" dir=in localport=1194 remoteport=0-65535 protocol=UDP action=allow remoteip=any localip=any
  • Or with PowerShell :
PS C:\ > New-NetFirewallRule -DisplayName "OpenVPN" -Direction Inbound -Protocol UDP -LocalPort 1194 -Action Allow

2.2. Installing OpenVPN

Go to OpenVPN official website here to download last installer.

  • As we want to install OpenVPN as server we will choose Customize :

OpenVPN Windows Installer

  • We enable OpenVPN Service in order to make it work at boot :

OpenVPN Windows Installer

  • And we install EasyRsa in order to be able to create server and clients certificates :

OpenVPN Windows Installer

  • Once done click Close :

OpenVPN Windows Installer

2.3. Certificates

2.3.1. Setting up Certificate Authority (CA) and generating certificates and keys for server and clients

Here we will set up a pki to be able to create our server and clients certificates.

  • Open a Command Prompt :

Windows command run from windows start menu

  • And type the following commands to enter inside EasyRSA shell :
C:\Windows\system32>cd C:\Program Files\OpenVPN\easy-rsa
C:\Program Files\OpenVPN\easy-rsa>EasyRSA-Start.bat
  • Remove existing configuration, just for good measure :
# ./easyrsa clean-all
  • Initialize pki, and type yes to confirm :
# ./easyrsa init-pki

  • Build certificate authority :
# ./easyrsa build-ca nopass
[…]
Enter PEM pass phrase:MyPassW0rd
Verifying - Enter PEM pass phrase:MyPassW0rd
[…]
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:ovpn
  • Build server certificate and key :
# ./easyrsa build-server-full server nopass
[…]
Enter pass phrase for c:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key:MyPassW0rd
  • Generate Diffie Hellman parameters :
# ./easyrsa gen-dh
  • Generating client certificates :
# ./easyrsa build-client-full client01 nopass
[…]
Enter pass phrase for c:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key:MyPassW0rd

2.3.2. Move certificates to the correct folders

  • Put this files (from C:\Program Files\OpenVPN\easy-rsa\pkiC:\Program Files\OpenVPN\easy-rsa\pki\issued and C:\Program Files\OpenVPN\easy-rsa\pki\private) :
    • ca.crt
    • dh.pem
    • server.crt
    • server.key
  • To C:\Program Files\OpenVPN\config-auto and C:\Program Files\OpenVPN\config folders.

2.4. Configuration File

  • As administrator, edit C:\Program Files\OpenVPN\config-auto\server.ovpn file :
port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh.pem

server 10.50.8.0 255.255.255.0
ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key
persist-tun

status openvpn-status.log

verb 3

2.5. Restart OpenVPN Service

The OpenVPN service must be restarted for the configuration file to be taken into account.

  • From, services management console :

Windows Run, services.msc

  • Right click OpenVPNService then Restart :

Windows services management console, restart openvpnservice.

  • Or from an administrator Command Prompt :
C:\Windows\system32>net stop openvpnservice
C:\Windows\system32>net start openvpnservice
  • Or with PowerShell :
PS C:> Restart-Service OpenVPNService -PassThru

3. OpenVPN Client

  • OpenVPN Client :
    • OS : Windows 10
    • Role : OpenVPN Client

3.1. Installing OpenVPN

We will download the same package, and here install with default parameters.

3.2. Copy certificates from the Server

  • From the Server get the following files (from C:\Program Files\OpenVPN\easy-rsa\pkiC:\Program Files\OpenVPN\easy-rsa\pki\issued and C:\Program Files\OpenVPN\easy-rsa\pki\private) :
    • ca.crt
    • client01.crt
    • client01.key
  • And paste them to C:\Program Files\OpenVPN\config.

Windows 10, OpenVPN certificates.

3.3. Configuration File

  • Edit C:\Program Files\OpenVPN\config\client.ovpn file with administrator rights :
client

dev tun

proto udp

remote OPENVPN_IP 1194

resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert client01.crt
key client01.key

comp-lzo

verb 3

3.4. Establishing the connection

  • Run OpenVPN client as administrator :

Windows 10, OpenVPN certificates.

  • Establish the connection :

Windows 10, OpenVPN certificates.

  • A pop-up will confim that we are connected :

Windows 10, OpenVPN certificates.

3.5. Server Access

To join the server we will use the 10.50.8.1 IP AddressWindows 10, OpenVPN certificates.

⚠️ Troubleshooting : After a Windows Update, I couldn’t have access to the server share anymore (OpenVPN was able to connect though). To make it work again, I had to repair (available when relaunching setup program) the OpenVPN program on the server side.

4. Enabling Routing

At this point we have an operational OpenVPN server that is reachable from our remote client. But how to reach the server on its private ip (192.168.0.254 here) or other computers (192.168.0.200 here) on the local network? That’s what we will see here by enabling routing on our Windows OpenVPN server.

4.1 OpenVPN Server

4.1.1. Configuration File

  • As administrator, edit C:\Program Files\OpenVPN\config-auto\server.ovpn file and add push «route add 192.168.0.0 255.255.255.0» line to announce the network to the remote client :
port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh.pem

server 10.50.8.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.0.200"

keepalive 10 120

comp-lzo

persist-key
persist-tun

status openvpn-status.log

verb 3
  • Restart OpenVPNService, example here with PowerShell :
PS C:> Restart-Service OpenVPNService -PassThru

4.1.2 Installing Routing Feature

  • As administrator, open a PowerShell prompt and type this command to install routing functionality :
PS C:> Install-WindowsFeature -Name Routing -IncludeManagementTools

4.1.3 Configuring Routing

  • Open Routing and Remote Access Console by running rrasmgmt.msc :

Windows | run rrasmgmt.msc

  • Right click to your server name > Configure and Enable Routing and Remote Access :

  • Click Next :

Windows | Routing and remote access console, Welcome Wizard

  • Choose Custom configuration :

Windows | Routing and remote access console, Custom configuration

  • Select NAT and LAN routing :

Windows | Routing and remote access console, selecting NAT and LAN routing configuration

  • Finally, click Finish :

Windows | Routing and remote access console, Finish Wizard

  • Then Start service, at this point Remote Client should be able to ping LAN interface (192.168.0.254 here) :

Windows | Routing and remote access console, Start the service box

  • To be able to reach our entire LAN network we need to create NAT rule :

  • Select the LAN Network Interface (192.168.0.254 here) and click OK :

  • Select Public interface connected to the internet and check Enable NAT on this interface option before validating by clicking on OK :

Windows | Routing and remote access console, configuring NAT interface

4.2. OpenVPN Client

  • As administrator, open a command prompt and run route print command to check that the 192.168.0.0 route has correctly been pushed :

Windows | route print output

  • Check you can reach your network :

Windows | ping on two commands prompt

© https://std.rocks/vpn_openvpn_windows_server_2019.html

Время на прочтение
4 мин

Количество просмотров 461K

Openvpn — виртуальная частная сеть. С ее помощью мы можем:

  • Создать защищенный канал свзяи, в то время, когда мы сидим с бесплатного Wi-Fi в кафе.
  • Обмениваться файлами между участниками сети.
  • Раздавать интернет испульзуя общий шлюз.

Основные преимущества:

  • Простота настройки.
  • Безопасность.
  • Не требует дополнительного оборудования.
  • Высокая скорость и стабильность.

Как и автор статьи об установке OpenVPN на Linux, я не нашел нормальной статьи, да еще и такой, чтоб описывалось все до мелочей. В этой статье на Хабрахабре я постараюсь максимально доступно все объяснить. Итак, поехали!

Скачиваем дистрибутив.

На момент написания статьи доступная версия 2.3.2. Качаем отсюда Windows installer 32-х или 64-х битную версию под разрядность вашей операционной системы.

Установка.

При установке обязательно отметьте все пункты птичками, на предложение установить драйвер отвечаем утвердительно. В системе появится новый виртуальный сетевой адаптер.

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

Когда-то этот пункт меня останавливал, мол ну их эти ключи, пойду поищу что попроще. Но, увы, ничего лучшего не нашел. Итак, переходим в C:\Program files\OpenVPN\easy-rsa, запускаем init-config.bat, появится vars.bat, открываем его в блокноте. Нас интересуют строчки в самом низу, их нужно заполнить как угодно. Например:
set KEY_COUNTRY=RU
set KEY_PROVINCE=Baldur
set KEY_CITY=Piter
set KEY_ORG=OpenVPN
set KEY_EMAIL=my@sobaka.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=ouou

Там где написано server не трогаем. Сохранили.
Теперь открываем openssl-1.0.0.cnf и ищем строчку default_days 365, ставим 3650. Это продлит жизнь наших сертификатов на 10 лет. Сохраняем. Далее открываем командную строку в пуск-стандартные-командная строка (на Windows Vista/7/8 от имени администратора), пишем последовательно:

cd C:\OpenVPN\easy-rsa
vars
clean-all

В ответ должно написать два раза «Скопировано файлов: 1». Значит, все окей. В этом же окне набираем:
build-dh
Создаст ключ Диффи-Хельмана.
build-ca
Создаст основной сертификат.
Будут заданы вопросы, просто нажимаем Enter пока не увидите путь C:\Program files\OpenVPN\easy-rsa. Далее набираем:
build-key-server server
На вопросы также жмем Enter, только не торопитесь! В конце будут два вопроса: «Sign the certificate?» и «1 out of 1 certificate requests certified, commit?», на оба вопроса отвечаем Y. Теперь создадим сертификат клиента:
build-key client
Тут нужно быть вниметельней, при вопросе Common Name (eg, your name or your server’s hostname) нужно ввести client. В конце также два раза Y. Для каждого клиента нужно создавать новый сертификат, только с другим именем, например, build-key client1 и также указывать его в common name. Если все сделали правильно, можете выдохнуть! Самое сложное позади. В папке C:\Program Files\OpenVPN\easy-rsa\keys забираем: ca.crt, dh1024.pem, server.crt, server.key и кладем их в C:\Program Files\OpenVPN\config.

Создаем конфиги.

Переходим в C:\Program Files\OpenVPN\config, создаем текстовой документ, вставляем:
# Поднимаем L3-туннель
dev tun
# Протокол
proto udp
# Порт который слушает впн
port 12345
# Ключи и сертификаты
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
# Грубо говоря экономим адреса
topology subnet
# Пул адресов
server 10.8.0.0 255.255.255.0
# Метод шифрования
cipher AES-128-CBC
# Сжатие
comp-lzo
# Немного улучшит пинг
mssfix
# Время жизни клиентов, если не откликнулся — отключает
keepalive 10 120
# Уровень отладки
verb 3

Сохраняем файл как server.ovpn. Это наш конфиг сервера. Теперь пробуем запустить сервер. На рабочем столе будет ярлык OpenVPN Gui. После запуска в трее появится красный значок. Кликаем по нему дважды, если загорелся зеленым, значит, все хорошо, если нет, тогда смотрим лог в папке log.

Теперь конфиг клиента:
client
dev tun
proto udp
# Адрес и порт сервера
remote адрес 12345
# Ключи должны лежать в папке с конфигом
ca ca.crt
cert client.crt
key client.key
cipher AES-128-CBC
nobind
comp-lzo
persist-key
persist-tun
verb 3

Сохраняем как client.ovpn. Создаем любую папку и кладем туда конфиг client.ovpn и сертификаты ca.crt, client.crt, client.key которые лежат в C:\Program files\OpenVPN\easy-rsa. Сам клиент для Windows качаем здесь. На клиентской машине устанавливаем, переносим папку с конфигом и сертификатом и запускаем client.ovpn. Если подключились, пробуем в командной строке набрать ping 10.8.0.1. Пакеты пошли? Поздравляю! Сервер готов! Теперь идем в панель управления-администрирование-службы, ищем там OpenVPN, дважды щелкаем и выставляем автоматически. Теперь сервер будет сам стартовать после перезагрузки.

Дорабатываем конфиг или каждому свое.

Теперь я расскажу как раздавать интернет и другие мелочи связанные с настройкой. Начнем с мелочей. Все манипуляции будем проводить с конфигом сервера.
Если хотите, чтобы клиенты «видели» друг друга т.е. могли обмениваться информацией, тогда в конфиг впишите
client-to-client.
Если нужно, чтобы клиентам выдавались статические адреса, тогда в папке config создайте файл ip.txt и впишите в конфиг
ifconfig-pool-persist ip.txt
Неохота создавать каждому сертификаты? Тогда пишем duplicate-cn, но учтите, с этой опцией не работает ifconfig-pool-persist.
Теперь о конфиге клиента. Можно не передавать файлы сертификатов, а вписать сразу в конфиг, только делать это лучше не с блокнота, а с AkelPad’а или Notepad++ например. Открываем ca.crt и выделяем от ——BEGIN CERTIFICATE—— до ——END CERTIFICATE——. В конфиге будет выглядеть так:


-----BEGIN CERTIFICATE-----
сертификат
-----END CERTIFICATE-----


-----BEGIN CERTIFICATE-----
сертификат
-----END CERTIFICATE-----


-----BEGIN PRIVATE KEY-----
ключ
-----END PRIVATE KEY-----

Раздаем интернет

Для этого в конфиг сервера вписываем:
push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»
push «dhcp-option DNS 8.8.4.4»

DNS-адреса подставляем те, что даны в настройках. Посмотреть можно зайдя в панель управления-сетевые подключения, дважды кликнув на адаптере который смотрит в интернет. Для Win7 Панель управления-Сеть и Интернет-Центр управления сетями и общим доступом-изменение параметров адаптера. Далее, заходим в свойства этого же адаптера, вкладка доступ, ставим птичку напротив «Разрешить другим пользователям сети…» и в выпадающем списке, если есть, выбираем виртуальный адаптер vpn. Затем заходим в свойства адаптера vpn, свойства ipv4 и выставляем получение ip и dns автоматически. Спасибо за внимание!

  • Options error on windows ifconfig is required when dev tun is used
  • Oracle vm virtualbox не запускается на windows 10
  • Openvpn server windows 10 как настроить
  • Oracle vm virtualbox для windows 10 64 bit
  • Optimized windows 11 by insendfx 7z