Openvpn настройка сервера windows


Установка и настройка OpenVPN сервера под Windows

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

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

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

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

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

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

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

Создаем ключи шифрования и сертификаты для 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"

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

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 "

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

#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»)

Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./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

Данный ключ («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

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

Если при запуске 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"

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

Настройка 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 нужно с сервера скопировать файлы:

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

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

Если все настроено правильно, появится такая картинка.

Проверьте теперь лог 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

OpenVPN 2.5.1 сервер на Windows

Вчера обнаружил, что на мой домашний сервер пытаются подобрать пароль к RDP. Спросил наших безопасников с работы, да, порт сканировали, но пароль подбирают не они... Надо что-то делать с этим, и я даже знаю что.

Ударим шифрованием по злобным брутфорсерам! Ставим OpenVPN 2.5.1 сервер на Windows Server 2016.

  • Встретимся с Easy-RSA 3.
  • Решим неочевидный баг с директорией временных файлов.
  • Освоим OpenVPN Connect, в том числе на Android.
  • Запилим адаптер OpenVPN WinTun.

Установка OpenVPN Server

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

https://openvpn.net/community-downloads/

Доступна версия OpenVPN 2.5.1. Скачиваю Windows 64-bit MSI installer, файл OpenVPN-2.5.1-I601-amd64.msi.

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

Открывается мастер установки, предлагают выбрать тип установки, естественно, нажимаем Customize. Установка по умолчанию нас не устроит.

OpenVPN GUI отключаю. Мне нужно, чтобы OpenVPN на сервере работал автоматически.

А OpenVPN Service, наоборот, включаю. OpenVPN у меня будет работать как служба Windows.

Документацию и примеры конфигурации оставляю. Конфигурационные примеры будут использоваться в качестве шаблонов.

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

ПРИМЕЧАНИЕ: для включения драйвера Wintun необходимо в файле конфигурации сервера включить параметр:

windows-driver wintun

Утилиты OpenSSL EasyRSA 3 Certificate Management Scripts включаю. Install Now.

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

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

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

После установки у нас появляется новый сетевой адаптер Wintun Userspace Tunnel.

Адаптер отключён.

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

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

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

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

Для работы в Windows нас интересует файл EasyRSA-Start.bat.

Выполняем EasyRSA-Start.bat.

Запускается оболочка EasyRSA Shell.

Инициализируем новую конфигурацию:

./easyrsa init-pki

Появляется новая директория C:\Program Files\OpenVPN\easy-rsa\pki.

Генерируем ключ и сертификат центра сертификации. Внимание, сейчас мы наступим на грабли, исправим ошибку и снова вернёмся к генерации файлов для центра сертификации.

./easyrsa build-ca

Нас попросят для раза ввести пароль. Придумываем и вводим.

Получаем ошибку.

Extra arguments given.
genrsa: Use -help for summary.

Easy-RSA error:

Failed create CA private key

Исправим этот баг. Мне не совсем понятно, почему нельзя было всё сделать сразу по-человечески, чтобы люди не встречали эту ошибку. Копируем файл C:\Program Files\OpenVPN\easy-rsa\vars.example, называем копию C:\Program Files\OpenVPN\easy-rsa\vars.

Редактируем C:\Program Files\OpenVPN\easy-rsa\vars. В данном файле можно много чего прописать, но я не буду на этом сейчас останавливаться подробно. Находим строку:

#set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI"

И заменяем её на:

set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"

Собственно, ошибка и заключалась в том, что оболочка по какой-то причине не могла создать временный файл.

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

./easyrsa build-ca

Нас попросят для раза ввести пароль. Придумываем и вводим. После нас просят указать Common Name для центра сертификации, указываю "internet-lab. ru".

Операция проходит успешно.

Создаётся сертификат центра сертификации:

  • C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt

Сертификат создаётся на 10 лет, это значение можно переопределить в файле vars.

И ключ центра сертификации:

  • C:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key

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

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

./easyrsa gen-req server nopass

Нас просят указать Common Name для сервера, указываю "internet-lab.ru".

Операция проходит успешно.

Создаётся запрос на сертификат сервера:

  • 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

Для подписи нужно ввести слово "yes" и указать пароль от центра сертификации.

Создаётся сертификат сервера:

  • C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

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

Первый

  1. На клиентской машине генерируем запрос на сертификат клиента и ключ без пароля:

    ./easyrsa init-pki ./easyrsa gen-req client nopass
  2. Переносим REQ файл запроса на сертификат клиента на машину с нашим CA, импортируем, подписываем, отсылаем сгенерированный сертификат CRT обратно клиенту:
    ./easyrsa import-req /path/to/client. req client ./easyrsa sign-req client client

Второй

  1. а машине с CA генерируем сертификат клиента и ключ с паролем:

    ./easyrsa gen-req client ./easyrsa sign-req client client
  2. Переносим файлы клиенту, сообщаем пароль. Клиент снимает пароль с полученного ключа:
    openssl rsa -in client.key -out clientnew.key

Третий

Но поскольку я генерирую ключ сам для себя, то воспользуюсь небезопасным третьим способом.

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

./easyrsa gen-req client nopass

Нас просят указать Common Name для клиента, указываю "v.pupkin".

Операция проходит успешно.

Создаётся запрос на сертификат клиента:

  • C:\Program Files\OpenVPN\easy-rsa\pki\reqs\client.req

И ключ клиента:

  • C:\Program Files\OpenVPN\easy-rsa\pki\private\client.key

Для создания сертификата клиента нужно подписать запрос на сертификат:

. /easyrsa sign-req client client

Для подписи нужно ввести слово "yes" и указать пароль от центра сертификации.

Создаётся сертификат клиента:

  • C:\Program Files\OpenVPN\easy-rsa\pki\issued\client.crt

Сертификат сервера создаётся на 825 дней, это значение можно переопределить в файле vars.

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

./easyrsa gen-dh

Операция займёт некоторое время.

Создаётся файл:

  • C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem

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

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

При использовании tls-auth на клиенте не понадобится ключ Диффи-Хеллмана, но пусть будет. Генерируем ключ 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 сервера

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

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

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

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

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

port 1194 proto tcp 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" # This file should be kept secret dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem" server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt duplicate-cn keepalive 10 120 tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0 # This file is secret cipher AES-256-GCM persist-key persist-tun status "C:\\Program Files\\OpenVPN\\log\\status.log" log "C:\\Program Files\\OpenVPN\\log\\openvpn.log" verb 4 mute 20 windows-driver wintun

У меня здесь указаны пути к ключам и сертификатам, используется порт TCP 1194. Параметр duplicate-cn позволяет подключаться всем клиентам по одному общему сертификату, но это небезопасно и не рекомендуется. Используйте только в тестовых целях. Я использую для того, чтобы с помощью одного и того же сертификата подключиться к OpenVPN серверу и с клиентской машины и со смартфона. Параметр windows-driver wintun подключает использование драйвера WinTun. И что им стоило этот параметр указать в примере конфигурации? Остальное по умолчанию.

ВНИМАНИЕ: в конфигурационных файлах допускается в путях использование прямого слеша:

ca "C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt"

или двойного обратного слеша:

ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"

Запуск OpenVPN сервера

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

services.msc

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

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

Запускаем (перезапускаем) службу.

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

Активировался сетевой адаптер OpenVPN Wintun.

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

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

netstat -tan | find "1194"

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

Настройка firewall

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

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

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

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

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

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

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

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

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

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

На компьютере клиента устанавливаем OpenVPN Connect.

https://openvpn.net/download-open-vpn/

Я скачиваю версию для Windows.

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

Next.

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

Install.

OpenVPN Connect устанавливается.

Установка завершена. Finish.

На рабочем столе появляется иконка OpenVPN Connect.

На сервере файл примера конфигурации client.ovpn копируем как internet-lab.ru.ovpn.

И редактируем:

client dev tun proto tcp remote internet-lab. ru 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-GCM verb 0 connect-retry-max 25 

Здесь нужно указать протокол, порт адрес сервера и прочие параметры. Пути к ключам и сертификатам относительные.

Создаём директорию, например, C:\openvpn. Копируем в неё с сервера файлы:

  • ca.crt
  • client.crt
  • client.key
  • dh.pem
  • ta.key
  • internet-lab.ru.ovpn

Запускаем OpenVPN Connect.

Agree. Переключаемся на File.

Перетаскиваем мышкой в окно файл C:\openvpn\internet-lab.ru.ovpn, или указываем через кнопку Browse.

Ставим галку "Connect after import".

Коннектимся.

Соединение с OpenVPN сервером установлено.

В логах сервера видим, что соединился юзер v.pupkin.

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

Копируем на телефон все те же файлы, что и для клиента.

Устанавливаем приложение OpenVPN Connect.

Запускаем.

Agree.

Выбираем File. Указываем путь к файлу internet-lab.ru.ovpn.

Import.

Ставим галку "Connect after import".

Соединение с OpenVPN сервером установлено.

В логах сервера видим, что соединился второй юзер v.pupkin.

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

cd C:\Program Files\OpenVPN\easy-rsa EasyRSA-Start.bat ./easyrsa revoke client

Ссылки

Установка OpenVPN сервера на Windows

Мини-HOWTO статического ключа

| OpenVPN

Введение

Конфигурации статического ключа

предлагают самую простую настройку и идеально подходят для VPN типа «точка-точка» или проверки концепции.

Статический Ключевые преимущества

  • Простая установка
  • Нет X509 PKI (инфраструктура открытых ключей) для обслуживания

Статический Ключевые недостатки

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

Простой пример

В этом примере демонстрируется базовая конфигурация OpenVPN типа «точка-точка». Туннель VPN будет создан с конечной точкой сервера 10.8.0.1 и конечной точкой клиента 10.8.0.2. Зашифрованная связь между клиентом и сервером будет происходить через UDP-порт 119.4, порт OpenVPN по умолчанию.

 

Создать статический ключ:

  openvpn --genkey --secret static.key  

Скопируйте статический ключ и на клиент, и на сервер по уже существующему безопасному каналу.

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

  разработчик тун ифконфиг 10.8.0.1 10.8.0.2 секрет static.key  

Файл конфигурации клиента

  удаленный myremote.mydomain разработчик тун ифконфиг 10.8.0.2 10.8.0.1 секрет static.key  

Конфигурация брандмауэра

Убедитесь, что:

  • Порт UDP 1194 открыт на сервере, а
  • виртуальный интерфейс TUN, используемый OpenVPN, не заблокирован ни на клиенте, ни на сервере (в Linux интерфейс TUN, вероятно, будет называться tun0 , а в Windows он, вероятно, будет называться примерно так: Подключение по локальной сети n , если только вы переименовываете его в панели управления сетевыми подключениями).

Имейте в виду, что 90% всех проблем с подключением, с которыми сталкиваются новые пользователи OpenVPN, связаны с брандмауэром.

Тестирование VPN

Запустите OpenVPN, используя соответствующие файлы конфигурации как на сервере, так и на клиенте, изменив  myremote.mydomain  в конфигурации клиента на доменное имя или общедоступный IP-адрес сервера.

Чтобы убедиться, что VPN работает, вы должны выполнить эхо-запрос 10.8.0.2 с сервера и 10.8.0.1 с клиента.

Расширение простого примера

Использовать сжатие в VPN-канале

Добавьте следующую строку в файлы конфигурации клиента и сервера:

  комп-лзо  

Сделать ссылку более устойчивой к сбоям соединения

Сделка с:

  • поддержание соединения через NAT-маршрутизатор/брандмауэр и
  • следует DNS-имени сервера, если он меняет свой IP-адрес.

Добавьте следующее в файлы конфигурации клиента и сервера:

  поддержка активности 10 60 ping-таймер-rem упорный тун постоянный ключ  

Запуск OpenVPN в качестве демона (только для Linux/BSD/Solaris/MacOSX)

Запустите OpenVPN как демон и сбросьте привилегии пользователю/группе none .

Добавить в файл конфигурации (клиент и/или сервер):

  пользователь никто группа никто демон  

Разрешить клиенту доступ ко всей подсети сервера

Предположим, что сервер OpenVPN находится в подсети 192.168.4.0/24 . Добавьте в конфигурацию клиента следующее:

  маршрут 192.168.4.0 255.255.255.0  

Затем на стороне сервера добавьте маршрут к шлюзу локальной сети сервера, который направляет 10.8.0.2 к серверу OpenVPN (необходимо только в том случае, если сервер OpenVPN не является также шлюзом для серверной локальной сети). Кроме того, не забудьте включить переадресацию IP-адресов на сервере OpenVPN.


Стандартный файл INSTALL, включенный в исходный дистрибутив

 Инструкции по установке для OpenVPN, демона безопасного туннелирования Copyright (C) 2002-2019 OpenVPN Technologies, Inc. Эта программа является бесплатным программным обеспечением; вы можете распространять его и/или изменять на условиях Стандартной общественной лицензии GNU версии 2. как опубликовано Free Software Foundation. ******************************************************* ************************* БЫСТРЫЙ СТАРТ: Юникс: ./настроить && сделать && сделать-установить Кросс-компиляция для Windows на Unix См. INSTALL-win32.txt. ******************************************************* ************************* Чтобы загрузить OpenVPN, перейдите по ссылке: https://openvpn.net/community-downloads/ Выпуски OpenVPN также доступны в виде пакетов Debian/RPM: https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos Чтобы загрузить easy-rsa, перейдите по ссылке: https://github.com/OpenVPN/easy-rsa Чтобы загрузить исходный код драйвера tap-windows, перейдите по ссылке: https://github.com/OpenVPN/tap-windows Чтобы получить среду кросс-компиляции, перейдите по ссылке: https://github. com/OpenVPN/openvpn-сборка Пошаговые инструкции с примерами из реальной жизни см. https://openvpn.net/community-resources/how-to/ https://community.openvpn.net/openvpn/wiki Примеры см.: https://openvpn.net/examples.html Также см. справочную страницу для получения дополнительной информации, примеров использования и информации о конфигурация брандмауэра. ******************************************************* ************************* ПОДДЕРЖИВАЕМЫЕ ПЛАТФОРМЫ: (1) Linux (ядро 2.6+) (2) Солярис (3) OpenBSD 5.1+ (4) Mac OS X Darwin 10.5+ (5) FreeBSD 7.4+ (6) NetBSD 5.0+ (7) Windows (WinXP и выше) ПОДДЕРЖИВАЕМЫЕ АРХИТЕКТУРЫ ПРОЦЕССОРОВ: В общем, OpenVPN не зависит от размера слова и порядка байтов, поэтому должно поддерживаться большинство процессоров. Известные архитектуры работа включает Intel x86, Alpha, Sparc, Amd64 и ARM. ТРЕБУЕТ: (1) Драйвер TUN и/или TAP, позволяющий программам пользовательского пространства управлять виртуальное двухточечное IP- или Ethernet-устройство. Видеть Раздел «Конфигурация драйвера TUN/TAP» ниже для получения дополнительной информации. НЕОБЯЗАТЕЛЬНО (но рекомендуется): (1) библиотека OpenSSL, необходимая для шифрования, версия 0.9.8 или выше требуется, доступно на https://www.openssl.org/ (2) библиотека PolarSSL, альтернатива шифрованию, версия 1.1 или выше требуется, доступно на https://polarssl.org/ (3) библиотека сжатия LZO в реальном времени, необходимая для сжатия ссылок, доступно на https://www.oberhumer.com/opensource/lzo/ Пользователи OpenBSD могут использовать порты или пакеты для установки lzo, но помните добавить CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" директивы для «настройки», иначе gcc их не найдет. НЕОБЯЗАТЕЛЬНО (только для разработчиков): (1) Автоконф 2.59или выше + Automake 1.9 или выше -- доступно на https://www.gnu.org/software/software.html (2) Библиотека Dmalloc -- доступно на https://dmalloc.com/ ******************************************************* ************************* ПРОВЕРЬТЕ ИСТОЧНИК ИЗ РЕПОЗИТОРИЯ ИСТОЧНИКОВ: Клонируем репозиторий: git клон https://github. com/OpenVPN/openvpn git клон git://openvpn.git.sourceforge.net/gitroot/openvpn/openvpn Проверьте стабильную версию: git checkout -b 2.2 пульты/происхождение/выпуск/2.2 Проверьте основную (нестабильную) ветку: мастер проверки git ******************************************************* ************************* СОБИРАЙТЕ КОМАНДЫ ИЗ TARBALL: ./настроить делать сделать установку ******************************************************* ************************* СБОРКА КОМАНД ИЗ РЕПОЗИТОРИЯ ИСТОЧНИКОВ ПРОВЕРКА: автореконф -i -v -f ./настроить делать сделать установку ******************************************************* ************************* СОЗДАТЬ АРБАЛ ИЗ РЕПОЗИТОРИЯ ИСТОЧНИКОВ ПРОВЕРКА: автореконф -i -v -f ./настроить сделать расстояние ******************************************************* ************************* ИСПЫТАНИЯ (после СБОРКИ): сделать проверку (выполнить все тесты ниже) Тестовая крипта: ./openvpn --genkey --секретный ключ . /openvpn --test-crypto --секретный ключ Протестируйте согласование SSL/TLS (выполняется в течение 2 минут): ./openvpn --config sample/sample-config-files/loopback-client (в одном окне) ./openvpn --config sample/sample-config-files/loopback-server (одновременно в другом окне) Для более тщательных клиент-серверных тестов вы можете настроить свой собственный закрытый тест. среда. См. подробности в файлеtests/t_client.rc-sample. ******************************************************* ************************* ВАРИАНТЫ для ./configure: --disable-lzo отключить поддержку сжатия LZO [по умолчанию=да] --enable-lzo-stub не компилировать поддержку сжатия LZO, но все же разрешить ограниченную совместимость с LZO-поддерживаемым одноранговые узлы [по умолчанию = нет] --disable-crypto отключить поддержку криптографии [по умолчанию=да] --disable-ssl отключить поддержку SSL для обмена ключами на основе TLS [по умолчанию=да] --enable-x509-alt-имя пользователя включить функцию --x509-username-field [по умолчанию = нет] --disable-multi отключить поддержку клиент/сервер (--mode server + клиентский режим) [по умолчанию=да] --disable-server отключить только поддержку сервера (но сохранить поддержка) [по умолчанию=да] --disable-plugins отключить поддержку плагинов [по умолчанию=да] --disable-eurephia отключить поддержку плагина eurephia [по умолчанию=да] --disable-management отключить поддержку сервера управления [по умолчанию=да] --enable-pkcs11 включить поддержку pkcs11 [по умолчанию = нет] --disable-socks отключить поддержку Socks [по умолчанию=да] --disable-http-proxy отключить поддержку HTTP-прокси [по умолчанию=да] --disable-fragment отключить внутреннюю поддержку фрагментации (--fragment) [по умолчанию=да] --disable-multihome отключить поддержку многосетевого UDP-сервера (--multihome) [по умолчанию=да] --disable-port-share отключить поддержку общего порта TCP-сервера (--port-share) [по умолчанию=да] --disable-debug отключить поддержку отладки (отключить гремлин и глагол 7+ сообщений) [по умолчанию=да] --enable-small включить меньший размер исполняемого файла (отключить OCC, использование сообщение и список параметров глагола 4) [по умолчанию=да] --enable-password-save разрешить использование паролей --askpass и --auth-user-pass читать из файла [по умолчанию=да] --enable-iproute2 включить поддержку iproute2 [по умолчанию=нет] --disable-def-auth отключить отложенную аутентификацию [по умолчанию=да] --disable-pf отключить внутренний фильтр пакетов [по умолчанию=да] --enable-strict включить строгие предупреждения компилятора (опция отладки) [по умолчанию = нет] --enable-pedantic включить педантичные предупреждения компилятора, не будет генерироваться рабочий исполняемый файл (параметр отладки) [по умолчанию = нет] --enable-strict-options включить строгую проверку параметров между узлами (отладка опция) [по умолчанию=нет] --enable-selinux включить поддержку SELinux [по умолчанию=нет] --enable-systemd включить поддержку systemd [по умолчанию = нет] СРЕДА для . /configure: IFCONFIG полный путь к утилите ipconfig ROUTE полный путь к утилите маршрутизации IPROUTE полный путь к утилите ip NETSTAT путь к утилите netstat MAN2HTML путь к утилите man2html Путь GIT к утилите git TAP_CFLAGS Флаги компилятора C для крана OPENSSL_CRYPTO_CFLAGS Флаги компилятора C для OPENSSL_CRYPTO, переопределяющие pkg-config OPENSSL_CRYPTO_LIBS флаги компоновщика для OPENSSL_CRYPTO, переопределяющие pkg-config OPENSSL_SSL_CFLAGS Флаги компилятора C для OPENSSL_SSL, переопределяющие pkg-config OPENSSL_SSL_LIBS флаги компоновщика для OPENSSL_SSL, переопределяющие pkg-config POLARSSL_CFLAGS Флаги компилятора C для polarssl POLARSSL_LIBS флаги компоновщика для polarssl LZO_CFLAGS Флаги компилятора C для lzo Флаги компоновщика LZO_LIBS для lzo PKCS11_HELPER_CFLAGS Флаги компилятора C для PKCS11_HELPER, переопределяющие pkg-config PKCS11_HELPER_LIBS флаги компоновщика для PKCS11_HELPER, переопределяющие pkg-config ******************************************************* ************************* СБОРКА НА LINUX 2. 6+ ИЗ RPM Вы можете собрать бинарный RPM прямо из архива OpenVPN: rpmbuild -tb [архив] Эта команда создаст двоичный RPM-файл и поместит его в систему. каталог RPM. Затем вы можете установить RPM со стандартным RPM установить команду: rpm -ivh [двоичный-об/мин] Когда вы устанавливаете бинарный RPM, он установит sample-scripts/openvpn.init, который можно использовать для автоматически запускать или останавливать один или несколько туннелей OpenVPN в системе запуск или завершение работы на основе файлов OpenVPN .conf в /etc/openvpn. См. комментарии в openvpn.init для получения дополнительной информации. Установка RPM также настроит узел устройства TUN/TAP. для линукс 2.6. Обратите внимание, что текущий файл openvpn.spec, который инструктирует инструмент rpm как собрать пакет, соберет OpenVPN со всеми включенными опциями, включая OpenSSL, LZO и связь pthread. Поэтому все эти пакеты должны быть представлены до сборки RPM, если только вы редактируете файл openvpn. spec. ******************************************************* ************************* Конфигурация драйвера TUN/TAP: * Linux 2.6 или выше (со встроенным драйвером TUN/TAP): (1) загрузить драйвер: modprobe tun (2) включить маршрутизацию: echo 1 > /proc/sys/net/ipv4/ip_forward Обратите внимание, что (1) необходимо выполнять один раз при перезагрузке. Если вы устанавливаете из RPM (см. выше) и используйте сценарий openvpn.init, эти шаги будут выполнены за вас. * FreeBSD: FreeBSD поставляется с драйвером TUN/TAP и узлами устройств для tap0, tap1, tap2, tap3, tun0, tun1, tun2 и tun3 выполняются по умолчанию. Однако только драйвер TUN связан с ядром GENERIC. Чтобы загрузить драйвер TAP, введите: kldload if_tap См. man rc(8), чтобы узнать, как это сделать во время загрузки. Самый простой способ — установить OpenVPN из системы портов FreeBSD, порт включает пример скрипта для автоматической загрузки драйвера TAP во время загрузки. * ОпенБСД: OpenBSD динамически создает устройства tun*, поэтому вам нужно только для создания пустого /etc/hostname. tun0 (tun1, tun2 и т. д.) для каждого tun вы планируете использовать для создания устройств при загрузке. * Солярис: Для работы OpenVPN вам нужен драйвер ядра TUN/TAP: https://www.whiteboard.ne.jp/~admin2/tuntap/ * Windows XP/2003/Vista/7: Для работы OpenVPN в Windows требуется драйвер ядра TUN/TAP. Установщики OpenVPN включите этот драйвер, поэтому его отдельная установка обычно не требуется. Исходный код драйвера доступен здесь: https://github.com/OpenVPN/tap-windows ******************************************************* ************************* ПРЕДОСТЕРЕЖЕНИЯ И ОШИБКИ: * Я заметил случаи, когда TCP-сессии туннелировались через Linux. Драйвер TAP (ядро 2.4.21 и 2.4.22) останавливается, когда ниже --mssfix используются значения. Сеансы TCP отключаются и возобновляются обычно, когда пингуется удаленная конечная точка VPN. * При запуске через брандмауэр с использованием пакетного фильтра OpenBSD PF и правила фильтрации включают директиву "scrub", у вас могут возникнуть проблемы с разговором к хостам Linux через туннель, так как очистка убьет пакеты отправленные с хостов Linux, если они фрагментированы. 

Learn more

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: