Настройка OpenVPN-сервера на Windows Server 2008/2012

Это пошаговое руководство о том, как настроить OpenVPN-сервер в операционных системах Windows Server 2008/2012 и подключить клиентов к созданной виртуальной частной сети.

OpenVPN - открытая реализация технологии VPN - Virtual Private Network, которая предназначена для создания виртуальных частных сетей между группой территориально удаленных узлов поверх открытого канала передачи данных (интернет). OpenVPN подходит для таких задач, как безопасное удаленное сетевое подключение к серверу без открытия интернет-доступа к нему, как будто вы подключаетесь к хосту в своей локальной сети. Безопасность соединения достигается шифрованием OpenSSL.

Содержание:

Как это работает?

По окончанию настройки OpenVPN сервер сможет принимать внешние защищенные SSL сетевые подключения к созданному при запуске VPN-сервиса виртуальному сетевому адаптеру (tun/tap), не затрагивая правила обработки трафика других интерфейсов (внешний интернет-адаптер и др.) Имеется возможность настроить общий доступ клиентов OpenVPN к конкретному сетевому адаптеру из присутствующих на сервере. Во второй части инструкции рассмотрено такое туннелирование интернет-трафика пользователей. При этом способе переадресации обрабатывающий VPN-подключения хост будет выполнять и функцию прокси-сервера (Proxy) - унифицировать правила сетевой активности пользователей и осуществлять маршрутизацию клиентского интернет-трафика от своего имени.

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

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

Обратите внимание, что в этой инструкции дальнейшие команды приведены из расчета, что OpenVPN установлен в директорию по-умолчанию "C:\Program Files\OpenVPN".

Разрешаем добавление виртуального сетевого адаптера TAP в ответ на соответствующий запрос и дожидаемся завершения установки (может занять несколько минут).

Генерация ключей (PKI) центра сертификации, сервера, клиента; алгоритм Диффи-Хеллмана

Для управления парами "ключ/сертификат" всех узлов создаваемой частной сети используется утилита easy-rsa, работающая через командную строку по аналогии с консолью Linux. Для работы с ней откройте запустите командую строку (Сочетание клавиш Win+R, затем наберите cmd и нажмите Enter)

Настройка параметров easy-rsa

  1. Предварительно настроим параметры по-умолчанию для генерируемых ключей. Последовательно введите команды(одна строка - одна команда)
    cd \
    cd "C:\Program Files\OpenVPN\easy-rsa"
    init-config.bat
  2. Последний запущенный скрипт init-config.bat сгенерировал новый файл конфигурации vars.bat, параметры которого будут учитываться при дальнейшей генерации клиентских ключей (.key/.crt).
  3. Открываем файл vars.bat:
    notepad vars.bat
    И указываем в нем свои параметры в значениях указанных ниже строк конфига (Это не обязательно, скорее, информация для сетевого администратора):
    set KEY_COUNTRY=RU
    set KEY_PROVINCE=SPB
    set KEY_CITY=Saint Petersburg
    set KEY_ORG=1cloud.ru
    set KEY_EMAIL=mail@host.domain

    Вы также можете сменить значение параметра KEY_SIZE c 1024 на 2048 - это обеспечит дополнительную надежность ключа, но в то же время замедлить процесс "рукопожатия" между узлами (хотя и несильно.)
  4. Сохраняем файл
  5. Последовательно выполняем следующие скрипты:
    cd \
    cd "C:\Program Files\OpenVPN\easy-rsa"
    vars.bat
    clean-all.bat

Генерация ключей Центра Сертификации и Сервера

Перейдем к созданию ключа/сертификата центра сертификации:
  1. build-ca.bat
    В ответ на появляющиеся запросы вы можете просто нажимать Enter, для применения параметров по-умолчанию, которые мы настроили выше в файле vars.bat. Единственное исключение - поле KEY_CN (Common Name) - обязательно укажите уникальное имя и такое же имя вставьте в поле name.
  2. Аналогичным образом генерируем сертификат сервера. Здесь значение полей Common Name и Name - SERVER:
    build-key-server.bat server
    Для всех генерируемых ключей теперь будет задаваться вопрос о том, подписать ли создаваемый сертификат (Sign the certificate) от имени центра сертификации. Отвечаем y (yes).

Генерация клиентских ключей и сертификатов

Для каждого клиента VPN необходимо сгенерировать отдельный SSL-сертификат.

В конфигурации OpenVPN присутствует опция, включив которую вы можете использовать один сертификат для нескольких клиентов (см. файл server.ovpn -> опция "dublicate-cn"), но это не рекомендуется с точки зрения безопасности. Сертификаты можно генерировать и в дальнейшем, по мере подключения новых клиентов. Поэтому сейчас создадим только один для клиента client1:

Запускаем скрипт генерации клиентских ключей:
cd \
cd "C:\Program Files\OpenVPN\easy-rsa"
vars.bat
build-key.bat

В поле Common Name указываем имя клиента (в нашем случае client).

Параметры Diffie Hellman

Для завершения настройки шифрования, необходимо запустить скрипт генерации параметров Диффи-Хеллмана:
build-dh.bat
Отображение информации о создании параметров выглядит так:

Перенос созданных ключей/сертификатов

Сгенерированные сертификаты находятся в папке C:\Program Files\OpenVPN\easy-rsa\keys

Скопируйте перечисленные ниже файлы из этой директории в папку C:\Program Files\OpenVPN\config:
  • ca.crt
  • dh1024.pem (Если вы изменяли этот параметр ранее в файле vars.bat, имя будет отличаться)
  • server.crt
  • server.key

Конфигурация сервера OpenVPN

Перейдем к настройке непосредственно VPN-сервера:

  1. Скопируем образцы файлов конфигурации для сервера и для клиента в рабочую директорию OpenVPN:
    copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config"
    copy "C:\Program Files\OpenVPN\sample-config\client.ovpn" "C:\Program Files\OpenVPN\config"
  2. Открываем скопированный образец конфигурации сервера server.ovpn:
    notepad "C:\Program Files\OpenVPN\config\server.ovpn"
    Находим блок, в котором указаны пути до ключей (см. ниже). Указываем в нем пути до скопированных ранее сертификатов ca.crt, dh1024.pem/dh2048.pem, server.key, server.crt как в примере ниже:
    # Any X509 key management system can be used.
    # OpenVPN can also use a PKCS #12 formatted key file
    # (see "pkcs12" directive in man page).
    ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
    cert "C:\\Program Files\\OpenVPN\\config\\server.crt"
    key "C:\\Program Files\\OpenVPN\\config\\server.key" # This
    file should be kept secret

    # Diffie hellman parameters.
    # Generate your own with:
    # openssl dhparam -out dh2048.pem 2048
    dh "C:\\Program Files\\OpenVPN\\config\\dh1024.pem"
  3. Сохраняем файл.

Автозапуск OpenVPN

Сразу настроим службу OpenVPN на автозапуск при старте системы. Открываем "Службы"(Services) Windows. Находим в списке OpenVPN -> ПКМ -> Свойства (Properties) -> Запуск: Автоматически

На этом базовая настройка сервера виртуальной частной сети завершена. Найдите файл C:\Program Files\OpenVPN\config\server.ovpn -> кликните правой кнопкой мыши -> "Start OpenVPN on this config" для запуска сервера виртуальной частной сети и подготовленного нами файла настроек.

Конфигурация клиента OpenVPN

Клиентские приложения OpenVPN доступны для всех популярных ОС: Windows / Linux / iOS / Android. Для MacOS используется клиент Tunnelblick. Все эти приложения работают с одними и теми же файлами конфигурации. Возможны лишь некоторые различия нескольких опций. Узнать о них вы можете, изучив документацию к своему клиенту OpenVPN. В этом руководстве мы рассмотрим подключение Windows-клиента с использованием того же дистрибутива программы, который мы устанавливали на сервер. При использовании приложений для других операционных систем логика настройки аналогична.

  1. Устанавливаем актуальную версию OpenVPN на клиентский компьютер.
  2. Копируем в директорию C:\Program Files\OpenVPN\config созданные ранее на сервере файлы клиентских сертификатов, сертификата CA C:\Program Files\OpenVPN\config\easy-rsa) и образца файла конфигурации клиента (C:\Program Files\OpenVPN\config\client.ovpn). Последний файл после копирования на устройство пользователя удаляем с сервера или переносим из папки config во избежание путаницы в будущем.
  3. Найдите строку remote my-server-1 1194 и укажите в ней ip-адрес или доменное имя vpn-сервера:
    remote 111.222.333.444 1194
  4. Находим блок, в котором указаны пути до сертификатов (см. ниже). Указываем в нем пути до скопированных ранее сертификатов ca.crt, client1.key, client1.crt как в примере ниже:
    # SSL/TLS parms.
    # See the server config file for more
    # description. It's best to use
    # a separate .crt/.key file pair
    # for each client. A single ca
    # file can be used for all clients.
    ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
    cert "C:\\Program Files\\OpenVPN\\config\\client1.crt"
    key "C:\\Program Files\\OpenVPN\\config\\client1.key" # This
    file should be kept secret

  5. Сохраните файл. Настройка клиентской части завершена.
  6. Проверка правил Брандмауэра Windows

    Внимание! Для корректной работы сервиса OpenVPN требуется, чтобы на севере были открыты соответствующие порты (по-умолчанию UDP 1194). Проверьте соответствующее правило в вашем Firewall'е: Брандмауэре Windows или стороннем антивирусном ПО.

    Проверка OpenVPN-соединения

    Для проверки корректности настройки перейдите в директорию C:\Program Files\OpenVPN\config и выберите файл конфигурации клиента (у нас client.ovpn -> ПКМ -> "Start OpenVPN on this config file").

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

    Проверим доступность с клиентского устройства сервера OpenVPN по его внутреннему адресу частной сети:
    1. Нажимаем клавиши Win+R и появившемся окне вводим cmd для открытия командной строки
    2. Выполняем команду ping до адреса нашего сервера в виртуальной частной сети (10.8.0.1):
    ping 10.8.0.1
    3. В случае корректной настройки VPN начнется обмен пакетами с сервером

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


Средняя оценка: 5,0, всего оценок: 1