Разное

Openvpn client windows настройка: Вы заблудились на сайте компьютерного мастера

Содержание

Настройка подключения OpenVPN клиента Windows к OpenVPN серверу на Mikrotik

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

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

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.

Настройка OpenVPN клиента на Windows 10 / Windows / Howitmake.ru

И снова здравствуйте.
Эта последняя статья посвященная OpenVPN в целом и настройке клиента в частности. В этот раз мы настроим с вами клиента под Windows 10 но на предыдущих версиях этой операционной системы все это тоже будет работать. Задача следующая, обеспечить подключение клента к нашему OpenVPN серверу, который мы настраивали в с статье: Настраиваем OpenVPN сервер Linux на примере Ubuntu мы уже можем настраивать клиента Ubuntu, осталось дело за малым, чем мы сейчас и займемся.
Чтобы приступить к настройке, нам необходимо скачать, этого самого, клиента для Windows, я качал под 64 разрядную ОС.
Тут все просто, качаем клиента с сайта openvpn.net/index.php/download/community-downloads.html
Запускаем установку и следуем указаниям инсталятора, по принципу Next -> Next -> OK

Переходим в директорию с установленным OpenVPN

C:\Program Files\OpenVPN\config

Нам необходимо создать там файл, назовем его client.ovpn с содержимым:


# Тип подключения -клиент
client

# Через какое устройство подключаемся
dev tun

По какому протоколу будем работать
proto tcp
#proto udp

# Адрес OpenVPN сервера и его порт (можно указать IP или URL)
remote openvpn. example.org 1194

# Тип шифрования, как на OpenVPN сервере
cipher AES-256-CBC

# Сертификат удостоверяющего центра
ca ca.crt

# Сертификат и ключ клиента
cert user.crt
key user.key

# Клиент поддерживает шифрование
tls-client

# Указываем путь к ключу TLS
tls-auth ta.key 1

# Включаем компрессию данных
comp-lzo

# Не использовать специфический порт для работы
nobind

persist-key
persist-tun

# Уровень логирования если нужно подробнее, то выставляем 9 для дебагинга
verb 3
# Количество записей после которых будет производиться запись в лог
#mute 20

Нам необходимо получить с OpenVPN сервера 4 файла:

ca.crt
ta.key
user.crt
user.key

Где:
ca.crt и ta.key первый является сертификатом удостоверяющего центра, второй это ключ шифрования OpenVPN сервера, они должны быть у каждого пользователя!
user. crt и user.key ключ и сертификат пользователя, у каждого пользователя они свои т.е. создаются персонально

Дальше на остается запустить OpenVPN клиента:

Нажимаем подключиться:

Появится лог подключения, который при установке соединения исчезнет:

Иконка подключения станет зеленой, значит соединение установлено и работает нормально, также появится плашка в которой будет написан присвоенный IP адрес

Для клиентов Windows есть особенность, необходимо указывать IP адреса из диапазона в 4 адреса т.е. если вы хотите присвоить клиенту адрес 172.16.10.4 то соединение на другом конце должны быть из диапазона:

172.16.10.1 172.16.10.2 172.16.10.3 172.16.10.4
172.16.10.5 172.16.10.6 172.16.10.7 172.16.10.8
172.16.10.9 172.16.10.10 172.16.10.11 172.16.10.12

Иначе соединение обрывается, во так все просто.

На этой оптимистической ноте я закончу свое повествование, если возникли вопросы, задавайте их в комментариях.

Настройка OpenVPN-сервера на Windows 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)

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

Скачайте наши файлы конфигурации и скрипты и замените их в каталоге C:\Program Files\OpenVPN\easy-rsa.

Если пути по умолчанию не совпадают, откорректируйте их во всех файлах.

В файле конфигурации openssl-1.0.0.conf обязательно задайте значения переменным, соответствующие вашим данным: countryName_default

stateOrProvinceName_default

localityName_default

0.organizationName_default

emailAddress_default

Примечание: если значение переменной содержит пробел, то заключите ее в кавычки.

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

  1. Переименуйте файл index.txt.start в index.txt, serial.start в serial с помощью следующих команд: cd \

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

    ren index.txt.start index.txt

    ren serial.start serial

    Перейдем к созданию ключа/сертификата центра сертификации. Запустите скрипт: .\build-ca.bat


    В ответ на появляющиеся запросы вы можете просто нажимать Enter. Единственное исключение — поле KEY_CN (Common Name) — обязательно укажите уникальное имя и такое же имя вставьте в поле name.

  2. Аналогичным образом генерируем сертификат сервера. Здесь значение полей Common Name и Name — SERVER: .\build-key-server.bat server

     


    Примечание: аргумент server — имя будущего файла.


    Для всех генерируемых ключей теперь будет задаваться вопрос о том, подписать ли создаваемый сертификат (Sign the certificate) от имени центра сертификации. Отвечаем y (yes).


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

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

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

Выполните следующие команды для генерации клиентских ключей: cd \

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

.\build-key.bat client1

Примечание: аргумент client1 — имя будущего файла.

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

Параметры Diffie Hellman

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

Отображение информации о создании параметров выглядит так:

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

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

  • ca.crt
  • dh3048.pem/dh2048.pem
  • server.crt
  • server.key

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

В дереве найдите каталог HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. В правой части окна найдите переменную IPEnableRouter, двойным щелчком мыши перейдите в окно редактирования значения и измените его на 1, тем самым разрешив адресацию на VPS.

  1. Перейдем к настройке непосредственно VPN-сервера, используйте наш файл конфигурации с именем server.ovpn и поместите его в директорию C:\Program Files\OpenVPN\config.

    Откройте файл, находим пути до ключей (см. ниже). Проверяем в нем пути до скопированных ранее сертификатов ca.crt, dh2024.pem/dh3048.pem, server.key, server.crt и при необходимости меняем: port 1194

    proto udp

    dev tun

    server 10.8.0.0 255.255.255.0

    ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"

    cert "C:\\Program Files\\OpenVPN\\config\\server.crt"

    key "C:\\Program Files\\OpenVPN\\config\\server.key"

    dh "C:\\Program Files\\OpenVPN\\config\\dh3048.pem"

    push "redirect-gateway def1"

    push "dhcp-option DNS 8.8.8.8"

    keepalive 10 120

    comp-lzo

    persist-key

    persist-tun

    verb 3


    Сохраняем файл.

  2. Теперь необходимо разрешить пересылку трафика между адаптерами. Выполните следующие шаги: Панель управления -> Сеть и интернет -> Центр управления сетями и общим доступом -> Изменение параметров адаптера. Выберете адаптер который смотрит во внешнюю сеть Интернет (TAP-адаптер отвечает за VPN соединение). В нашем примере это Ethernet 2.



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


  3. Далее нужно включить IP-адресацию.

    С помощью поиска Windows найдите приложение REGEDIT.exe.


Автозапуск 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 созданные ранее на сервере файлы клиентских сертификатов (2 сертификата с расширением .crt и ключ с расширением .key) и используем наш файл конфигурации клиента client.ovpn. Последний файл после копирования на устройство пользователя удаляем с сервера или переносим из папки config во избежание путаницы в будущем.
  3. Откройте файл client.ovpn. Найдите строку remote my-server-1 1194 и укажите в ней ip-адрес или доменное имя vpn-сервера:
    remote <ip-address> 1194</ip-address>

    Например: remote 111. 222.88.99 1194

  4. Находим пути до сертификатов. Указываем в нем пути до скопированных ранее сертификатов ca.crt, client1.key, client1.crt как в примере ниже:
    # 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. Сохраните файл. Настройка клиентской части завершена.

Проверка правил Брандмауэра Windows

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

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

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

Запустите клиент, для этого перейдите в директорию 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 начнется обмен пакетами с сервером

     


  4. С помощью утилиты tracert проверим по какому маршруту идут пакеты от клиента. В консоли введите следующую команду: tracert ya.ru

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

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

 

P. S. Другие инструкции:




Спасибо за Вашу оценку!
К сожалению, проголосовать не получилось. Попробуйте позже

OpenVPN клиент Windows 7 | Хостинг сайтов, аренда VDS серверов, быстрый Cloud (облачный) хостинг от провайдера Net.

Ru

Если у вас ОС Windows 7, настроить OpenVPN-сервер будет совсем несложно. Мы приводим пошаговую инструкцию. 

1. Проверка времени и даты. 


1.1. ВНИМАНИЕ!  В обязательном порядке нужно выставить правильную дату и время. В противном случае OpenVPN не подключится!

 

2. Определение разрядности ОС.

Большое значение имеет, какой разрядности установлена Windows 7. Определить ее можно, зайдя в Панель управления, выбрав вкладку «Системы и безопасность», а затем – «Система». Если и более простой способ: по значку «Компьютер» необходимо кликнуть правой кнопкой мыши, а затем выбрать пункт «Свойства».

 

 

 

 

…  

Затем нужно посмотреть разрядность Windows 7. Она может быть следующей:

 

 

 

 

 

 

 

3.  Скачивание openVPN-клиента.

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

3.1. прямая ссылка для  для x32 ОС

3.2. . прямая ссылка для   для х64 ОС 

 

 

4.  Установка программы.

Следующий шаг – установка клиента для VPN сервера . Имеет значение, куда именно ставится программа. Как правило, адрес является следующим: 

 C:\Program Files\OpenVPN\ )

4.1  Важно! Не стоит запускать клиент для OpenVPN сервера по окончании установки. Вначале следует осуществить установку файлов конфигурации.

 

5. Распаковка архива.

Необходимо перейти в папку, куда был установлена програмка OpenVPN, а потом найти подпапку под названием «config». После этого осуществляется распаковка архива, который содержит персональные ключи. У данного архива содержимое следующее:

 

Все его содержимое :

ca.crt
client.key
client.crt
client.ovpn
 

 

 

6.  Создание ярлыка

По завершении установки программы создается ярлык.
 Если этого не произошло, программу нужно найти по адресу установки

      ( обычно по адресу C:\Program Files\OpenVPN\bin\openvpn-gui.exe )

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

 

 

7.Настройка ярлыка.

Откройте меню (клик правой кнопкой мыши) и перейдите в «Свойства».

 

 

Вы увидите поле, которое называется «Объект». В его конце нужно вписать: 

 --connect "имя_вашей_конфигурации.ovpn"

Таким образом, полностью вся стока будет иметь следующий вид: 

«C:\Program Files\OpenVPN\bin\openvpn-gui. exe» —connect «net-ru.ovpn»

Конечно вместо net-ru.ovpn, указываете имя вашей конфигурации.

 

 Далее нужно перейти во вкладку «Совместимость» и отметить галочкой параметр «Выполнять эту программу от имени администратора», а затем подтвердить и сохранить действие. 

 

 

 

 

 

8. Запуск программы.

Чтобы запустить OpenVPN, кликните дважды на ярлык. Появится окно «Соединение OpenVPN». Дождитесь, когда оно закроется. 

 

 

После этого на панели задач вы увидите зеленый значок. Это означает, что с сервером установилось VPN-соединение. 

 


9.  
Отсоединение.

Чтобы произвести отсоединение от VPN-сервера, по значку нужно кликнуть правой кнопкой, а затем выбрать параметр «Выход».  

 

 

 

 
PS
Вы можете у нас   Заказать  сервер OpenVPN под ключ  по минимальной цене

Установка и настройка openvpn на CentOS

В современном интернете вопрос анонимности встает с каждым годом все острее. Запреты на доступ к контенту вынуждают пользователей искать обходные пути, одним из которых является использование приватных тоннелей. Установка на CentOS openvpn сервера для подключения удаленных клиентов является одной из реализаций шифрованного vpn канала. Этой задачей мы и займемся в текущей статье — поднимем шифрованный тоннель и подключим клиентов.


Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Специализация Administrator Linux» в OTUS. Курс для новичков из двух ступеней — Junior и Middle. Полная программа курса по .

Данная статья является частью единого цикла статьей про сервер Centos.

Введение — что такое vpn server?

Упомянутое во вступлении применение технологии vpn и openvpn сервера в частности не ограничивается созданием каналов для анонимного трафика пользователей. Более того, я думаю это не основная сфера применения данных технологий. Давайте поподробнее познакомимся с этими вещами, чтобы иметь полное представление о том, что мы будем настраивать.

VPN — набор технологий, которые позволяют организовать логическую сеть поверх других. Чаще всего в роли других сетей выступает Интернет. Если простыми словами, то с помощью VPN можно организовать единую локальную сеть разделенных интернетом сегментов сети. Так как Интернет — общедоступная сеть, то трафик внутри созданной логической сети шифруется различными средствами для организации защиты передаваемых данных.

OpenVPN — одна из реализаций технологии VPN с открытым исходным кодом, а значит бесплатная. С ее помощью можно объединять в единую сеть компьютеры в том числе и находящиеся за NAT, что очень удобно. Openvpn поддерживает все популярные на сегодняшний день операционные системы, в том числе и Windows.

Среди малого и среднего бизнеса сервер openvpn очень популярен благодаря своей бесплатности, кроссплатформенности, быстроте и гибкости настроек. Лично я предпочитаю именно его для объединения удаленных локальных сетей. Его же предпочитают использовать vpn-провайдеры для оказания своих услуг по организации анонимного серфинга в интернете.

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

Объединение офисов с помощью openvpn

У нас имеется офис с шлюзом CentOS 8, на который мы будем устанавливать openvpn сервер. И есть филиал с таким же шлюзом, где будет установлен openvpn client для подключения сети филиала к офису:

 

Описание схемы сети
ИмяCentos-serverPC1Centos-clientPC2
Внешний ip10. 20.1.38192.168.13.188
Локальный ip192.168.220.1192.168.220.10192.168.150.1192.168.150.10
КомментарийСервер openvp и шлюз в офисеКомпьютер с Windows 10 в офисеКлиент openvp и шлюз в филиалеКомпьютер с Windows 10 в филиале

В данном случае сервер в филиале может быть без внешнего белого IP адреса, это не принципиально, все будет работать и так. Нам необходим только один внешний IP адрес на сервере. Все остальные клиенты могут быть за NAT, это не помешает успешному объединению локальных сетей.

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

Хочу отметить, что конфигурация openvpn кроссплатформенная и отлично переносится с одной системы на другую, необходимо только пути проверить, так как в каждой системе они свои. Моя инструкция подойдет для настройки openvpn сервера на любой операционной системе, отличаться будут только специфичные для каждой системы команды установки и проверки, но сама суть настройки vpn будет такой же.

Данный материал я создавал на тестовом стенде, который специально собрал для написания статьи. Но все настройки взяты с реально работающих серверов, причем разных систем, в том числе и freebsd. Для практического применения нужно просто поменять IP адреса на свои. У меня на стенде 10.20.1.38 и 192.168.13.188 по сути внешние IP адреса, которые смотрят в интернет.

Где скачать openvpn

Прежде чем приступить к установке и настройке, давайте посмотрим, где можно скачать все, что нам понадобится в нашей работе. Свежие и актуальные версии всегда можно найти на страничке downloads официального сайта.

Сразу же прокомментирую по поводу portable версии openvpn. На текущий момент официальной портированной версии openvpn не существует. Та версия, на которую я дал ссылку, найдена мной в гугле и сделана отдельной командой Portapps. Это наиболее актуальная и свежая версия. До нее я использовал OpenVPN Portable с sourceforge, но она сильно устарела, хотя кое-где может и работать. Я специально по этому поводу почитал форум Community Openvpn и нашел там неутешительные ответы. Разработчики говорят, что portable версия openvpn не поддерживается и выпускать ее они даже не собираются. А жаль, было бы удобно получить портированную версию от них.

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

Установка openvpn на CentOS 8

Теперь вернемся к нашей задаче. Я подразумеваю, что у вас уже есть установленный и настроенный сервер CentOS. Если еще нет, то можете воспользоваться моими материалами. В них раскрыты следующие темы:

Устанавливаем openvpn на оба наших сервера, которые являются шлюзами в своих сегментах сети. Первым делом подключаем репозиторий epel к centos:

# yum install epel-release

Выполняем непосредственно установку:

# yum install openvpn

 

Создание сертификатов

Для работы сервера openvpn необходимо создать соответствующие сертификаты. Для этого воспользуемся программой Easy-RSA, которая генерирует сертификаты с помощью утилиты openssl. Все работы в этом разделе выполняем только на centos-server.

Создаем директорию для ключей:

# mkdir /etc/openvpn/keys

Скачиваем и устанавливаем утилиту Easy-RSA. Ссылку на последнюю версию можно посмотреть на github.

# cd /etc/openvpn/keys
# wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz

Если получаете сообщение:

-bash: wget: command not found

То устанавливаете wget:

# yum install wget

Продолжаем:

# tar xzvf EasyRSA-3.0.8.tgz && mv EasyRSA-3.0.8 easyrsa && rm -f EasyRSA-3.0.8.tgz
# cd /etc/openvpn/keys/easyrsa

Создаем структуру публичных PKI ключей:

# mv vars.example vars
# ./easyrsa init-pki
Note: using Easy-RSA configuration from: /etc/openvpn/keys/easyrsa/vars

init-pki complete; you may now create a CA or requests. 
Your newly created PKI dir is: /etc/openvpn/keys/easyrsa/pki

Создайте удостоверяющий центр CA:

# ./easyrsa build-ca

Note: using Easy-RSA configuration from: /etc/openvpn/keys/easyrsa/vars
Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020

Enter New CA Key Passphrase: 
Re-Enter New CA Key Passphrase: 
Generating RSA private key, 2048 bit long modulus (2 primes)
........................+++++
................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:serveradmin. ru

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/keys/easyrsa/pki/ca.crt

Не забудьте указанный пароль. Его нужно будет вводить каждый раз при создании нового сертификата openvpn.

Мы получили 2 файла:

  • /etc/openvpn/keys/easyrsa/pki/private/ca.key
  • /etc/openvpn/keys/easyrsa/pki/ca.crt

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

Создаем запрос сертификата для сервера без пароля с помощью опции nopass, иначе придется вводить пароль с консоли при каждом запуске сервера:

# ./easyrsa gen-req server nopass

Note: using Easy-RSA configuration from: /etc/openvpn/keys/easyrsa/vars
Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Generating a RSA private key
. ........+++++
.....................+++++
writing new private key to '/etc/openvpn/keys/easyrsa/pki/easy-rsa-1861.5z2vXi/tmp.hy40wb'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/keys/easyrsa/pki/reqs/server.req
key: /etc/openvpn/keys/easyrsa/pki/private/server.key

Подписываем запрос на получение сертификата у нашего CA:

# ./easyrsa sign-req server server

Note: using Easy-RSA configuration from: /etc/openvpn/keys/easyrsa/vars
Using SSL: openssl OpenSSL 1. 1.1g FIPS  21 Apr 2020


You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /etc/openvpn/keys/easyrsa/pki/easy-rsa-1888.qaUUvJ/tmp.Y4X2zV
Enter pass phrase for /etc/openvpn/keys/easyrsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Apr 18 15:34:20 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/keys/easyrsa/pki/issued/server. crt

В процессе работы скрипта вводим пароль от CA, который указывали раньше и отвечаем на вопрос yes. Мы получили подписанный удостоверяющим центром сертификат для сервера — /etc/openvpn/keys/easyrsa/pki/issued/server.crt

Нам еще пригодится ключ Диффи-Хелмана, генерируем его:

# ./easyrsa gen-dh

По завершению работы скрипта получаем файл dh сертификата — /etc/openvpn/keys/easy-rsa/pki/dh.pem.

Копируем в папку /etc/openvpn/server/ все необходимые для работы openvpn сервера файлы:

# cp pki/ca.crt /etc/openvpn/server/ca.crt
# cp pki/dh.pem /etc/openvpn/server/dh.pem
# cp pki/issued/server.crt /etc/openvpn/server/server.crt
# cp pki/private/server.key /etc/openvpn/server/server.key

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

# openvpn --genkey --secret /etc/openvpn/server/tc. key

Создадим ключ для клиента openvpn:

# ./easyrsa gen-req client01 nopass
# ./easyrsa sign-req client client01

Процедура аналогична созданию сертификата для сервера. Так же вводим пароль, отвечаем yes. В результате получаем подписанный сертификат клиента:

  •  /etc/openvpn/keys/easy-rsa/pki/issued/client01.crt
  • /etc/openvpn/keys/easy-rsa/pki/private/client01.key

Команды gen-req и sign-req можно объединить в одну с помощью build-client-full примерно так:

# ./easyrsa build-client-full client01 nopass

Клиенту, которым у нас является шлюз филиала, нужно будет передать следующий набор файлов — client01.crt, client01.key, ca.crt, tc.key. Либо использовать единый файл конфигурации клиента, который включает в себя в том числе и сертификаты. Я отдельно покажу как это сделать.

Настройка openvpn на CentOS 8

Теперь приступаем к настройке. Создаем файл конфигурации openvpn:

# mcedit /etc/openvpn/server/server.conf
port 13555 # я предпочитаю использовать нестандартные порты для работы
proto udp # протокол может быт и tcp, если есть необходимость в этом
dev tun

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem

auth SHA256 # выбор алгоритма шифрования для аутентификации
cipher AES-256-CBC # выбор алгоритма шифрования всех передаваемых через vpn данных
tls-version-min 1.2 # ограничиваем минимальную версию протокола tls
tls-crypt tc.key # ключ для шифрования TLS control channel

server 10.0.0.0 255.255.255.0 # подсеть для туннеля, может быть любой
route 192.168.150.0 255.255.255.0 # указываем подсеть, к которой будем обращаться через vpn

ifconfig-pool-persist ipp.txt # файл с записями соответствий clinet - ip
client-to-client # позволяет клиентам openvpn подключаться друг к другу
client-config-dir /etc/openvpn/ccd # директория с индивидуальными настройками клиентов

keepalive 10 120
comp-lzo # если используется протокол tcp, сжатие надо отключить
explicit-exit-notify 1 # если используется протокол tcp, поменять на 0
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
user nobody
group nobody
verb 3

Подробное описание всех параметров можно посмотреть в официальной wiki.

Создаем необходимые директории:

# mkdir /etc/openvpn/ccd && mkdir /var/log/openvpn

Создаем файл конфигурации клиента в папке, указанной в параметре client-config-dir :

mcedit /etc/openvpn/ccd/client01
iroute 192.168.150.0 255.255.255.0

Здесь client01 — имя сертификата пользователя. Параметр iroute означает, что за подсеть 192.168.150.0/24 отвечает именно этот клиент. Если в openvpn не передать эту настройку, то сеть, находящуюся за клиентом, будет не видно, при этом сам клиент будет видеть всю сеть, которую обслуживает сервер. Такой вариант подходит для подключения удаленных сотрудников.

Выбор устройства openvpn — TAP или TUN

Чуть подробнее остановлюсь на этом моменте. В моей конфигурации я использую tun интерфейс. В чем отличие tun от tap можно прочитать на википедии. Прокомментирую своими словами. Если вам нужно объединить две разные локальные сети в одну условно общую, но с разной адресацией, то вам нужен tun. То есть в нашем случае мы объединяем две сети 192.168.220.0/24 и 192.168.150.0/24 для взаимного совместного доступа.

Если же у вас стоит задача объединить 2 удаленные сети в единое адресное пространство, например сделать и в офисе, и в филиале единую сеть 192.168.220.0/24, то тогда бы мы использовали tap интерфейс и указывали бы на компьютерах в обоих сетях не пересекающиеся адреса из одной подсети. То есть оба офиса окажутся в одном широковещательном домене и смогут передавать данные с помощью широковещания на канальном уровне сетевой модели OSI. В таком состоянии openvpn работает в режиме моста. По мне так удобнее первый вариант. Я еще не сталкивался с задачей, где бы мне нужен был tap. Вернемся к настройке.

Запускаем сервер:

# systemctl start [email protected]

Если сервер не запустился, а в логе ошибка:

TCP/UDP: Socket bind failed on local address [undef]: Permission denied

Значит вам нужно либо правильно настроить, либо отключить SELinux. В данном материале я не хочу касаться настройки SELinux, поэтому просто отключаем его:

# mcedit /etc/sysconfig/selinux

меняем значение

SELINUX=disabled

Чтобы изменения вступили в силу, выполняет:

# setenforce 0

Пробуем снова запустить openvpn сервер:

# systemctl start [email protected]

Если опять видите какие-то ошибки, то проверяйте лог файлы /var/log/openvpn/openvpn.log и /var/log/messages. Там почти наверняка будет указано, в чем проблема. Проверяем, запустился сервер или нет:

# netstat -tulnp | grep 13555

udp        0      0 0.0.0.0:13555           0.0.0.0:*                           1900/openvpn

Отлично, запустился на указанном порту.

Добавляем сервер openvpn в автозагрузку:

# systemctl enable [email protected]

Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].

Теперь внимательно проверим корректность всех настроек на сервере. Сначала посмотрим информацию о сетевых интерфейсах:

Обращаем внимание на адреса туннеля vpn. Теперь проверяем статические маршруты:

Тут тоже все в порядке. Траффик для подсети филиала 192.168.150.0/24 будет маршрутизироваться в тоннель. С настройкой сервера закончили, идем теперь на клиент.

Настройка firewall (iptables) для openvpn

Рассмотрю отдельно вопрос настройки iptables для работы openvpn. В целом, там нет никаких нюансов в самих правилах. Нам необходимо открыть входящий порт для подключения к серверу, разрешить транзитный трафик и включить nat для openvpn интерфейсов. Проблемы обычно бывают в реализации настроек самого firewall.

Если вы используете нативные iptables, то нужны будут следующие правила, разрешающие весь трафик в и из vpn туннелей.

iptables -A INPUT -i ens18 -p udp --dport 13555 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
$IPT -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

Не забудьте разместить их выше правил блокировки, если таковые у вас имеются. Если вы используете firewalld для настройки фаервола, то набор правил для openvpn будет следующий:

firewall-cmd --add-port="13555"/"udp"
firewall-cmd --zone=trusted --add-source=10.0.0.0/24
firewall-cmd --permanent --add-port="13555"/"udp"
firewall-cmd --permanent --zone=trusted --add-source=10.0.0.0/24
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.0.0.0/24 -j MASQUERADE
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.0.0.0/24 -j MASQUERADE

Если нужно как-то сегментировать доступ в vpn сети, то настраивайте более точечно с использованием конкретных адресов и подсетей. Тонкая настройка правил iptables не тема данной статьи, поэтому я не буду на этом подробно останавливаться.

Сам я обычно использую нативные iptables и управляю ими с помощью скрипта. Более подробно я описываю настройку iptables в отдельной статье. В соответствии с этой статьей я использую следующий итоговый набор правил всего сервера для iptables.

#!/bin/bash

export IPT="iptables"

# Внешний интерфейс
export WAN=ens18
export WAN_IP=10.20.1.38

# Локальная сеть
export LAN1=ens19
export LAN1_IP_RANGE=192.168.220.1/24

# Очищаем правила
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Запрещаем все, что не разрешено
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# Разрешаем localhost и локалку
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN1 -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN1 -j ACCEPT

# Рзрешаем пинги
$IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# Разрешаем исходящие подключения сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT

# разрешаем установленные подключения
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Отбрасываем неопознанные пакеты
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Отбрасываем нулевые пакеты
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# Закрываемся от syn-flood атак
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

# Разрешаем доступ из локалки наружу
$IPT -A FORWARD -i $LAN1 -o $WAN -j ACCEPT
# Закрываем доступ снаружи в локалку
$IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT

# Разрешаем OpenVPN
$IPT -A INPUT -i tun+ -j ACCEPT
$IPT -A OUTPUT -o tun+ -j ACCEPT
$IPT -A FORWARD -i tun+ -j ACCEPT
# Разрешаем доступ из внутренней сети в vpn
$IPT -A FORWARD -i $LAN1 -o tun+ -j ACCEPT

# Включаем NAT
$IPT -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN1_IP_RANGE -j MASQUERADE

# открываем доступ к SSH
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Открываем порт для openvpn
$IPT -A INPUT -i $WAN -p udp --dport 13555 -j ACCEPT

# Сохраняем правила
/sbin/iptables-save  > /etc/sysconfig/iptables

Это минимальный набор правил для шлюза локальной сети с openvpn на борту. Про настройку шлюза на базе centos я так же рассказываю отдельно. Для сервера клиента openvpn набор правил будет точно такой же, только ip адреса, подсети и интерфейсы будут другие.

Настройка в CentOS клиента openvpn

На centos-client не забываем настроить или отключить SELinux. Устанавливаем openvpn:

# yum install openvpn

Создаем в директории /etc/openvpn/client/ файл конфигурации client.conf:

# mcedit /etc/openvpn/client/client.conf
dev tun
proto udp
remote 10.20.1.38 13555
client
resolv-retry infinite
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/client01.crt
key /etc/openvpn/client/client01.key
tls-crypt /etc/openvpn/client/tc.key
route 192.168.220.0 255.255.255.0
remote-cert-tls server
auth SHA256
cipher AES-256-CBC
persist-key
persist-tun
resolv-retry infinite
nobind
comp-lzo
verb 3
status /var/log/openvpn/openvpn-status.log 1
status-version 3
log-append /var/log/openvpn/openvpn-client.log

Не забываем скопировать в /etc/openvpn/client/ сохраненные ранее ключи ca.crt, client01.crt, client01.key и tc.key.

Обращаю внимание на параметр route в данном конфиге. Его можно здесь не указывать, сделав конфиг более унифицированным для множества клиентов. Вместо этого данную настройку можно передавать с сервера openvpn, указав в файле настроек клиента параметр push route следующим образом:

push "route 192.168.220.0 255.255.255.0"

Создаем каталог для логов:

# mkdir /var/log/openvpn

Запускаем openvpn client:

# systemctl start [email protected]

Добавляем в автозагрузку:

# systemctl enable [email protected]

Теперь смотрим картину сетевых настроек на клиенте:

Ну и маршруты глянем заодно:

Все в порядке, подключение к vpn серверу есть, маршруты прописаны верно. Как вы видите, трафик к удаленной сети 192.168.220.0.24 пойдет через vpn туннель. Маршрут для него openvpn поднял автоматически в соответсвии со своими настройками на клиенте или сервере.

В принципе, этого уже достаточно, чтобы трафик забегал в обе стороны из одной подсети в другую. Но для этого у вас должны быть соответствующим образом настроены сами шлюзы, фаерволы на них, маскарадинг, в том числе на интерфейсе tun. Как это можно сделать, я приводил выше в примерах своих настроек iptables.

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

net.ipv4.ip_forward = 1

в файл /etc/sysctl.conf и применить настройку:

# sysctl -p

Если у вас этого не сделано, то трафик между интерфейсами ходить не будет.

Если ваш openvpn клиент не подключается, то в первую очередь проверяйте настройки firewall — входящие подключения к серверу и исходящие клиента. Обратите внимание на номер порта и тип (TCP или UDP) если вы их меняли. У меня были затупы, когда никак не мог разобраться, почему нет соединения. Оказывалось, что я менял порт c UDP на TCP, но по привычке на фаерволе оставлял UDP.

Теперь давайте проверим, как бегают пакеты в нашей vpn сети. Заходим на centos-client (192.168.150.1) и пингуем centos-server (192.168.220.1) и pc1 (192.168.220.10):

Заходим на pc2 (192.168.150.10) и пингуем centos-server и pc1:

Теперь в обратную сторону. Заходим на pc1 (192.168.220.10) и пингуем centos-client (192.168.150.1) и pc2 (192.168.150.10):

И напоследок пропингуем с vpn сервера подсеть клиента:

Как видите, связь настроена в обе стороны. Если у вас что-то где-то не пингуется, то смотрите в первую очередь на наличие маршрутов на самих серверах с openvpn, а так же на настройки firewall. Проблемы могут быть только здесь. Ну и не забудьте настроить windows firewall на самих виндовых машинах. И помните про антивирусы на них. А то бывает кучу времени потратишь на поиск проблемы, а ее на самом деле не было. Пинги не работали, потому что тупо запрещены на виндовых машинах.

В завершение темы объединения удаленных офисов, проверим доступ к общим сетевым ресурсам. Расшарим папку на PC1 и зайдем на нее с PC2:

Все получилось. Мы реально объединили удаленные офисы в единую связную сеть с помощью openvpn сервера. Дальше поверх vpn можно настраивать работу остальных сервисов. Например, объединить 2 сервера asterisk или контроллеры домена.

Настройка openvpn client в windows

Теперь рассмотрим вариант подключения к нашей логической сети удаленного сотрудника с рабочей станцией windows. Допустим, мы объединили наши офисы в единую сеть, доступ работает в обе стороны.[1-2]$ ]]; do
read -rp «Select an option [1-2]: » -e pass
done

clientexist=$(tail -n +2 /etc/openvpn/keys/easyrsa/pki/index.txt | grep -c -E «/CN=$user\$»)
if [[ $clientexist == ‘1’ ]]; then
echo «»
echo «The specified client name was already found in easy-rsa»
exit
else
cd /etc/openvpn/keys/easyrsa/ || return
case $pass in
1)
./easyrsa build-client-full «$user» nopass
;;
2)
./easyrsa build-client-full «$user»
;;
esac
echo «Client $user added.»
fi

touch /etc/openvpn/ccd/$user
mkdir -p $confdir

echo «dev tun
proto $proto
remote $server $port
client
resolv-retry infinite
remote-cert-tls server
auth SHA256
cipher AES-256-CBC
persist-key
persist-tun
resolv-retry infinite
nobind
comp-lzo
verb 3» > $confdir/$user.ovpn
{ echo «<ca>»
cat «/etc/openvpn/keys/easyrsa/pki/ca.crt»
echo «</ca>»

echo «<cert>»
awk ‘/BEGIN/,/END/’ «/etc/openvpn/keys/easyrsa/pki/issued/$user.crt»
echo «</cert>»

echo «<key>»
cat «/etc/openvpn/keys/easyrsa/pki/private/$user.key»
echo «</key>»

echo «<tls-crypt>»
cat «/etc/openvpn/server/tc.key»
echo «</tls-crypt>»
} >> $confdir/$user.ovpn

Скрипт делает следующие операции:

  1. Проверяет, есть ли уже пользователь с указанным именем. Если есть, то завершает работу.
  2. Выпускает и подписывает сертификат пользователя, давая возможность выбрать, указывать пароль для защиты приватного ключа или нет.
  3. Создает пустой файл для серверных настроек пользователя в ccd директории. Параметры туда нужно будет добавить вручную, если они нужны.
  4. Создает готовый конфиг .ovpn, куда включены параметры подключения и все необходимые сертификаты и ключи.

Сразу предупреждаю, чтобы не было вопросов и претензий. Скрипт написал во время подготовки статьи. Красоту и оптимизацию не делал. Убедился, что все работает, конфиг на выходе корректный. Подобные вещи можно улучшать, дополнять до бесконечности. Настройка vpn серверов не моя специализация, поэтому тратить много времени на красивые и функциональные скрипты у меня нет возможности.

Дальше редактируем файл конфигурации на сервере openvpn для этого клиента:

# cd /etc/openvpn/ccd
# mcedit user08
push "route 192.168.220.0 255.255.255.0"
push "route 192.168.150.0 255.255.255.0"

Этими параметрами мы передаем клиенту маршруты к обоим сетям офисов. Если нужно подключать клиента только к какой-то одной сети, то оставляйте одну сеть, вторую удаляйте. Обращаю внимание на еще один факт. В конфигурации openvpn сервера у нас уже добавлен маршрут для 192.168.220.0, так что он в любом случае будет добавлен всем клиентам, которые будут подключаться к этому серверу.

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

push "redirect-gateway def1 bypass-dhcp"

Теперь нужно скачать openvpn client под нашу версию windows. Ссылки для скачивания я давал в самом начале статьи. Дальше выполняем установку клиента. Обращаю внимание, что для полной установки понадобятся права администратора:

Приступаем к настройке клиента openvpn в windows. Для этого нам понадобится файл конфигурации, который мы создали ранее. Заберите его любым подходящим способом. Например, с помощью WinSCP.  Файл конфигурации openvpn клиента будет выглядеть примерно так:

dev tun
proto udp
remote 10.20.1.38 13555
client
resolv-retry infinite
route 192.168.220.0 255.255.255.0
remote-cert-tls server
auth SHA256
cipher AES-256-CBC
persist-key
persist-tun
resolv-retry infinite
nobind
comp-lzo
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIIDVDCCAjygAwIBAgIUBPs8jwyy1zXzzPxXwsy8Zym6TRcwDQYJKoZIhvcNAQEL
BQAwGTEXMBUGA1UEAwwOc2VydmVyYWRtaW4ucnUwHhcNMjEwMTE1MDQyMjM3WhcN
MzEwMTEzMDQyMjM3WjAZMRcwFQYDVQQDDA5zZXJ2ZXJhZG1pbi5ydTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMzWGWWY1ly8goyiLJrSWm9jwA7L/lL1
ItwOU3IJbA1FUJkZN4o2xnrzzcjYnpAauF/JBoUGXPPn8tbfOxAw0ScrwK2041N5
j3OgjtMJDa64WBfW8JhSu2qMWFkE6MMyl254nzRQWX1xp7W6T+TevvBFqbwlQf6B
34HqNTcsBB0w98L/2+jndYEA73+5/WIUj48GQl3qxlbF7mebPcnJ9uY4R7ypX7Dv
EsdJc0N5Ccn7knBdDkPLu+cy6c2W5QBHYVp+ZJSvZyGzpKgv39RaChDqM3+Ak+i2
C0U8DY8XZIrh93hH//6FpzH+cFLspOeu95k2qg+2FKgqTlAfkS82JtsCAwEAAaOB
kzCBkDAdBgNVHQ4EFgQUjSVPyvZ1R1/lDApbcielAyjLrFMwVAYDVR0jBE0wS4AU
jSVPyvZ1R1/lDApbcielAyjLrFOhHaQbMBkxFzAVBgNVBAMMDnNlcnZlcmFkbWlu
LnJ1ghQE+zyPDLLXNfPM/FfCzLxnKbpNFzAMBgNVHRMEBTADAQH/MAsGA1UdDwQE
AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAD9OnpuyAypQ3NXDKp4gCp/vTmfJtYZmf
1fJ4qIAhuxfh5dOzuWEEGH/SOFj1WLimS0DhKPedo4NxwEvl3mfX15BVVg4l+64l
eEDrKgYQqCZe+uTM1kjy9910rLBu9k5HlMJN/pdtl9Weg9Xl7HIM2icnnLgaxvid
iyywlH0PjCOAB3cYh36yplqxF/etgin2EYBsws+9wuKsp07lxGHr6K8BpNfhb7FJ
kHqs6No1N3OvgY0NVICEEjdfSjRZoWenuwbUWQI9upkDJu3fwb2DedR5UbRFiUsA
thpky1K16oYpRAIEKSWKjcC16Zf0kE+vOVEXU6VSArpLx2DEE2LHJw==
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIDWzCCAkOgAwIBAgIRAM4vdyTPpevleeccthmYizQwDQYJKoZIhvcNAQELBQAw
GTEXMBUGA1UEAwwOc2VydmVyYWRtaW4ucnUwHhcNMjEwMTE1MTYwNzA1WhcNMjMw
NDIwMTYwNzA1WjARMQ8wDQYDVQQDDAZ1c2VyMDUwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDUW+fSTJZFWoisj3gTHg797lIqhnbebczYY6GIPALqy37Q
TBsyzeaCA4pt/1PKe7PMafxrVc9nu+bwEdR1OynN0EJppujb1AkqVWsF197qoCoD
wCNfzcKOcuVLOJzfPGbQrUth3yMCJJ+hT39P+Z8ZPwhks2lR29FqwzDJFObBfA7F
aLl9JI5wSX+imz0WSYKhkrBA9PUg3UAJ9cDjY3p3Y6m4QI0R49Hh5PJpJ4z0xRXI
iCl2rCvLbkxTiUZoDMfsAO9rYKMb0zVvWtnz+YuJVGlck7AGTrPMeBC92u5dNo+h
YS1IWbQdu8LgwXCMaWwscEAp50VErVMoTO1h6ut/AgMBAAGjgaUwgaIwCQYDVR0T
BAIwADAdBgNVHQ4EFgQUfT6l/W9IvkNnSKrzJYHYtCxoBhowVAYDVR0jBE0wS4AU
jSVPyvZ1R1/lDApbcielAyjLrFOhHaQbMBkxFzAVBgNVBAMMDnNlcnZlcmFkbWlu
LnJ1ghQE+zyPDLLXNfPM/FfCzLxnKbpNFzATBgNVHSUEDDAKBggrBgEFBQcDAjAL
BgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQELBQADggEBAGPjghLJpB55n6ioyT8Jzw5l
AiXW/9FyNDMN6zWF3wrkHvZznLZWfOXnTmZdnh8icvzieUngUHoKSgSgAJDJNWp1
KVQ4pgts9g62qerYzsLVS+1HIBSYLul/W336sma2YsstDNBrUpZKhFwwl0J1EeGY
7SvdBSE0ysxia3NxT3LPoziQ0FIr7GLT1KosOTO6JzKRHgDzPkW5njHioaRyKTMN
ahKc9ESW3/ShgQndoYldXQTs4LCOYrSkspzf3651I1XnQkwb+jofvC0Sba3YXnXy
tROkDsB0lr3p4Wmne+oIj8A4NcNCb3HWimMVfbhzHvqx8rBhnAdmpLhyLjyNgc0=
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDUW+fSTJZFWois
j3gTHg797lIqhnbebczYY6GIPALqy37QTBsyzeaCA4pt/1PKe7PMafxrVc9nu+bw
EdR1OynN0EJppujb1AkqVWsF197qoCoDwCNfzcKOcuVLOJzfPGbQrUth3yMCJJ+h
T39P+Z8ZPwhks2lR29FqwzDJFObBfA7FaLl9JI5wSX+imz0WSYKhkrBA9PUg3UAJ
9cDjY3p3Y6m4QI0R49Hh5PJpJ4z0xRXIiCl2rCvLbkxTiUZoDMfsAO9rYKMb0zVv
Wtnz+YuJVGlck7AGTrPMeBC92u5dNo+hYS1IWbQdu8LgwXCMaWwscEAp50VErVMo
TO1h6ut/AgMBAAECggEANFPVQu/WU46kgQj1SJiujwnru0jY/6RExsl+I0jOWzb7
r64hQZqVA1KGCObSqeFjg6pWJcjGS8R0epGaLaz/dxSrWMdlN83+2CymK5Fu/5ep
4rS0wsW7/Ef5kliH50ZF+4PIQHu0G7IUl7Y0I+vZtWnf0piXCjHFX65rVhFNbz2E
iC1XcpbgYV9/YisTniT815hTt2MVGCs64Vf5gt9TEwTD0GTEj9PX1mnafSvnHH9l
cs/6/g9Jgx4c+G3JTlks7kZB+AaHiQG46eR42lyo2kHRwYeO44LYvJYmG+wL1S+2
q9Kwy+7x4a2uqPmdQ/ggN4m+TGJBwJExBQA+KJHNoQKBgQD0kvQhIAetQNQEXSJr
HvZ+VKuA85vl3ODhIYSJse+wHGpOusvzsQFYb5fdJlEHTxrScDjfLRJn7cnyYzGt
pAHXY8D4E/hCZ53CgSs8S3F0FgVSITT5P8MftIu+ydbM+365n9qkIb7kmh8qEOaa
C/2NCWTWHwHDmPZ52kVME4CPbwKBgQDeR6r9mRvhpCJjIi1h0qn7ru50wYRskZP7
aM0dNqubhaKlRZMVfjyh2ZLVxZ0l2EoeiE3Nm6HbSgfW5P7oKw9HWTqOgVRQy6Z+
VZnMkXFCwqvPoxZLLzTw+0OLctk4zs40tyP0swNoUjTu0QYIJFxFGs1OpcwPsenW
Lcgrpyhc8QKBgQD0TTZ/QDdq4K7oDQAscKlYV8tY6/52BcS8HXb+9DawfDHUotLH
gbAOXqobxgJ6gpIQUvj8NVGFbwmijWM6R/Fu7b38EDaUXlw/xjch61pQ0w5Nk84O
i5qlOPu+gG+IIk/bq8oC2ZKNV0Z6BpfSmNeU4iVPnXltoIXUAivmajSpEQKBgF8k
phgutTR8IQv10R8SIRhN5FutiZU/KuxuC335rLLBHMFJao/EnQdYd6VxFLbiQbeX
+FWNzFYk9f4Rvtp5s+yCUQI2cXSz9uwUj+R0TNqaoRgbYquD5VFQ+7Rw0HH0c2c1
DPrstQSuS2H9rmtFxQj/U+naJeKB8OlwZ0HoJurBAoGBAPGBekQHqVToFXylxOst
ufyj0bAUWyoFKUHc7jiTOYUTlxsDcQho8aeveRD5GkE0ZTiKLFv9/QouCUjLKj2u
tD/IyAjj5X59FhIJ4pu+xiJhaie7LvoojiCQMtP5lrt+y6IH+pzd0L3P1S/e5ttd
UJ2bVZguV0qBXoJiKbuDmJl+
-----END PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
73a440594e622482311817c96808bbe6
ef2cf42445013ab49ac7e2e64bc15b84
fd11ce32252690989a1bc56ae24318a5
3097e194f17578b819febcef7dfb9651
125bd310a67ddd40bcf388af777cc2b2
14505ed2dd827a5346a1ac2d0f2b8c5a
472680165136adabdeead231a73530db
9aaa30d0e1309d415db00a803b7893d7
36dd9b376d9083e9773c2365f61839b6
0740ee6943b8f3c39b8f7e36e7fe485a
c4c07f0dc1827b2aecc809775b86a078
ffc9976dcab6a1221890d0d73096697c
9cf1f9958f2cd6a2a474a8357249606d
ba688aa0cac64d44614b0e7683e6e894
dafeffc9da5ded05b06c88986eb4fac6
960398bb8b70fe01c8c06c1abd7db8bd
-----END OpenVPN Static key V1-----
</tls-crypt>

У нас нет задачи видеть сеть за клиентом, да и он скорее всего не будет являться шлюзом, поэтому параметра iroute для этого клиента нет. Плюс убраны пути для логов — openvpn будет создавать их в папке по умолчанию — C:\users\username\OpenVPN\log. Туда же, рядом, кладем конфиг в папку  C:\users\username\OpenVPN\config.

Для подключения openvpn клиента в windows запускаем OpenVPN GUI от имени администратора!

Это важно, без прав администратора openvpn client для правильной маршрутизации не сможет прописать необходимые  маршруты автоматически.

Ищем мониторчик в трее, нажимаем правой кнопкой мыши на него и выбираем «Подключиться».

Если в директории с конфигами несколько файлов конфигураций, то будет выбор, к какому серверу подключиться. Чтобы одновременно подключаться к разным серверам, необходимо добавить несколько TAP-Windows Adapter для openvpn.

Во время подключения мониторчик будут гореть желтым цветом. Как только подключение будет установлено, цвет сменится на зеленый. Это означает, что openvpn клиент успешно создал туннель и можно начинать работать по vpn.

Для того, чтобы openvpn client автоматически подключался при запуске, нужно создать для него ярлык с параметрами:

--connect "user05.ovpn"

Для этого выбираем ярлык на рабочем столе OpenVPN GUI и нажимаем правой кнопкой мыши, открываем «Свойства».  На вкладке «Ярлык» в поле «Объект» в самом конце дописываем указанные параметры. Вся строка должна выглядеть следующим образом:

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "user05.ovpn"

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

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

192.168.220.1192.168.220.10192.168.150.1192.168.150.10

Отлично, связь есть. Теперь попробуем зайти на сетевой ресурс, который мы создали ранее на компьютере сети филиала PC2:

Доступ есть, все в порядке. Если у вас какие-то проблемы с доступом к ресурсам по vpn, в первую очередь смотрите маршруты на клиенте. Они должны быть прописаны до всех необходимых подсетей филиалов.

Если запустить openvpn gui без прав администратора, то он не сможет добавить маршруты в систему. Соответственно и доступа никуда не будет.

Автоматическое подключение Openvpn при загрузке системы

Если вы хотите, чтобы ваш openvpn клиент в Windows автоматически подключался к серверу при старте системы, необходимо во время установки клиента добавить установку OpenVPN Service. По умолчанию она отключена.

Когда клиент будет установлен, убедитесь, что указанная служба имеет автоматический запуск.

Выше вы можете наблюдать еще одну службу, которая добавляется автоматически во время установки openvpn client в windows. Она отвечает за возможность запускать с правами администратора openvpn-gui у пользователя, который администратором не является.

Для того, чтобы после загрузки Winows OpenVPN подключилась автоматически к серверу, необходимо добавить конфигурационный файл в директорию C:\Program Files\OpenVPN\config-auto.

Теперь проверяйте. Перезагрузите компьютер и смотрите настройки сетевых интерфейсов Openvpn TAP-Windows.

Подключение к openvpn серверу выполнено автоматически после загрузки операционной системы. Через GUI информации об этом подключении вы не увидите. Если что-то пойдет не так, то лог автоматического подключения будет в директории C:\Program Files\OpenVPN\log. Если вам нужно будет подключиться к еще одному vpn серверу, то вы можете сделать это через openvpn-gui, если в системе есть еще сетевые интерфейсы openvpn.

Подключение по Openvpn в Android

Для того, чтобы настроить openvpn подключение в Android, я обычно использую приложение OpenVPN Connect. Каких-то проблем с ним я не испытывал. К тому же настраивается очень просто. В приложение достаточно импортировать конфигурационный файл с интегрированными сертификатами, типа того, что мы использовали ранее. Его можно передать через любой мессенджер со сквозным шифрованием, если переживаете за безопасность. Или просто отправить по почте вложением или зашифрованным архивом. Я передал через чат VK 🙂

При этом приложение нормально поддерживает и tls-crypt, и сжатие. Если у вас будут какие-то проблемы с этой программой на android, попробуйте еще OpenVPN for Android. Оно тоже нормально работает, но настройки более замороченные.

Подключившись к локальной сети в Android с помощью openvpn, можно пользоваться локальными ресурсами. Например, я иногда подключаюсь по RDP с помощью Microsoft Remote Desktop.

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

В завершении расскажу об еще одной важной функциональности openvpn сервера — отзыв сертификатов пользователей. Делается это для того, чтобы запретить подключение конкретного пользователя к вашей vpn сети. Выполнить отзыв сертификата можно с помощью easyrsa следующим образом:

# ./easyrsa --batch revoke user01

Using SSL: openssl OpenSSL 1.1.1g FIPS  21 Apr 2020
Using configuration from /etc/openvpn/keys/easyrsa/pki/easy-rsa-1505.XnOgIX/tmp.3v8Hny
Enter pass phrase for /etc/openvpn/keys/easyrsa/pki/private/ca.key:
Revoking Certificate 2A4F516FA120BE4284FE9D0C46119BB0.
Data Base Updated

После отзыва необходимо сформировать файл со списком отозванных сертификатов. Это нужно будет делать каждый раз после отзыва.

# ./easyrsa gen-crl

Скопируем теперь этот файл в директорию с конфигом openvpn server.

# cp /etc/openvpn/keys/easyrsa/pki/crl.pem /etc/openvpn/server/

Если ранее у вас там уже был файл отозванных сертификатов, его надо будет либо удалить, либо перезаписать. Для того, чтобы сервер проверял отозванные сертификаты, в файл настроек server.conf нужно добавить соответствующий параметр.

crl-verify /etc/openvpn/server/crl.pem

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

Так же после отзыва не лишним будет удалить файл настроек и конфигурации клиента, а так же сохраненный ip адрес. Чтобы все это не делать вручную, я написал простенький скрипт revoke-user.sh, который включает все необходимые действия.

#!/bin/bash

echo -n "Enter user name for revoke: "
read user

clientexist=$(tail -n +2 /etc/openvpn/keys/easyrsa/pki/index.txt | grep -c -E "/CN=$user\$")
    if [[ $clientexist == '0' ]]; then
	echo ""
        echo "The specified client name was not found in easy-rsa"
        exit
    else
    cd /etc/openvpn/keys/easyrsa/
    ./easyrsa revoke "$user"
    ./easyrsa gen-crl
    rm -f /etc/openvpn/server/crl.pem
    cp /etc/openvpn/keys/easyrsa/pki/crl.$user,.*/d" /etc/openvpn/server/ipp.txt
    echo ""
    echo "Certificate $user revoked."
    fi

Отозванные сертификаты в списке index.txt помечаются буквой R.

На этом все основное по настройке openvpn сервера.

Заключение

Теперь подведем итоги того, что мы сделали:

  1. В первую очередь настроили сервер openvpn на CentOS. Для этого создали инфраструктуру для удостоверяющего центра СА, с помощью которого мы создаем сертификаты.
  2. Затем с помощью этого центра сформировали сертификаты для сервера и клиента, в роли которых выступает головной офис компании и его филиал.
  3. Потом мы настроили openvpn сервер в офисе компании и подключили к нему в качестве клиента сервер филиала. Проверили это соединение, взаимную доступность узлов обоих сетей.
  4. В завершении сформировали сертификат для удаленного сотрудника и настроили ему подключение openvpn клиента в windows. Проверили доступность всех узлов обоих сетей.

По этой схеме можно добавить любое количество филиалов или удаленных сотрудников к общей сети. Я с крупными сетями не работал, но лично подключал до 5-ти удаленных филиалов к головной сети офисов, плюс удаленных пользователей к ним. У пользователей маршрутами настраивал доступ к той или иной сети. Единственная проблема, которая тут может возникнуть, это если нумерация подключаемых сетей будет совпадать. Но тут уже ничего не поделаешь, придется ее где-то менять, либо выкручиваться с помощью netmap или как-то еще.

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

Если вам нужен мониторинг пользователей, подключенных по openvpn, то читайте мою статью по мониторингу OpenVPN в Zabbix. Она достаточно старая и мониторинг там сделан не оптимально, но лучше у меня ничего нет. Как основа для вашего мониторинга сойдет, а дальше сможете сами модернизировать как вам будет нужно.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

Онлайн курс по Kubernetes

Онлайн-курс по Kubernetes – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes. Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам. Курс не для новичков – нужно пройти вступительный тест.

Если вы ответите «да» хотя бы на один вопрос, то это ваш курс:

  • устали тратить время на автоматизацию?
  • хотите единообразные окружения?;
  • хотите развиваться и использовать современные инструменты?
  • небезразлична надежность инфраструктуры?
  • приходится масштабировать инфраструктуру под растущие потребности бизнеса?
  • хотите освободить продуктовые команды от части задач администрирования и автоматизации и сфокусировать их на развитии продукта?

Сдавайте вступительный тест по и присоединяйтесь к новому набору!.

Видео

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Пошаговая настройка OpenVPN в Windows / Песочница / Хабр

#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

# This definition stops the following lines choking if HOME isn’t

# defined.

HOME =.

RANDFILE = $ENV::HOME/.rnd

# Extra OBJECT IDENTIFIER info:

#oid_file = $ENV::HOME/.oid

oid_section = new_oids

# To use this configuration file with the «-extfile» option of the

# «openssl x509» utility, name here the section containing the

# X.509v3 extensions to use:

# extensions =

# (Alternatively, use a configuration file that has only

# X.509v3 extensions in its main [= default] section.)

[ new_oids ]

# We can add new OIDs in here for use by ‘ca’ and ‘req’.

# Add a simple OID like this:

# testoid1=1.2.3.4

# Or use config file substitution like this:

# testoid2=${testoid1}.5.6

####################################################################

[ ca ]

default_ca = CA_default # The default ca section

####################################################################

[ CA_default ]

dir = $ENV::KEY_DIR # Where everything is kept

certs = $dir # Where the issued certs are kept

crl_dir = $dir # Where the issued crl are kept

database = $dir/index.txt # database index file.

new_certs_dir = $dir # default place for new certs.

certificate = $dir/ca.crt # The CA certificate

serial = $dir/serial # The current serial number

crl = $dir/crl.pem # The current CRL

private_key = $dir/ca.key # The private key

RANDFILE = $dir/.rand # private random number file

x509_extensions = usr_cert # The extentions to add to the cert

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs

# so this is commented out by default to leave a V1 CRL.

# crl_extensions = crl_ext

default_days = 3650 # how long to certify for

default_crl_days= 30 # how long before next CRL

default_md = md5 # which md to use.

preserve = no # keep passed DN ordering

# A few difference way of specifying how similar the request should look

# For type CA, the listed attributes must be the same, and the optional

# and supplied fields are just that 🙂

policy = policy_match

# For the CA policy

[ policy_match ]

countryName = match

stateOrProvinceName = match

organizationName = match

organizationalUnitName = optional

commonName = supplied

emailAddress = optional

# For the ‘anything’ policy

# At this point in time, you must list all acceptable ‘object’

# types.

[ policy_anything ]

countryName = optional

stateOrProvinceName = optional

localityName = optional

organizationName = optional

organizationalUnitName = optional

commonName = supplied

emailAddress = optional

####################################################################

[ req ]

default_bits = $ENV::KEY_SIZE

default_keyfile = privkey.pem

distinguished_name = req_distinguished_name

attributes = req_attributes

x509_extensions = v3_ca # The extentions to add to the self signed cert

# Passwords for private keys if not present they will be prompted for

# input_password = secret

# output_password = secret

# This sets a mask for permitted string types. There are several options.

# default: PrintableString, T61String, BMPString.

# pkix: PrintableString, BMPString.

# utf8only: only UTF8Strings.

# nombstr: PrintableString, T61String (no BMPStrings or UTF8Strings).

# MASK:XXXX a literal mask value.

# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings

# so use this option with caution!

string_mask = nombstr

# req_extensions = v3_req # The extensions to add to a certificate request

[ req_distinguished_name ]

countryName = Country Name (2 letter code)

countryName_default = $ENV::KEY_COUNTRY

countryName_min = 2

countryName_max = 2

stateOrProvinceName = State or Province Name (full name)

stateOrProvinceName_default = $ENV::KEY_PROVINCE

localityName = Locality Name (eg, city)

localityName_default = $ENV::KEY_CITY

0.organizationName = Organization Name (eg, company)

0.organizationName_default = $ENV::KEY_ORG

# we can do this but it is not needed normally 🙂

#1.organizationName = Second Organization Name (eg, company)

#1.organizationName_default = World Wide Web Pty Ltd

organizationalUnitName = Organizational Unit Name (eg, section)

#organizationalUnitName_default =

commonName = Common Name (eg, your name or your server\’s hostname)

commonName_max = 64

emailAddress = Email Address

emailAddress_default = $ENV::KEY_EMAIL

emailAddress_max = 40

# SET-ex3 = SET extension number 3

[ req_attributes ]

challengePassword = A challenge password

challengePassword_min = 4

challengePassword_max = 20

unstructuredName = An optional company name

[ usr_cert ]

# These extensions are added when ‘ca’ signs a request.

# This goes against PKIX guidelines but some CAs do it and some software

# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:FALSE

# Here are some examples of the usage of nsCertType. If it is omitted

# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.

# nsCertType = server

# For an object signing certificate this would be used.

# nsCertType = objsign

# For normal client use this is typical

# nsCertType = client, email

# and for everything including object signing:

# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.

# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape’s comment listbox.

nsComment = «OpenSSL Generated Certificate»

# PKIX recommendations harmless if included in all certificates.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid,issuer:always

# This stuff is for subjectAltName and issuerAltname.

# Import the email address.

# subjectAltName=email:copy

# Copy subject details

# issuerAltName=issuer:copy

#nsCaRevocationUrl = www.domain.dom/ca-crl.pem

#nsBaseUrl

#nsRevocationUrl

#nsRenewalUrl

#nsCaPolicyUrl

#nsSslServerName

[ server ]

# JY ADDED — Make a cert with nsCertType set to «server»

basicConstraints=CA:FALSE

nsCertType = server

nsComment = «OpenSSL Generated Server Certificate»

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid,issuer:always

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]

# Extensions for a typical CA

# PKIX recommendation.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer:always

# This is what PKIX recommends but some broken software chokes on critical

# extensions.

#basicConstraints = critical,CA:true

# So we do this instead.

basicConstraints = CA:true

# Key usage: this is typical for a CA certificate. However since it will

# prevent it being used as an test self-signed certificate it is best

# left out by default.

# keyUsage = cRLSign, keyCertSign

# Some might want this also

# nsCertType = sslCA, emailCA

# Include email address in subject alt name: another PKIX recommendation

# subjectAltName=email:copy

# Copy issuer details

# issuerAltName=issuer:copy

# DER hex encoding of an extension: beware experts only!

# obj=DER:02:03

# Where ‘obj’ is a standard or added object

# You can even override a supported extension:

# basicConstraints= critical, DER:30:03:01:01:FF

[ crl_ext ]

# CRL extensions.

# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.

# issuerAltName=issuer:copy

authorityKeyIdentifier=keyid:always,issuer:always

Настройка OpenVPN руководство и видео в 2021 [АйТи бубен]

В интернете много статей как поднять OpenVpn за 5 минут. Да, действительно сервер OpenVPN можно поднять быстро. Но моя статья показывает, сколько всего остается за кадром, если устанавливать OpenVPN без понимания как он в действительности работает. И стремясь все сделать быстро — вы сможете столкнуться как с проблемой безопасности, так и с тем что не сможете подключить все свои устройства в к вашему пятиминутному OpenVpn.

Вы после установки по мануалу «пятиминутного» Openvpn, прочеканите согласно этому руководству, что же Вы в действительности установили.

Dmytro Yakovenko 2021/03/10

OpenVPN — это приложение для создания безопасного IP-туннеля через единый UDP- или Порты TCP-порт 1194. Для обеспечения безопасности управляющего канала и потока данных, OpenVPN использует библиотеку OpenSSL (точнее протоколы SSLv3/TLSv1) т.е. доступны все возможности шифрования, аутентификации и сертификации библиотеки OpenSSL (любой шифр, размер ключа). Также может использоваться пакетная авторизация Алгоритм HMAC для OpenVPN, для обеспечения большей безопасности, и аппаратное ускорение для улучшения производительности шифрования.

OpenVPN используется на Solaris, OpenBSD, FreeBSD, NetBSD, GNU/Linux, Apple Mac OS X и Microsoft Windows.

  1. Предустановленный ключ, — самый простой метод.

  2. С помощью логина и пароля, — может использоваться без создания клиентского сертификата (серверный сертификат все равно нужен).

OpenVPN может использовать статические, предустановленные ключи или обмен динамическими ключами на основе TLS. Он также поддерживает соединения VPN с динамическими удалёнными узлами (DHCP или клиенты dial-up), туннели поверх NAT или через полноценный межсетевой экран (например, Правила iptables в Linux).

Настройки конфигурационного файла клиента идентичны по синтаксису и написанию как для Linux, так и для Windows.

В первую очередь нужно арендовать виртуальный сервер VPS/VDS c root-доступом к операционной системе, с постоянным IP- адресом. Если вы собираетесь использовать сервер только в качестве VPN сервера, то вам не нужны дополнительные панели управления, типа ISPmanager, Hestia.

Не все хостинг-провайдеры разрешают использование VPN-серверов, поэтому перед заказом услуги предварительно у техподдержки узнайте разрешают ли они использование VPN сервера.

Рекомендация: если вам нужен доступ доступ к российским сайтам (Яндекс.Директ, Яндекс Почта, Wordstat, Вконтакте, Одноклассники, Mail.ru), то на мой взгляд, стоит выбрать российские сервера, например проверенный Timeweb. Для тех, кому нужен доступ к заблокированным в Российской Федерации сайтам, нужно арендовать сервер за пределами России, например ТОП 3 хостинг провайдеров.

Основные компоненты сети OpenVPN и объекты

Безопасность и шифрование в OpenVPN обеспечивается библиотекой Как пользоваться OpenSSL и протоколом транспортного уровня Transport Layer Security (TLS). Вместо OpenSSL в новых версиях OpenVPN можно использовать библиотеку PolarSSL. Протокол TLS представляет собой усовершенствование протокола защищенной передачи данных уровня защищенных сокетов Secure Socket Layers (Что такое SSL сертификат для сайта, почты).

В OpenSSL может использоваться симметричная и ассиметричная криптография.

В первом случае перед началом передачи данных на все узлы сети необходимо поместить одинаковый секретный ключ. При этом возникает проблема безопасной передачи этого ключа через небезопасный Интернет.

Во втором случае у каждого участника обмена данными есть два ключа — публичный (открытый) и приватный (секретный).

Публичный ключ используется для зашифрования данных, а приватный — для расшифрования. В основе шифрования лежит довольно сложная математика. Выбранный в SSL/TLS алгоритм зашифрования публичным ключом обеспечивает возможность расшифрования только с помощью приватного ключа.

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

Для безопасной передачи данных необходимо идентифицировать стороны, принимающие участие в обмене данными. В противном случае можно стать жертвой так называемой «атаки посредника» (Man in the Middle, MITM). В ходе такой атаки злоумышленник подключается к каналу передачи данных и прослушивает его. Он также может вмешиваться, удалять или изменять данные.

Чтобы обеспечить аутентификацию (проверку подлинности пользователя) протокол TLS использует инфраструктуру публичных ключей (Public Key Infrastructure, PKI) и асимметричную криптографию.

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

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

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

Задача:

  1. Настроить сервер OpenVPN Ubuntu 18.04.4 LTS в облаке. Выбор Linux сервера для OpenVPN: Облачная технология от DigitalOcean, Цена виртуального сервера 5 долларов в месяц. Колокейшн (дата-центр) выбран Амстердам, прекрасная связь с Украиной в этом центре.
  2. Создать простую инструкцию для подчиненного сисадмина по управлению сертификатами/ключами: создание, удаление и отзыв сертификатов клиентов OpenVPN

Предоставить доступ удаленным сотрудникам к локальным сетям для работы с бухгалтерским программным обеспечением и для просмотра видеокамер наблюдения.
Подключаемые удаленные офисы:

  1. Офис Московский: 4 локальных сети со шлюзом под управлением Debian GNU/Linux 7.11 (wheezy)

  2. Офис Данилевского: 1 локальная сеть шлюз Ubiquiti EdgeOS
  3. Офис Гагарина 1: 1 локальная сеть

Клиенты:

  1. Мобильные клиенты на Android

  2. Удаленные клиенты Windows 10

Создание нового сертификата пользователя, под правами обычного пользователя (не root).

cd ~/openvpn-ca
source vars
./build-key zabbix
cd ~/client-configs
./make_config.sh zabbix
cp /etc/openvpn/ccd/base.client /etc/openvpn/ccd/zabbix

Шаблон base.client содержит комментированные строки такого содержания

base.client
$ cat base.client
 
#ifconfig-push 10.8.0.21 10.8.0.22
#push "route 192.168.35.0 255.255.255.0"
#push "route 192.168.22.0 255.255.255.0"
#push "route 10.90.91.0 255.255.255.0"
#iroute 192.168.35.0 255.255.255.0
#iroute 192.168.22.0 255.255.255.0
#iroute 10.90.91.0 255.255.255.0
# all trafic to VPN
#push "redirect-gateway def1 bypass-dhcp"
#push "dhcp-option DNS 208.67.222.222"
#push "dhcp-option DNS 208.67.220.220"

Для отзыва дополнительных сертификатов выполните следующие шаги.

Настройка сетевой конфигурации Linux — сервера для безопасной работы сервера OpenVPN: iptables/UFW, ядро Linux.

Делаем первичную настройку безопасности Ubuntu. Iptables при помощи ufw разрешаем только SSH.

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

Необходимо настроить сетевую конфигурацию сервера, чтобы OpenVPN мог корректно перенаправлять трафик. Инструкция применима для операционных систем на базе Linux ядра: Debian, Ubuntu, CentOS и т.д..

Разрешим серверу перенаправлять трафик, настройка производится в файле /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

Найдите строку настройки net.ipv4.ip_forward. Удалите “#” из начала строки, чтобы раскомментировать её.
Для применения настроек к текущей сессии наберите команду:

sudo sysctl -p

В общем случае для корректной работы сервера OpenVPN вы должны открыть входящий порт для клиентов и включить NAT Маскарадинг (Masquerading) преобразование, если вы весь трафик клиента, хотите маршрутизировать через VPN.

В моей практике, чаще встречается конфигурация, когда клиентам нужно дать доступ только к локальным сетям, а весь основной трафик идет через обычного провайдер. В этом случае NAT настраивать не надо.

Firewall iptables:
Открываем UDP порт 1194 и разрешаем пакеты приходящие с интерфейса TUN и TAP или tun.

iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
or
iptables -A INPUT -i tun+ -j ACCEPT
# для динамического IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Если вы используете надстройку над iptables UFW, выполните нижеприведенные действия.

Найдите публичный интерфейс сети (public network interface). Для этого наберите команду:

ip route | grep default

Публичный интерфейс должен следовать за словом «dev».
Зная название интерфейса откроем файл /etc/ufw/before.rules и добавим туда соответствующие настройки:

sudo nano /etc/ufw/before.rules

Это файл содержит настройки UFW, которое применяются перед применением правил UFW. Добавьте в начало файла выделенные красным строки. Это настроит правила, применяемые по умолчанию, к цепочке POSTROUTING в таблице nat.

Не забудьте заменить eth0 в строке -A POSTROUTING на имя интерфейса, найденное нами ранее.

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#
 
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0] 
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
 
# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Теперь мы должны сообщить UFW, что ему по умолчанию необходимо разрешать перенаправленные пакеты. Для этого откройте файл /etc/default/ufw. Найдите в файле директиву DEFAULT_FORWARD_POLICY. Мы изменим значение с DROP на ACCEPT:

DEFAULT_FORWARD_POLICY="ACCEPT"

Далее настроим сам файрвол для разрешения трафика в OpenVPN.

Если вы не меняли порт и протокол в файле /etc/openvpn/server.conf, вам необходимо разрешить трафик UDP для порта 1194. Если вы изменили эти настройки, введите указанные вами значения.

sudo ufw allow 1194/udp

Теперь деактивируем и активируем UFW для применения внесённых изменений:

sudo ufw disable
sudo ufw enable

Сначала установим OpenVPN на наш сервер. OpenVPN доступен в стандартных репозиториях Ubuntu, мы можем использовать apt для его установки. Также мы установим пакет easy-rsa, который позволит нам настроить наш собственный внутренний центр сертификации (certificate authority, CA) для использования с нашей VPN.

Обновим список пакетов сервера и установим необходимые пакеты следующими командами:

sudo apt update
sudo apt full-upgrade
sudo apt install openvpn easy-rsa

OpenVPN это виртуальная частная сеть, использующая TLS/SSL. Это означает, что OpenVPN использует сертификаты для шифрования трафика между сервером и клиентами. Для выпуска доверенных сертификатов (trusted certificates) нам потребуется создать наш собственный центр сертификации.

Первый вариант копирования файлов easy-rsa

cp -r /usr/share/easy-rsa  /etc/openvpn/
cd /etc/openvpn/easy-rsa

Но я буду использовать второй вариант копирования файлов easy-rsa
Для начала скопируем шаблонную директорию easy-rsa в нашу домашнюю директорию с помощью команды make-cadir:

make-cadir ~/openvpn-ca

Откройте на компьютере CA каталог EasyRSA, для этого перейдем в директорию openvpn-ca для начала настройки центра сертификации:

cd ~/openvpn-ca

В этом каталоге есть файл с именем vars, создайте его копию.

cp vars vars.original

Для настройки переменных нашего центра сертификации нам необходимо отредактировать файл vars. Откройте этот файл в вашем текстовом редакторе:

nano vars

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

Чтобы в дальнейшем, при создании сертификатов, не появлялась ошибка про отсутствие файла openssl.cnf, вы можете пойти двумя путями. Первый просто переименовать нужный файл.

cp openssl-1.0.0.cnf openssl.cnf

И второй путь, отредактировать в файле vars параметр export KEY_CONFIG:

# This variable should point to
# the openssl.cnf file included
# with easy-rsa.
#export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_CONFIG=$EASY_RSA/openssl-1.0.0.cnf

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

~/openvpn-ca/vars
. . .
 
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
 
. . .

Замените значения, на что-нибудь другое, не оставляйте их не заполненными:

~/openvpn-ca/vars
. . .
 
export KEY_COUNTRY="UA"
export KEY_PROVINCE="NY"
export KEY_CITY="Kharkiv"
export KEY_ORG="Mirax"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyPersonal"
 
. . .

Отредактируйте значение KEY_NAME чуть ниже, которое заполняет поле субъекта сертификатов. Проще всего задать ему имя server, потому что в документации примеры конфигов сервера OpenVPN используют это имя:

~/openvpn-ca/vars
export KEY_NAME="server"

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

Теперь мы можем использовать заданные нами переменные и утилиты easy-rsa для создания центра сертификации.

Убедитесь, что вы находитесь в директории центра сертификации и используйте команду source к файлу vars:

cd ~/openvpn-ca
source vars

Вы должны увидеть следующий вывод:

Вывод

NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Возможно вам нужно будет переименовать файл:

cp openssl-1.0.0.cnf openssl.cnf

Убедимся, что мы работаем в “чистой среде” выполнив следующую команду:

./clean-all

Теперь мы можем создать наш корневой центр сертификации командой:

./build-ca

Эта команда запустит процесс создания ключа и сертификата корневого центра сертификации. Поскольку мы задали все переменные в файле vars, все необходимые значения будут введены автоматически. Нажимайте ENTER для подтверждения выбора:

В результате будет создан центр сертификации и два важных файла, ca.crt и ca.key, представляющие открытую и закрытую части сертификата SSL.

Теперь у нас есть центр сертификации, который мы сможем использовать для создания всех остальных необходимых нам файлов.

Теперь ваш центр сертификации установлен и готов подписывать запросы сертификатов.

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

Начнём с создания сертификата OpenVPN и ключей для сервера. Это можно сделать следующей командой:

Внимание: Если ранее вы выбрали имя, отличное от server, вам придётся немного изменить некоторые инструкции. Например, при копировании созданных файлов в директорию /etc/openvpn вам придётся заменить имена на заданные вами. Вам также придётся изменить файл /etc/openvpn/server.conf для того, чтобы он указывал на корректные .crt и .key файлы.

./build-key-server server

Вывод опять будет содержать значения по умолчанию, переданные этой команде (server), а также значения из файла vars.

Согласитесь со всеми значениями по умолчанию, нажимая ENTER. Не задавайте challenge password. В конце процесса два раза введите y для подписи и подтверждения создания сертификата:

Вывод

. . .

Certificate is to be certified until May  1 17:51:16 2026 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

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

./build-dh

Для завершения этой команды может потребоваться несколько минут.

Далее мы можем сгенерировать подпись HMAC для усиления способности сервера проверять целостность TSL:

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

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

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

Поскольку мы можем вернуться к этому шагу позже, мы повторим команду source для файла vars. Мы будем использовать параметр client1 для создания первого сертификата и ключа.

Для создания файлов без пароля для облегчения автоматических соединений используйте команду build-key:

cd ~/openvpn-ca
source vars
./build-key client1

Для создания файлов, защищённых паролем, используйте команду build-key-pass:

cd ~/openvpn-ca
source vars
./build-key-pass client1

В ходе процесса создания файлов все значения по умолчанию будут введены, вы можете нажимать ENTER. Не задавайте challenge password и введите y на запросы о подписи и подтверждении создания сертификата.

Далее настроим конфигурационный файл сервера OpenVPN с использованием созданных ранее файлов.

Копирование файлов в директорию OpenVPN. Нам необходимо скопировать нужные нам файлы в директорию /etc/openvpn.

Сначала скопируем созданные нами файлы. Они находятся в директории ~/openvpn-ca/keys, в которой они и были созданы. Нам необходимо скопировать сертификат и ключ центра сертификации, сертификат и ключ сервера, подпись HMAC и файл Diffie-Hellman:

cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key server.crt server.key ta.key dh3048.pem /etc/openvpn

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

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Изменения вносимые в скопированный конфигурационный файл /etc/openvpn/server.conf. Приведенные ниже директивы, нужно или добавить или раскомментировать, а директиву cipher заменить.

tls-auth ta.key 0
key-direction
cipher AES-128-CBC
auth SHA256
user nobody
group nogroup

Рабочий конфигурационный файл OpenVPN сервера:

server.conf
;local a.b.c.d
local xxx.xxx.xxx.xxx
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh3048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
push "route 192.168.35.0 255.255.255.0"
client-config-dir ccd
route 192.168.35.0 255.255.255.0
route 192.168.22.0 255.255.255.0
route 10.90.91.0 255.255.255.0
# маршрут передается всем клиентам
push "route 192.168.35.0 255.255.255.0"
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
key-direction 0
cipher AES-128-CBC
auth SHA256
;compress lz4-v2
;push "compress lz4-v2"
;comp-lzo
max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
;log-append  /var/log/openvpn/openvpn.log
verb 3
;mute 20
explicit-exit-notify 1

Включим сервис OpenVPN с помощью systemd.

При запуске сервера OpenVPN необходимо указать имя нашего файла конфигурации в качестве переменной после имени файла systemd. Файл конфигурации для нашего сервера называется /etc/openvpn/server.conf, поэтому мы добавим @server в конец имени файла при его вызове:

sudo systemctl start openvpn@server

Убедимся, что сервис успешно запущен командой:

sudo systemctl status openvpn@server

Если всё в порядке, настроем сервис на автоматическое включение при загрузке сервера:

sudo systemctl enable openvpn@server

Создание структуры директорий для конфигурационных файлов клиентов. В домашней директории создайте структуру директорий для хранения файлов:

mkdir -p ~/client-configs/files

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

chmod 700 ~/client-configs/files

Создание базовой конфигурации:
Далее скопируем конфигурацию-пример в нашу директорию для использования в качестве нашей базовой конфигурации:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Откройте этот файл в вашем текстовом редакторе:

nano ~/client-configs/base.conf

Работающий base.conf. Я привел его одинаковым настройкам с сервером, изменил параметры cipher, auth, key-direction. Основное отличие клиентского файла от серверного в директиве client и задании местонахождения сервера OpenVPN, при помощи директивы remote.

Если ваш клиент работает на Linux и использует файл /etc/openvpn/update-resolv-conf нужно раскомментировать три нижние строчки.

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
base.conf
client
dev tun
proto udp
;remote xxx.xxx.xxx.xxx 1194
remote vpn8.example.net 1194
resolv-retry infinite
nobind
#user nobody
#group nogroup
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-CBC
cipher AES-128-CBC
auth SHA256
#comp-lzo
verb 3
;mute 20
key-direction 1
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Теперь создадим простой скрипт для генерации файлов конфигурации с релевантными сертификатами, ключами и файлами шифрования. Он будет помещать сгенерированные файла конфигурации в директорию ~/client-configs/files.

Создайте и откройте файл make_config.sh внутри директории ~/client-configs:

nano ~/client-configs/make_config.sh

Вставьте следующие текст в этот файл:

make_config.sh
~/client-configs/make_config.sh
#!/bin/bash
 
# First argument: Client identifier
 
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
 
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

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

Сделайте его исполняемым файлом командой:

chmod 700 ~/client-configs/make_config.sh

Теперь легко и понятно можно генерировать файлы конфигурации клиентов.

Если вы следовали всем шагам этой статьи, вы создали сертификат client1.crt и ключ клиента client1.key командой ./build-key client1 на шаге 7. Вы можете сгенерировать конфигурацию для этих файлов перейдя в директорию ~/client-configs и используя только что созданный нами скрипт:

cd ~/client-configs
./make_config.sh client1

Если всё прошло успешно, мы должны получить файл client1.ovpn в директории ~/client-configs/files:

ls ~/client-configs/files
 
client1.ovpn

Теперь вы должны скопировать или переместить полученный файл конфигурации на клиентское устройство: на компьютер или смартфон.

Для Linux проще всего ставить этот же пакет OpenVPN, но настраивать его клиентом.

sudo apt install openvpn

Пример рабочего конфига для Ubuntu 20.04.1 LTS скачиваем файл (с расширением ovpn) созданный на этапе 10. Копируем его в директорию /etc/openvpn клиента (переименовываем расширение):

cp client1.ovpn client1.conf

Тестируем работу клиента:

sudo openvpn --config client1.conf

Если все ОК — настраиваем автозапуск клиента в Ubuntu. Для Ubuntu 18.04 LTS и выше нужно включить службу OpenVPN для запуска во время загрузки перечитать конфиг systemctl:

sudo systemctl enable openvpn
sudo systemctl daemon-reload

Запускаем клиента

sudo systemctl start openvpn

В директории ccd хранятся индивидуальные настройки для каждого клиента. Имя файла должно соответствовать имени сгенерированного клиентского сертификата. Файлы конфигурации клиентов являются текстовыми файлами и содержат команды, выполняемые сервером при подключении клиентов. Обычно файл клиента содержать команды:

  1. добавляет клиенту маршрут к локальной подсети центрального офиса(push «route 192.168.1.0 255.255.255.0»)

  2. определяет адрес локальной подсети, находящейся за клиентом (например iroute 192.168.2.0 255.255.255.0)

  3. привязка к статическому IP (ifconfig-push 192.168.14.21 192.168.14.22), где ifconfig-push <IP-адрес клиента> <IP-адрес сервера>. Выбранные пары IP-адресов, во-первых, должны быть уникальными, во-вторых, должны входить в состав последовательных подсетей, ограниченных маской /30 (255.255.255.252), и, в-третьих, должны находиться в пределах пула IP-адресов, выделенного для виртуальной частной сети (определяется параметром server файла конфигурации сервера OpenVPN).

# mkdir /etc/openvpn/ccd
# nano ccd/farm1c
push "route 192.168.1.0 255.255.255.0"
#push "route 192.168.35.0 255.255.255.0"
# static IP
ifconfig-push 192.168.14.21 192.168.14.22
#iroute 192.168.2.0 255.255.255.0

Сотрудники увольняются и им нужно запретить доступ к VPN. Значит нужно отозвать их сертификат. Команда revoke-full с именем клиента используется для отзыва ssl сертификата OpenVPN.

Если нет файла .rnd (это файл генератора псевдослучайных чисел) в каталоге пользователя, от имени которого вы создаете сертификаты, выполните командой:

$ cd
$ touch .rnd

Переходим в директорию центра сертификации и вводим команды:

$ cd ~/openvpn-ca
$ source vars

Отзываем сертификат используя команду revoke-full с именем клиента, например client1.

$ ./revoke-full client1

В результате работы будет создан файл crl.pem в директории keys с необходимой для отзыва сертификата информацией.
Теперь нужно объяснить серверу OpenvPN, где ему брать информацию об отозванных сертификатах, для этого используется директива crl-verify. Сервер OpenVPN будет проверять список отозванных сертификатов из файла каждый раз crl.pem, когда кто-то устанавливает соединение с сервером.

Копируем crl.pem в каталог. В конце файла /etc/openvpn/server.conf задаем путь через директиву crl-verify

crl-verify crl.pem

Перезапускаем сервер OpenVPN

# service openvpn restart

Теперь клиент не сможет устанавливать соединение с сервером OpenVPN используя старый сертификат, в логе сервера будет появляться строка о том что сертификат отозван: VERIFY ERROR: depth=0, error=certificate revoked

Эта процедуру нужно проделывать для отзыва каждого созданного вами сертификата.

Если у вас 2 сервера openvpn, вам следует переименовать crl.pem и в crl-verify задать файл со своим именем. Просто для второго сервера копируем и переименовываем crl.pem например в crltcp.pem. Если вы укажите один и тот же файл для разных OpebVPN серверов — ваши сервера будут падать.

Frequently Asked Questions OpenVPN. Часто задаваемые вопросы по настройке сервера и клиентов OpenVPN

Проблема: Если сервер подключён к ISP при помощи технологии Как работает PPPoE, в этом случае OpenVPN не сможет сделать доступными сети за подключённым клиентом. Не будет отрабатывать команда iroute. Это связано с тем, что PPP прописывает маршрут по умолчанию в таком виде:

# netstat -rn
Kernel IP routing table              
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0

Т.е. указывается маршрутом по умолчанию интерфейс (ppp0), а не IP адресс, такой записи сервер OpenVPN не понимает, для корректной работы сервера OpenVpn маршрут должен бы вида:

# netstat -rn
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         91.196.96.35    255.255.255.255 UGH       0 0          0 ppp0

Решение: Исправить маршрут по умолчанию можно командой (соответственно указав нужный вам IP)

route add 0/0 gw 91.196.96.35

или в скрипте при загрузке системы, но после поднятия интерфейса ppp0

route del default
route add default gw 91.196.96.35 dev ppp0

Окружение: Клиент выходит в интернет с Ubuntu 14.04.3 LTS + Настройка Dnsmasq Ubuntu установленной в FAQ VirtualBox. Сеть установлена в VirtualBox как сетевой мост. IP получается от Настройка DHCP сервера Linux, FreeBSD на интернет роутере (Netis WF2419R).

Проблема: Не работает push «dhcp-option DNS 10.26.95.254″. Соответственно все Что такое DNS Dnsmasq отсылает основному DNS серверу. Все бы ничего если бы клиенту не нужны локальные Что такое DNS.

Решение: Был доустановлен основной пакет

aptitude install dnsmasq

добавлены описания наших локальных зон (non-public domains) в конфигурационный файл dnsmasq.conf

server=/gaga.lan/10.26.95.254
server=/m86a.lan/10.26.95.254
server=/atlex.lan/10.26.95.254
 
server=/95.26.10.in-addr.arpa/10.26.95.254
server=/168.192.in-addr.arpa/10.26.95.254
server=/85.161.10.in-addr.arpa/10.26.95.254

В файле /etc/logrotate.d/openvpn прописываем настройки для приложения logrotate, ключевой параметр copytruncate (чтобы не перегружать OpenVPN и заставить его писать данные в тот же лог файл)

openvpn
etc/openvpn/servers/vpnluxor/logs/openvpn.log {
        daily
        rotate 8
        compress
        delaycompress
        missingok
        copytruncate
        notifempty
        create 640 root
}

Для управления сертификатами/клиентами сервера OpenVPN при помощи веб-интерфейса существует не так много программ:

ФайлМашинаНазначениеДоступ
ca.crtСервер и клиентыСертификат корневого САПубличный
ca.keyТолько на сервереНеобходим для подписи других сертификатовСекретный
dh{n}.pemТолько на сервереDiffie Hellman параметрыПубличный
vpnspar.crtТолько на сервереСертификат сервераПубличный
vpnspar.keyТолько на сервереКлюч сервераСекретный
darkfire.crtТолько на клиентеСертификат клиентаПубличный
darkfire.keyТолько на клиентеКлюч клиентаСекретный

Подборка руководств по настройке сервера и клиентов OpenVPN.

В этом разделе приведены как ссылки на мои руководства по настройке OpenVPN, так и на руководства других авторов, которым я доверяю.

Расширение границ VPN для включения дополнительных машин из подсетей на стороне клиента или сервера. Включение нескольких машин на стороне сервера при использовании маршрутизируемого VPN (dev tun)

Поскольку VPN действует только в режиме точка-точка, может возникнуть желание расширить границы VPN так, чтобы клиенты могли связываться с другими машинами в сети сервера, а не только с самим сервером.

Чтобы проиллюстрировать это примером, предположим, что в локальной сети на стороне сервера используется подсеть 10.66.0.0/24 и для пула VPN-адресов используется 10.8.0.0/24, о чем говорится в директиве server в файле конфигурации OpenVPN-сервера.

Во-первых, вы должны сообщить VPN-клиентам, что подсеть 10.66.0.0/24 доступна через VPN. Это легко можно сделать с помощью следующих директив в конфигурационном файле сервера:

push "route 10.66.0.0 255.255.255.0"

Далее, необходимо настроить на LAN— шлюзе в сети сервера маршрут для маршрутизации пакетов, предназначенных для подсети VPN-клиентов (10.8.0.0/24) через OpenVPN-сервер (это необходимо только тогда, когда сервер OpenVPN и LAN-шлюз – разные машины).

Убедитесь, что вы включили пересылку для IP (ip-forwarding) (параметр ядра net.ipv4.ip_forward должен быть равен 1) и TUN/TAP на машине OpenVPN-сервера.

Проталкивание изменений DNS для перенаправления всего трафика через VPN.

Сделанные нами настройки создают VPN соединение между двумя машинами, но они не заставляют эти машины использовать VPN соединение. Если вы хотите использовать VPN соединение для всего своего трафика, вам необходимо протолкнуть (push) настройки DNS на клиентские машины.

Для этого вам необходимо раскомментировать несколько директив. Найдите секцию redirect-gateway и удалите “;” из начала строки для расскоментирования redirect-gateway:

/etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"

Чуть ниже находится секция dhcp-option. Удалите “;” для обеих строк:

/etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Это позволит клиентам сконфигурировать свои настройки DNS для использования VPN соединения в качестве основного.

Руководство по установке клиента OpenVPN Connect в Windows

Введение

Это руководство предназначено для пользователей продукта OpenVPN Access Server, которые хотят подключить свой компьютер с Windows с помощью официального программного обеспечения OpenVPN Connect Client. В описанных ниже действиях мы проведем вас через процесс получения клиента OpenVPN Connect из веб-интерфейса вашего сервера доступа, а также его установку и использование в операционной системе Windows. За исключением некоторых незначительных различий из-за разных версий используемого программного обеспечения, это руководство должно быть точным и простым для понимания.На каждом шаге можно щелкнуть, чтобы отобразить снимок экрана для этого конкретного шага в процессе установки. На каждый снимок экрана можно щелкнуть, чтобы открыть галерею изображений, по которой вы можете пройти все шаги.

Требования

Вам потребуется действующий набор учетных данных, таких как имя пользователя и пароль, и, конечно же, адрес вашего сервера доступа OpenVPN. Если вы не являетесь администратором сервера доступа, к которому собираетесь подключиться, вам следует обратиться к администратору этого сервера для получения этой информации.Мы здесь, в OpenVPN Inc., не можем предоставить эту информацию, поскольку мы не управляем серверами наших клиентов. Если вы являетесь администратором своего сервера доступа, вы можете создавать новые учетные записи пользователей, используя веб-интерфейс администратора сервера доступа или настроенный вами внешний сервер аутентификации, а затем использовать эти учетные данные для получения и установки клиента OpenVPN Connect в Windows.

Последняя версия OpenVPN Connect Client для Windows в настоящее время поддерживает следующие операционные системы:

  • Windows 10
  • Windows 8 и 8.1
  • Windows 7 с пакетом обновления 1
  • Windows Vista с пакетом обновления 2

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

Обратите внимание, что мы не проводим принудительную проверку версии. Таким образом, вы можете обнаружить, что клиент работает в более старых версиях Windows, но мы обеспечиваем поддержку только для платформ, упомянутых выше.Если вам требуется подключение к неподдерживаемой платформе Windows, где клиент OpenVPN Connect не работает, например, Windows XP, мы предлагаем вам попробовать более старый клиент с открытым исходным кодом OpenVPN для Windows, поскольку он может по-прежнему иметь некоторую поддержку Windows XP.

Загрузка и установка клиента OpenVPN Connect для Windows

Перейдите к веб-интерфейсу клиента OpenVPN Access Server.

Войдите, используя свои учетные данные.

Щелкните значок Windows

Подождите, пока загрузка завершится, а затем откройте ее (точная процедура немного зависит от браузера).

Нажмите «Выполнить» или «Открыть», чтобы начать процесс установки.

Согласитесь с EULA

Щелкните Установить.

Нажмите «Да», чтобы утвердить запрос на повышение привилегий.

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

Теперь клиент OpenVPN Connect готов к использованию на панели задач.

How To Guide: Set Up & Configure OpenVPN client / server VPN

OpenVPN — это полнофункциональная SSL VPN, которая реализует безопасное сетевое расширение OSI уровня 2 или 3 с использованием стандартного протокола SSL / TLS, поддерживает гибкие методы аутентификации клиента на основе сертификаты, смарт-карты и / или учетные данные имени пользователя и пароля, а также позволяет применять политики управления доступом для конкретных пользователей или групп с помощью правил брандмауэра, применяемых к виртуальному интерфейсу VPN.OpenVPN не является прокси-сервером веб-приложения и не работает через веб-браузер.

OpenVPN 2.0 расширяет возможности OpenVPN 1.x, предлагая масштабируемый режим клиент / сервер, позволяя нескольким клиентам подключаться к одному процессу сервера OpenVPN через один порт TCP или UDP. OpenVPN 2.3 включает в себя большое количество улучшений, включая полную поддержку IPv6 и PolarSSL.

Этот документ предоставляет пошаговые инструкции по настройке OpenVPN 2.x клиент / сервер VPN, в том числе:

Этот HOWTO предполагает, что читатели обладают предварительным пониманием основных сетевых концепций, таких как IP-адреса, имена DNS, маски сети и т. Д. подсети, IP-маршрутизация, маршрутизаторы, сетевые интерфейсы, локальные сети, шлюзы и правила брандмауэра.

Оригинальный OpenVPN 1.x HOWTO все еще доступен и остается актуальным для конфигураций точка-точка или статических ключей.

Хотя этот HOWTO поможет вам настроить масштабируемую клиент-серверную VPN с использованием X509 PKI (инфраструктура открытого ключа с использованием сертификатов и закрытых ключей), это может оказаться излишним, если вы ищете только простую настройку VPN с сервером, который может справиться с одним клиентом.

Если вы хотите быстро запустить VPN с минимальной конфигурацией, вы можете прочитать мини-HOWTO по статическому ключу.

Исходный код OpenVPN и установщики Windows можно скачать здесь. Последние выпуски (2.2 и новее) также доступны в виде пакетов Debian и RPM; подробности см. в вики OpenVPN.

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

Если вы используете дистрибутив Linux, который поддерживает пакеты RPM (SuSE, Fedora, Redhat и т. Д.), Лучше всего установить с помощью этого механизма.Самый простой способ — найти существующий двоичный файл RPM для вашего дистрибутива. Вы также можете создать свой собственный двоичный файл RPM:

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

Дополнительные примечания по созданию пакета RPM для Red Hat Linux см. В файле openvpn.spec. 9 или здание с уменьшенными зависимостями.

Если вы используете Debian, Gentoo или дистрибутив Linux, не основанный на RPM, используйте специфичный для вашего дистрибутива механизм упаковки, такой как apt-get в Debian или emerge в Gentoo.

Также можно установить OpenVPN в Linux, используя универсальный метод ./configure . Сначала разверните файл .tar.gz:

OpenVPN для Windows можно установить из самоустанавливающегося exe-файла на странице загрузки OpenVPN. Помните, что OpenVPN будет работать только в Windows XP или более поздней версии. Также обратите внимание, что OpenVPN должен быть установлен и запущен пользователем с правами администратора (это ограничение налагается Windows, а не OpenVPN). Ограничение можно обойти, запустив OpenVPN в фоновом режиме в качестве службы, и в этом случае даже пользователи без прав администратора смогут получить доступ к VPN после ее установки.Дополнительное обсуждение проблем с привилегиями OpenVPN + Windows.

Официальные установщики OpenVPN для Windows включают OpenVPN-GUI, который позволяет управлять подключениями OpenVPN из апплета на панели задач. Также доступны другие приложения с графическим интерфейсом.

После запуска установщика Windows OpenVPN готов к использованию и будет ассоциироваться с файлами с расширением .ovpn . Чтобы запустить OpenVPN, вы можете:

Некоторые примечания доступны в файле INSTALL для определенных ОС. В общем, можно использовать метод

, или вы можете искать порт или пакет OpenVPN, специфичный для вашей ОС / дистрибутива.

Обзор маршрутизации по сравнению с мостом Ethernet см. В разделе часто задаваемых вопросов. См. Также страницу OpenVPN Ethernet Bridging для получения дополнительных примечаний и деталей по мосту.

В целом, маршрутизация, вероятно, является лучшим выбором для большинства людей, поскольку она более эффективна и проще в настройке (в том, что касается самой конфигурации OpenVPN), чем мост. Маршрутизация также обеспечивает большую возможность выборочного управления правами доступа для конкретного клиента.

Я бы рекомендовал использовать маршрутизацию, если вам не нужна особая функция, которая требует мостового соединения, например:

Настройка VPN часто влечет за собой соединение частных подсетей из разных мест.

Internet Assigned Numbers Authority (IANA) зарезервировал следующие три блока пространства IP-адресов для частных сетей (кодифицировано в RFC 1918):

Хотя адреса из этих сетевых блоков обычно должны использоваться в конфигурациях VPN, важно выбрать адреса, которые минимизируют вероятность конфликтов IP-адресов или подсетей. Типы конфликтов, которых следует избегать:

Например, предположим, что вы используете популярную подсеть 192.168.0.0/24 в качестве частной подсети LAN.Теперь вы пытаетесь подключиться к VPN из интернет-кафе, которое использует ту же подсеть для своей локальной сети Wi-Fi. У вас будет конфликт маршрутизации, потому что ваш компьютер не будет знать, относится ли 192.168.0.1 к локальному шлюзу WiFi или к тому же адресу в VPN.

В качестве другого примера предположим, что вы хотите связать вместе несколько сайтов с помощью VPN, но каждый сайт использует 192.168.0.0/24 в качестве своей подсети LAN. Это не будет работать без добавления усложняющего уровня преобразования NAT, потому что VPN не будет знать, как маршрутизировать пакеты между несколькими сайтами, если эти сайты не используют подсеть, которая их однозначно идентифицирует.

Лучшее решение — избегать использования 10.0.0.0/24 или 192.168.0.0/24 в качестве адресов частной сети LAN. Вместо этого используйте то, что с меньшей вероятностью будет использоваться в Wi-Fi-кафе, аэропорту или отеле, откуда вы можете рассчитывать на удаленное подключение. Лучшими кандидатами являются подсети в центре огромного сетевого блока 10.0.0.0/8 (например, 10.66.77.0/24).

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

Первый шаг в создании OpenVPN 2.x заключается в создании PKI (инфраструктуры открытого ключа). PKI состоит из:

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

И сервер, и клиент будут аутентифицировать друг друга, сначала проверив, что представленный сертификат был подписан главным центром сертификации (ЦС), а затем проверив информацию в заголовке теперь аутентифицированного сертификата, такую ​​как общее имя сертификата или тип сертификата. (клиент или сервер).

Обратите внимание, что часы сервера и клиента должны быть примерно синхронизированы, иначе сертификаты могут работать некорректно.

В этом разделе мы сгенерируем главный сертификат / ключ CA, сертификат / ключ сервера и сертификаты / ключи для 3 отдельных клиентов.

Для управления PKI мы будем использовать easy-rsa 2 , набор скриптов, который включен в OpenVPN 2.2.x и ранее. Если вы используете OpenVPN 2.3.x, вам необходимо загрузить easy-rsa 2 отдельно отсюда.

Для управления PKI мы будем использовать easy-rsa 2, набор скриптов, который входит в состав OpenVPN 2.2.x и ранее. Если вы используете OpenVPN 2.3.x, вам может потребоваться загрузить easy-rsa 2 отдельно от страницы проекта easy-rsa-old. На платформах * NIX вам следует рассмотреть возможность использования easy-rsa 3; обратитесь к его собственной документации для получения подробной информации.

Если вы используете Linux, BSD или unix-подобную ОС, откройте оболочку и cd в подкаталог easy-rsa . Если вы установили OpenVPN из файла RPM или DEB, каталог easy-rsa обычно находится в / usr / share / doc / packages / openvpn или / usr / share / doc / openvpn (лучше всего скопировать это каталог в другое место, например / etc / openvpn , перед любыми изменениями, чтобы будущие обновления пакета OpenVPN не перезаписывали ваши изменения).Если вы установили из файла .tar.gz, каталог easy-rsa будет находиться в каталоге верхнего уровня расширенного дерева исходных текстов.

Если вы используете Windows, откройте окно командной строки и перейдите по адресу \ Program Files \ OpenVPN \ easy-rsa . Запустите следующий командный файл, чтобы скопировать файлы конфигурации на место (это перезапишет все существующие файлы vars.bat и openssl.cnf):

Теперь отредактируйте файл vars (в Windows он называется vars.bat ) и установите KEY_COUNTRY , Параметры KEY_PROVINCE, KEY_CITY, KEY_ORG и KEY_EMAIL.Не оставляйте ни один из этих параметров пустым.

Затем инициализируйте PKI. В Linux / BSD / Unix:

Последняя команда ( build-ca ) создаст сертификат и ключ центра сертификации (CA) путем вызова интерактивной команды openssl :

Обратите внимание, что в приведенной выше последовательности наиболее запрашиваемые параметры по умолчанию были установлены на значения, установленные в файлах vars или vars.bat . Единственный параметр, который необходимо ввести явно, — это общее имя .В приведенном выше примере я использовал «OpenVPN-CA».

Далее мы сгенерируем сертификат и закрытый ключ для сервера. В Linux / BSD / Unix:

Как и в предыдущем шаге, для большинства параметров можно установить значения по умолчанию. Когда запрашивается общее имя , введите «сервер». Два других запроса требуют положительных ответов: «Подписать сертификат? [Y / n]» и «1 из 1 запросов на сертификат сертифицирован, зафиксировать? [Y / n]».

Создание клиентских сертификатов очень похоже на предыдущий шаг.В Linux / BSD / Unix:

Если вы хотите защитить паролем ключи клиента, замените сценарий build-key-pass .

Помните, что для каждого клиента обязательно введите соответствующее Common Name при появлении запроса, то есть «client1», «client2» или «client3». Всегда используйте уникальное общее имя для каждого клиента.

Параметры Диффи Хеллмана должны быть сгенерированы для сервера OpenVPN. В Linux / BSD / Unix:

Теперь мы найдем наши вновь сгенерированные ключи и сертификаты в подкаталоге keys .Вот объяснение соответствующих файлов:

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

А теперь подождите, скажете вы. Разве нельзя установить PKI без уже существующего безопасного канала?

Якобы да. В приведенном выше примере для краткости мы сгенерировали все закрытые ключи в одном месте. Приложив немного больше усилий, мы могли бы сделать это иначе.Например, вместо генерации клиентского сертификата и ключей на сервере мы могли бы заставить клиент генерировать свой собственный закрытый ключ локально, а затем отправить запрос на подпись сертификата (CSR) на машину для подписи ключей. В свою очередь, машина для подписания ключей могла обработать CSR и вернуть подписанный сертификат клиенту. Это можно было сделать, даже не требуя, чтобы секретный файл .key покинул жесткий диск машины, на которой он был создан.

Лучше всего использовать образцы файлов конфигурации OpenVPN в качестве отправной точки для вашей собственной конфигурации.Эти файлы также можно найти в

. Обратите внимание, что в Linux, BSD или unix-подобных операционных системах образцы файлов конфигурации называются server.conf и client.conf . В Windows они называются server.ovpn и client.ovpn .

Образец файла конфигурации сервера является идеальной отправной точкой для конфигурации сервера OpenVPN. Он создаст VPN с использованием виртуального сетевого интерфейса TUN (для маршрутизации), будет прослушивать клиентские подключения на UDP-порту 1194 (официальный номер порта OpenVPN) и распределять виртуальные адреса подключающимся клиентам с 10.8.0.0 / 24 подсеть .

Прежде чем использовать образец файла конфигурации, необходимо сначала отредактировать параметры ca , cert , key и dh , чтобы они указывали на файлы, созданные в разделе PKI выше.

На этом этапе файл конфигурации сервера можно использовать, однако вы все равно можете захотеть настроить его дополнительно:

Если вы хотите запустить несколько экземпляров OpenVPN на одном компьютере, каждый из которых использует другой файл конфигурации, это возможно, если вы :

Пример файла конфигурации клиента ( client.conf в Linux / BSD / Unix или client.ovpn в Windows) отражает директивы по умолчанию, установленные в примере файла конфигурации сервера.

Сначала убедитесь, что сервер OpenVPN доступен из Интернета. Это означает:

Чтобы упростить устранение неполадок, лучше сначала запустить сервер OpenVPN из командной строки (или щелкнуть правой кнопкой мыши файл .ovpn в Windows), а не запускать его как демон или службу:

A нормальный запуск сервера должен выглядеть так (вывод будет зависеть от платформы):

Запуск клиента

Как и в конфигурации сервера, лучше всего изначально запустить сервер OpenVPN из командной строки (или в Windows, щелкнув правой кнопкой мыши на клиенте .ovpn ), а не запускать его как демон или службу:

  openvpn [файл конфигурации клиента]  

Обычный запуск клиента в Windows будет похож на вывод сервера выше и должен заканчиваться сообщением Initialization Sequence Completed .

Теперь попробуйте выполнить эхо-запрос через VPN от клиента. Если вы используете маршрутизацию (например, dev tun в файле конфигурации сервера), попробуйте:

  пинг 10.8.0,1  

Если вы используете мост (например, dev, нажмите в файле конфигурации сервера), попробуйте проверить связь с IP-адресом машины в подсети Ethernet сервера.

Поздравляем, если пинг прошел успешно! Теперь у вас есть работающая VPN.

Устранение неполадок

Если проверка связи не удалась или инициализация клиента OpenVPN не была завершена, вот контрольный список общих симптомов и их решений:

  • Вы получаете сообщение об ошибке: Ошибка TLS: не удалось согласовать ключ TLS в течение 60 секунд (проверьте подключение к сети) .Эта ошибка указывает на то, что клиенту не удалось установить сетевое соединение с сервером. Решения :
    • Убедитесь, что клиент использует правильное имя хоста / IP-адрес и номер порта, которые позволят ему подключиться к серверу OpenVPN.
    • Если сервер OpenVPN представляет собой блок с одним сетевым адаптером внутри защищенной локальной сети, убедитесь, что вы используете правильное правило переадресации портов на межсетевом экране шлюза сервера. Например, предположим, что ваш OpenVPN-сервер находится по адресу 192.168.4.4 внутри брандмауэра и прослушивает клиентские подключения на UDP-порту 1194.Шлюз NAT, обслуживающий подсеть 192.168.4.x, должен иметь правило переадресации портов, согласно которому перенаправляет UDP-порт 1194 с моего общедоступного IP-адреса на 192.168.4.4 .
    • Откройте брандмауэр сервера, чтобы разрешить входящие подключения к порту UDP 1194 (или к любому другому порту TCP / UDP, который вы настроили в файле конфигурации сервера).
  • Вы получаете сообщение об ошибке: Последовательность инициализации завершена с ошибками — Эта ошибка может возникнуть в Windows, если (а) у вас не запущена служба DHCP-клиента или (б) вы используете определенные сторонние персональные брандмауэры. на XP SP2. Решение : Запустите сервер DHCP-клиента и убедитесь, что вы используете персональный брандмауэр, который, как известно, правильно работает на XP SP2.
  • Вы получаете сообщение Initialization Sequence Completed , но тест ping не проходит. Обычно это означает, что брандмауэр на сервере или клиенте блокирует сетевой трафик VPN путем фильтрации на интерфейсе TUN / TAP. Решение : Отключите брандмауэр клиента (если он существует) от фильтрации интерфейса TUN / TAP на клиенте.Например, в Windows XP SP2 вы можете сделать это, перейдя в Центр безопасности Windows -> Брандмауэр Windows -> Расширенный и сняв флажок, соответствующий адаптеру TAP-Windows (отключение брандмауэра клиента от фильтрации адаптера TUN / TAP обычно разумно с точки зрения безопасности, поскольку вы, по сути, говорите брандмауэру не блокировать аутентифицированный трафик VPN). Также убедитесь, что интерфейс TUN / TAP на сервере не фильтруется брандмауэром (при этом обратите внимание, что выборочный брандмауэр интерфейса TUN / TAP на стороне сервера может дать определенные преимущества безопасности.См. Раздел политики доступа ниже).
  • Соединение останавливается при запуске при использовании конфигурации proto udp , файл журнала сервера показывает эту строку:

     TLS: начальный пакет от x.x.x.x: x, sid = xxxxxxxx xxxxxxxx 

    , однако в журнале клиента нет эквивалентной строки.

    Решение : У вас одностороннее соединение от клиента к серверу. Направление от сервера к клиенту блокируется брандмауэром, обычно на стороне клиента.Брандмауэр может быть (а) персональным программным брандмауэром, работающим на клиенте, или (б) шлюзом маршрутизатора NAT для клиента. Измените брандмауэр, чтобы разрешить возвращающим UDP-пакетам с сервера достичь клиента.

Дополнительные сведения об устранении неполадок см. В разделе часто задаваемых вопросов.


Настройка OpenVPN для автоматического запуска при запуске системы

Отсутствие стандартов в этой области означает, что большинство операционных систем имеют другой способ настройки демонов / служб для автозапуска при загрузке.Лучший способ настроить эту функцию по умолчанию — это установить OpenVPN в виде пакета, например, через RPM в Linux или с помощью установщика Windows.

Linux

Если вы устанавливаете OpenVPN через пакет RPM или DEB в Linux, установщик установит исходный скрипт . При выполнении сценарий инициализации будет сканировать файлы конфигурации .conf в / etc / openvpn и, если он будет найден, запустит отдельный демон OpenVPN для каждого файла.

Окна

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

При запуске служебная оболочка OpenVPN просканирует папку \ Program Files \ OpenVPN \ config на наличие файлов конфигурации .ovpn , запустив отдельный процесс OpenVPN для каждого файла.


Управление запущенным процессом OpenVPN

Работает в Linux / BSD / Unix

OpenVPN принимает несколько сигналов:

  • SIGUSR1 — условный перезапуск, предназначенный для перезапуска без прав root
  • SIGHUP — Жесткий перезапуск
  • SIGUSR2 — Вывод статистики подключений в файл журнала или системный журнал
  • SIGTERM , SIGINT — Выход

Используйте директиву writepid для записи PID демона OpenVPN в файл, чтобы вы знали, куда отправить сигнал (если вы запускаете openvpn с исходным скриптом , сценарий может уже передавать —writepid в командной строке openvpn ).

Запуск в Windows как графический интерфейс

См. Страницу с графическим интерфейсом OpenVPN.

Запуск в окне командной строки Windows

В Windows вы можете запустить OpenVPN, щелкнув правой кнопкой мыши файл конфигурации OpenVPN (файл .ovpn, ) и выбрав «Запустить OpenVPN в этом файле конфигурации».

После запуска в этом режиме доступны несколько клавиатурных команд:

  • F1 — Условный перезапуск (не закрывает / не открывает повторно адаптер TAP)
  • F2 — Показать статистику подключений
  • F3 — Жесткий перезапуск
  • F4 — Выход

Запуск в качестве службы Windows

Когда OpenVPN запускается как служба в Windows, единственный способ управлять им — это:

  • Через диспетчер управления службами (Панель управления / Администрирование / Службы), который обеспечивает управление запуском / остановкой.
  • Через интерфейс управления (см. Ниже).

Изменение конфигурации действующего сервера

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

client-config-dir — Эта директива устанавливает каталог конфигурации клиента, который сервер OpenVPN будет сканировать при каждом входящем соединении в поисках файла конфигурации для конкретного клиента (дополнительную информацию см. На странице руководства).Файлы в этом каталоге можно обновлять «на лету» без перезапуска сервера. Обратите внимание, что изменения в этом каталоге вступят в силу только для новых подключений, но не для существующих. Если вы хотите, чтобы изменение файла конфигурации, зависящее от клиента, немедленно вступило в силу для подключенного в данный момент клиента (или того, который отключился, но у которого сервер не прервал тайм-аут своего объекта экземпляра), уничтожьте объект экземпляра клиента, используя команду управления интерфейс (описан ниже). Это заставит клиента повторно подключиться и использовать новый файл client-config-dir .

crl-verify — Эта директива называет файл со списком отзыва сертификатов , описанный ниже в разделе «Отзыв сертификатов». Файл CRL можно изменить на лету, и изменения вступят в силу немедленно для новых подключений или существующих подключений, которые повторно согласовывают свой канал SSL / TLS (по умолчанию происходит один раз в час). Если вы хотите убить подключенного в данный момент клиента, чей сертификат только что был добавлен в CRL, используйте интерфейс управления (описанный ниже).

Файл состояния

В файле server.conf по умолчанию есть строка

.

  статус openvpn-status.log  

, который будет выводить список текущих клиентских подключений в файл openvpn-status.log один раз в минуту.

Использование интерфейса управления

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

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

  управление localhost 7505  

Это указывает OpenVPN прослушивать TCP-порт 7505 для клиентов интерфейса управления (порт 7505 — произвольный выбор — вы можете использовать любой свободный порт).

После запуска OpenVPN вы можете подключиться к интерфейсу управления с помощью клиента telnet . Например:

 ai: ~ # telnet localhost 7505
Пробуем 127.] '.
> ИНФОРМАЦИЯ: Версия 1 интерфейса управления OpenVPN - введите help для получения дополнительной информации
помощь
Интерфейс управления для OpenVPN 2.0_rc14 i686-suse-linux [SSL] [LZO] [EPOLL] построен 15 февраля 2005 г.
Команды:
echo [on | off] [N | all]: Аналогично журналу, но отображаются только сообщения в буфере эха.
exit | quit: закрыть сеанс управления.
help: распечатать это сообщение.
hold [on | off | release]: установить / показать флаг удержания в состояние включения / выключения, или
                         отпустить текущую задержку и начать туннель.kill cn: убить клиентские экземпляры с общим именем cn.
kill IP: port: убить экземпляр клиента, подключающийся с IP: port.
log [on | off] [N | all]: включить / выключить отображение журнала в реальном времени.
                         + показать последние N строк или «все» для всей истории.
mute [n]: установить уровень отключения звука журнала на n или показать уровень, если n отсутствует.
net: (только для Windows) Показать информацию о сети и таблицу маршрутизации.
тип пароля p: введите пароль p для запрашиваемого пароля OpenVPN.signal s: отправить сигнал s демону,
                         s = SIGHUP | SIGTERM | SIGUSR1 | SIGUSR2.
state [on | off] [N | all]: как журнал, но показывает историю состояний.
status [n]: показать информацию о текущем статусе демона в формате #n.
test n: вывести n строк вывода для тестирования / отладки.
username type u: введите имя пользователя u для запрашиваемого имени пользователя OpenVPN.
verb [n]: установить уровень детализации журнала на n или показать, если n отсутствует.версия: показать номер текущей версии.
КОНЕЦ
выход
Соединение прервано внешним хостом.
ai: ~ # 

Для получения дополнительной информации см. Документацию по интерфейсу управления OpenVPN.


Расширение области VPN за счет включения дополнительных машин в подсети клиента или сервера.

Включение нескольких машин на стороне сервера при использовании маршрутизируемой VPN (dev tun)

После того, как VPN будет работать в режиме «точка-точка» между клиентом и сервером, может быть желательно расширить область действия VPN, чтобы клиенты могли подключаться к нескольким машинам в серверной сети, а не только к самому серверу.

Для целей этого примера мы предположим, что LAN на стороне сервера использует подсеть 10.66.0.0/24 , а пул IP-адресов VPN использует 10.8.0.0/24 , как указано в директиве server . в файле конфигурации сервера OpenVPN.

Во-первых, вы должны объявить подсеть 10.66.0.0/24 клиентам VPN как доступную через VPN. Это легко сделать с помощью следующей директивы файла конфигурации на стороне сервера:

  push "маршрут 10.66.0.0 255.255.255.0 " 

Затем вы должны настроить маршрут на серверном шлюзе LAN для маршрутизации подсети VPN-клиента ( 10.8.0.0/24 ) на сервер OpenVPN (это необходимо только в том случае, если сервер OpenVPN и шлюз LAN отличаются машины).

Убедитесь, что вы включили пересылку IP и TUN / TAP на сервере OpenVPN.

Включение нескольких машин на стороне сервера при использовании мостовой VPN (подключение для разработчиков)

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

Включение нескольких машин на стороне клиента при использовании маршрутизируемой VPN (dev tun)

В типичном сценарии «дорожный воин» или удаленного доступа клиентский компьютер подключается к VPN как единый компьютер. Но предположим, что клиентская машина является шлюзом для локальной LAN (например, домашнего офиса), и вы хотите, чтобы каждая машина в клиентской LAN могла маршрутизировать через VPN.

В этом примере мы предположим, что клиентская LAN использует подсеть 192.168.4.0/24 , а VPN-клиент использует сертификат с общим именем client2 .Наша цель — настроить VPN таким образом, чтобы любой компьютер в клиентской локальной сети мог связываться с любым компьютером в серверной локальной сети через VPN.

Перед настройкой необходимо выполнить несколько основных условий:

  • Клиентская подсеть LAN (192.168.4.0/24 в нашем примере) не должна экспортироваться в VPN сервером или любыми другими клиентскими сайтами, которые используют ту же подсеть. Каждая подсеть, подключенная к VPN через маршрутизацию, должна быть уникальной.
  • Клиент должен иметь уникальное общее имя в своем сертификате («client2» в нашем примере), и флаг duplicate-cn не должен использоваться в файле конфигурации сервера OpenVPN.

Сначала убедитесь, что на клиентском компьютере включена пересылка IP и TUN / TAP.

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

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

В приведенной выше директиве ccd должно быть именем каталога, который был предварительно создан в каталоге по умолчанию, в котором запускается демон сервера OpenVPN.В Linux это обычно / etc / openvpn , а в Windows это обычно \ Program Files \ OpenVPN \ config . Когда новый клиент подключается к серверу OpenVPN, демон проверяет этот каталог на наличие файла, который соответствует общему имени подключающегося клиента. Если соответствующий файл найден, он будет прочитан и обработан для применения дополнительных директив файла конфигурации к указанному клиенту.

Следующим шагом является создание файла с именем client2 в каталоге ccd .Этот файл должен содержать строку:

  iroute 192.168.4.0 255.255.255.0  

Это сообщит серверу OpenVPN, что подсеть 192.168.4.0/24 должна быть маршрутизирована на client2 .

Затем добавьте следующую строку в файл конфигурации основного сервера (не файл ccd / client2 ):

  маршрут 192.168.4.0 255.255.255.0  

Почему используются избыточные операторы route и iroute , спросите вы? Причина в том, что route управляет маршрутизацией от ядра к серверу OpenVPN (через интерфейс TUN), а iroute управляет маршрутизацией от сервера OpenVPN к удаленным клиентам.Оба необходимы.

Затем спросите себя, хотите ли вы разрешить сетевой трафик между подсетью client2 (192.168.4.0/24) и другими клиентами сервера OpenVPN. Если да, добавьте в файл конфигурации сервера следующее.

  клиент-клиент
нажмите "маршрут 192.168.4.0 255.255.255.0"  

Это приведет к тому, что сервер OpenVPN объявит подсеть client2 другим подключающимся клиентам.

Последний шаг, о котором часто забывают, — это добавить маршрут к шлюзу локальной сети сервера, который направляет 192.168.4.0 / 24 в ящик сервера OpenVPN (он вам не понадобится, если ящик сервера OpenVPN является шлюзом для локальной сети сервера). Предположим, вы пропустили этот шаг и пытались пропинговать машину (не сам сервер OpenVPN) в локальной сети сервера с адреса 192.168.4.8? Исходящий пинг, вероятно, достигнет машины, но тогда он не будет знать, как маршрутизировать ответ пинга, потому что не будет знать, как достичь 192.168.4.0/24. Эмпирическое правило, которое следует использовать, заключается в том, что при маршрутизации всей локальной сети через VPN (когда VPN-сервер не совпадает с компьютером со шлюзом локальной сети), убедитесь, что шлюз для локальной сети направляет все подсети VPN на машину VPN-сервера.

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

Включение нескольких машин на стороне клиента при использовании мостовой VPN (подключение для разработчиков)

Это требует более сложной настройки (возможно, не более сложной на практике, но более сложной для подробного объяснения):

  • Вы должны соединить клиентский TAP-интерфейс с сетевым адаптером, подключенным к локальной сети, на клиенте.
  • Необходимо вручную установить IP / маску сети TAP-интерфейса на клиенте.
  • Вы должны настроить клиентские машины для использования IP / сетевой маски, которая находится внутри мостовой подсети, возможно, путем запроса DHCP-сервера на стороне сервера OpenVPN в VPN.

Передача параметров DHCP клиентам

Сервер OpenVPN может передавать клиентам такие параметры DHCP, как адреса серверов DNS и WINS (о некоторых предостережениях следует помнить). Клиенты Windows могут принимать проталкиваемые параметры DHCP изначально, в то время как клиенты, отличные от Windows, могут принимать их с помощью клиентского сценария , который анализирует список переменных среды foreign_option_ n .См. Справочную страницу для документации и примеров сценариев, отличных от Windows foreign_option_ n .

Например, предположим, что вы хотите подключать клиентов для использования внутреннего DNS-сервера 10.66.0.4 или 10.66.0.5 и WINS-сервера 10.66.0.8. Добавьте это в конфигурацию сервера OpenVPN:

  push "dhcp-option DNS 10.66.0.4"
нажмите "dhcp-option DNS 10.66.0.5"
нажмите "dhcp-option WINS 10.66.0.8"  

Чтобы протестировать эту функцию в Windows, запустите следующее из окна командной строки после того, как машина подключится к серверу OpenVPN:

  ipconfig / все  

Запись для адаптера TAP-Windows должна отображать параметры DHCP, которые были отправлены сервером.


Настройка клиентских правил и политик доступа

Предположим, мы настраиваем корпоративную VPN и хотим установить отдельные политики доступа для 3 разных классов пользователей:

  • Системные администраторы — полный доступ ко всем машинам в сети
  • Сотрудники — доступ только к Samba / почтовому серверу
  • Контрагенты — доступ только к специальному серверу

Основной подход, который мы выберем, — это (а) выделить каждый класс пользователей в свой собственный диапазон виртуальных IP-адресов и (б) управлять доступом к машинам, установив правила брандмауэра, которые отключают виртуальный IP-адрес клиента.

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

Обратите внимание, что одним из предварительных условий этого примера является наличие программного брандмауэра, работающего на сервере OpenVPN, который дает вам возможность определять определенные правила брандмауэра.В нашем примере мы предположим, что это брандмауэр Linux iptables .

Во-первых, давайте создадим карту виртуальных IP-адресов в соответствии с классом пользователя:

Класс Виртуальный диапазон IP-адресов Разрешенный доступ к локальной сети Общие названия
Сотрудники 10.8.0.0/24 Samba / почтовый сервер на 10.66.4.4 [переменная]
Системные администраторы 10.8.1.0 / 24 Вся подсеть 10.66.4.0/24 системный администратор
Подрядчики 10.8.2.0/24 Сервер подрядчика по адресу 10.66.4.12 подрядчик1, подрядчик2

Теперь давайте переведем эту карту в конфигурацию сервера OpenVPN. Прежде всего, убедитесь, что вы выполнили описанные выше действия, чтобы сделать подсеть 10.66.4.0/24 доступной для всех клиентов (пока мы настроим маршрутизацию, чтобы разрешить клиентский доступ ко всем 10.66.4.0 / 24, мы наложим ограничения доступа с помощью правил брандмауэра для реализации приведенной выше таблицы политик).

Во-первых, определите статический номер устройства для нашего интерфейса tun , чтобы мы могли ссылаться на него позже в наших правилах брандмауэра:

  dev tun0  

В файле конфигурации сервера определите пул IP-адресов сотрудников:

  сервер 10.8.0.0 255.255.255.0  

Добавьте маршруты для диапазонов IP-адресов системного администратора и подрядчика:

  маршрут 10.8.1.0 255.255.255.0
маршрут 10.8.2.0 255.255.255.0  

Поскольку мы будем назначать фиксированные IP-адреса для конкретных системных администраторов и подрядчиков, мы будем использовать каталог конфигурации клиента:

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

Теперь поместите специальные файлы конфигурации в подкаталог ccd , чтобы определить фиксированный IP-адрес для каждого VPN-клиента, не являющегося сотрудником.

ccd / sysadmin1

  ifconfig-push 10.8.1.1 10.8.1.2  

ccd / подрядчик1

  ifconfig-push 10.8.2.1 10.8.2.2  

ccd / подрядчик2

  ifconfig-push 10.8.2.5 10.8.2.6  

Каждая пара адресов ifconfig-push представляет конечные IP-точки виртуального клиента и сервера. Они должны быть взяты из последовательных подсетей / 30 для совместимости с клиентами Windows и драйвером TAP-Windows. В частности, последний октет IP-адреса каждой пары конечных точек должен быть взят из этого набора:

 [1, 2] [5, 6] [9, 10] [13, 14] [17, 18]
[21, 22] [25, 26] [29, 30] [33, 34] [37, 38]
[41, 42] [45, 46] [49, 50] [53, 54] [57, 58]
[61, 62] [65, 66] [69, 70] [73, 74] [77, 78]
[81, 82] [85, 86] [89, 90] [93, 94] [97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141 142] [145 146] [149 150] [153 154] [157 158]
[161 162] [165 166] [169 170] [173 174] [177 178]
[181 182] [185 186] [189 190] [193 194] [197 198]
[201 202] [205 206] [209 210] [213 214] [217 218]
[221 222] [225 226] [229 230] [233 234] [237 238]
[241 242] [245 246] [249 250] [253 254] 

На этом настройка OpenVPN завершена.Последний шаг — добавить правила брандмауэра для завершения политики доступа. В этом примере мы будем использовать правила брандмауэра в синтаксисе Linux iptables :

  # Правило сотрудников
iptables -A ВПЕРЕД -i tun0 -s 10.8.0.0/24 -d 10.66.4.4 -j ПРИНЯТЬ

# Правило системного администратора
iptables -A ВПЕРЕД -i tun0 -s 10.8.1.0/24 -d 10.66.4.0/24 -j ПРИНЯТЬ

# Правило подрядчика
iptables -A ВПЕРЕД -i tun0 -s 10.8.2.0/24 -d 10.66.4.12 -j ПРИНЯТЬ  

Использование альтернативных методов аутентификации

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

Чтобы использовать этот метод аутентификации, сначала добавьте в конфигурацию клиента директиву auth-user-pass . Он направит клиент OpenVPN запросить у пользователя имя пользователя / пароль, передав его на сервер по безопасному каналу TLS.

Затем настройте сервер для использования подключаемого модуля проверки подлинности, который может быть сценарием, общим объектом или DLL.Сервер OpenVPN будет вызывать плагин каждый раз, когда VPN-клиент пытается подключиться, передавая ему имя пользователя / пароль, введенные на клиенте. Плагин аутентификации может контролировать, разрешает ли сервер OpenVPN клиенту соединение, возвращая значение ошибки (1) или успеха (0).

Использование подключаемых модулей сценариев

Плагины

Script можно использовать, добавив директиву auth-user-pass-verify в файл конфигурации на стороне сервера. Например:

  auth-user-pass-verify auth-pam.pl через-файл  

будет использовать Perl-скрипт auth-pam.pl для аутентификации имени пользователя и пароля подключающихся клиентов. См. Описание auth-user-pass-verify на странице руководства для получения дополнительной информации.

Сценарий auth-pam.pl включен в дистрибутив исходного файла OpenVPN в подкаталог sample-scripts . Он будет аутентифицировать пользователей на сервере Linux с помощью модуля аутентификации PAM, который, в свою очередь, может реализовать теневой пароль, аутентификацию RADIUS или LDAP. auth-pam.pl в первую очередь предназначен для демонстрационных целей. Для реальной аутентификации PAM используйте плагин общего объекта openvpn-auth-pam , описанный ниже.

Использование общих объектов или подключаемых модулей DLL

Плагины общих объектов или DLL обычно представляют собой скомпилированные модули C, которые загружаются сервером OpenVPN во время выполнения. Например, если вы используете пакет OpenVPN на основе RPM в Linux, плагин openvpn-auth-pam должен быть уже собран. Чтобы использовать его, добавьте это в файл конфигурации на стороне сервера:

  плагин / usr / share / openvpn / plugin / lib / openvpn-auth-pam.так что авторизуйтесь  

Это укажет серверу OpenVPN проверить имя пользователя / пароль, введенные клиентами с использованием модуля для входа в систему PAM.

Для реального производственного использования лучше использовать плагин openvpn-auth-pam , потому что он имеет несколько преимуществ перед скриптом auth-pam.pl :

  • Общий объект openvpn-auth-pam Плагин использует модель выполнения с разделенными привилегиями для повышения безопасности. Это означает, что сервер OpenVPN может работать с ограниченными привилегиями, используя директивы user nobody , group nobody и chroot , и по-прежнему сможет аутентифицироваться в файле теневых паролей, доступном только для чтения root.
  • OpenVPN может передавать имя пользователя / пароль плагину через виртуальную память, а не через файл или среду, что лучше для локальной безопасности на сервере.
  • Скомпилированные на C подключаемые модули обычно работают быстрее, чем скрипты.

Если вам нужна дополнительная информация о разработке собственных подключаемых модулей для использования с OpenVPN, см. Файлы README в подкаталоге plugin исходного дистрибутива OpenVPN.

Чтобы собрать подключаемый модуль openvpn-auth-pam в Linux, перейдите в каталог plugin / auth-pam в исходном дистрибутиве OpenVPN и запустите make .

Использование аутентификации по имени пользователя и паролю как единственная форма аутентификации клиента

По умолчанию, при использовании auth-user-pass-verify или подключаемого модуля проверки имени пользователя / пароля на сервере будет включена двойная проверка подлинности, требуя, чтобы проверка подлинности сертификата клиента и имени пользователя / пароля прошла успешно, чтобы клиент мог быть аутентифицированным.

Хотя это не рекомендуется с точки зрения безопасности, также можно отключить использование клиентских сертификатов и принудительно использовать только аутентификацию по имени пользователя и паролю.На сервере:

  клиент-сертификат-не требуется  

В таких конфигурациях обычно следует также установить:

  имя пользователя как общее имя  

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

Обратите внимание, что client-cert-not-required не устраняет необходимость в сертификате сервера, поэтому клиент, подключающийся к серверу, который использует client-cert-not-required , может удалить cert и ключ директивы из файла конфигурации клиента, но не директивы ca , потому что клиенту необходимо проверить сертификат сервера.


Как добавить двухфакторную аутентификацию в конфигурацию OpenVPN с использованием клиентских смарт-карт

О двухфакторной аутентификации

Двухфакторная аутентификация — это метод аутентификации, который сочетает в себе два элемента: то, что у вас есть, и то, что вы знаете.

Что-то у вас должно быть устройством, которое нельзя дублировать; таким устройством может быть криптографический токен, содержащий закрытый секретный ключ. Этот закрытый ключ создается внутри устройства и никогда не покидает его.Если пользователь, владеющий этим токеном, пытается получить доступ к защищенным службам в удаленной сети, процесс авторизации, который предоставляет или запрещает доступ к сети, может с высокой степенью уверенности установить, что пользователь, ищущий доступ, физически владеет известным сертифицированным токеном. .

Что-то, что вы знаете, может быть паролем, представленным криптографическому устройству. Без правильного пароля вы не сможете получить доступ к закрытому секретному ключу. Еще одна особенность криптографических устройств — запретить использование закрытого секретного ключа, если неправильный пароль был представлен более разрешенного количества раз.Такое поведение гарантирует, что если пользователь потеряет свое устройство, то его использование другим человеком будет невозможным.

Криптографические устройства обычно называются «смарт-картами» или «токенами» и используются вместе с PKI (инфраструктурой открытых ключей). Сервер VPN может проверить сертификат X.509 и убедиться, что пользователь владеет соответствующим секретным секретным ключом. Поскольку устройство не может быть дублировано и требует действующего пароля, сервер может аутентифицировать пользователя с высокой степенью уверенности.

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

Если вы храните секретный закрытый ключ в файле, ключ обычно зашифровывается паролем.Проблема с этим подходом заключается в том, что зашифрованный ключ подвергается атакам дешифрования или шпионскому / вредоносному ПО, запущенному на клиентском компьютере. В отличие от использования криптографического устройства, файл не может стереть себя автоматически после нескольких неудачных попыток дешифрования.

Что такое PKCS # 11?

Этот стандарт определяет API, называемый Cryptoki, для устройств, которые хранят криптографическую информацию и выполняют криптографические функции. Cryptoki, произносится как «криптоключ» и сокращенно от интерфейса криптографического токена, следует простому объектно-ориентированному подходу, решая задачи технологической независимости (любого типа устройства) и совместного использования ресурсов (несколько приложений, обращающихся к нескольким устройствам), предоставляя приложениям общее логическое представление устройства, называемое криптографическим токеном.

Источник: RSA Security Inc. https://www.emc.com/emc-plus/rsa-labs/standards-initiatives/pkcs-11-cryptographic-token-interface-standard.htm.

Подводя итог, PKCS # 11 — это стандарт, который может использоваться прикладным программным обеспечением для доступа к криптографическим токенам, таким как смарт-карты и другие устройства. Большинство производителей устройств предоставляют библиотеку, реализующую интерфейс поставщика PKCS # 11 — эта библиотека может использоваться приложениями для доступа к этим устройствам. PKCS # 11 — это кроссплатформенный бесплатный стандарт, не зависящий от производителя.

Поиск библиотеки поставщика PKCS # 11

Первое, что вам нужно сделать, это найти библиотеку провайдера, она должна быть установлена ​​вместе с драйверами устройств. У каждого поставщика есть своя библиотека. Например, поставщик OpenSC PKCS # 11 находится в /usr/lib/pkcs11/opensc-pkcs11.so в Unix или в opensc-pkcs11.dll в Windows.

Как настроить криптографический токен

Вы должны следовать процедуре регистрации:

  • Инициализировать токен PKCS # 11.
  • Сгенерировать пару ключей RSA на токене PKCS # 11.
  • Создайте запрос на сертификат на основе пары ключей, для этого вы можете использовать OpenSC и OpenSSL.
  • Отправьте запрос сертификата в центр сертификации и получите сертификат.
  • Загрузите сертификат в маркер, отмечая при этом, что атрибуты id и label сертификата должны совпадать с атрибутами закрытого ключа.

Настроенный маркер — это маркер, который имеет объект закрытого ключа и объект сертификата, причем оба имеют одинаковые атрибуты id и label.

Простая утилита регистрации — Easy-RSA 2.0, которая является частью серии OpenVPN 2.1. Следуйте инструкциям, указанным в файле README, а затем используйте pkitool для регистрации.

Инициализируйте токен с помощью следующей команды:

 $ ./pkitool --pkcs11-слоты / usr / lib / pkcs11 /
$ ./pkitool --pkcs11-init / usr / lib / pkcs11 /
 

Зарегистрируйте сертификат, используя следующую команду:

 $ ./pkitool --pkcs11 / usr / lib / pkcs11 / client1
 

Как изменить конфигурацию OpenVPN для использования криптографических токенов

У вас должен быть OpenVPN 2.1 или выше, чтобы использовать функции PKCS # 11.

Определите правильный объект

Каждый провайдер PKCS # 11 может поддерживать несколько устройств. Для просмотра списка доступных объектов вы можете использовать следующую команду:

 $ openvpn --show-pkcs11-ids / usr / lib / pkcs11 /

Следующие объекты доступны для использования.
Каждый объект, показанный ниже, может использоваться как параметр для
--pkcs11-id, пожалуйста, не забудьте использовать одинарные кавычки.

Сертификат
       DN: / CN = Пользователь1
       Серийный номер: 490B82C4000000000075
       Серийный идентификатор: aaaa / bbb / 41545F5349474E415455524581D2A1A1B23C4AA4CB17FAF7A4600 

Каждая пара сертификат / закрытый ключ имеет уникальную строку «Сериализованный идентификатор».Строка сериализованного идентификатора запрошенного сертификата должна быть указана для параметра pkcs11-id с использованием одинарных кавычек.

  pkcs11-id 'aaaa / bbb / 41545F5349474E415455524581D2A1A1B23C4AA4CB17FAF7A4600'
  
Использование OpenVPN с PKCS # 11
Типичный набор опций OpenVPN для PKCS # 11
  pkcs11-провайдеры / usr / lib / pkcs11 /
pkcs11-id 'aaaa / bbb / 41545F5349474E415455524581D2A1A1B23C4AA4CB17FAF7A4600'
  

Будет выбран объект, соответствующий строке pkcs11-id.

Расширенные параметры OpenVPN для PKCS # 11
  pkcs11-провайдеры /usr/lib/pkcs11/provider1.so /usr/lib/pkcs11/provider2.so
pkcs11-id 'aaaa / bbb / 41545F5349474E415455524581D2A1A1B23C4AA4CB17FAF7A4600'
pkcs11-контактный кэш 300
демон
auth-retry nointeract
удержание управления
сигнал управления
управление 127.0.0.1 8888
управление-запрос-пароли
  

Это загрузит двух провайдеров в OpenVPN, будет использовать сертификат, указанный в опции pkcs11-id , и использовать интерфейс управления для запроса паролей.Демон вернется в состояние удержания при наступлении события, когда к токену будет невозможно получить доступ. Токен будет использоваться в течение 300 секунд, после чего пароль будет повторно запрошен, сеанс будет отключен, если сеанс управления отключится.

Рекомендации по реализации PKCS # 11

Многие провайдеры PKCS # 11 используют потоки, во избежание проблем, вызванных реализацией LinuxThreads (setuid, chroot), настоятельно рекомендуется обновить glibc до Native POSIX Thread Library (NPTL), если вы собираетесь использовать PKCS #. 11.

OpenSC PKCS # 11 провайдер

Поставщик OpenSC PKCS # 11 находится в /usr/lib/pkcs11/opensc-pkcs11.so в Unix или в opensc-pkcs11.dll в Windows.

Разница между PKCS # 11 и Microsoft Cryptographic API (CryptoAPI)

PKCS # 11 — это бесплатный кроссплатформенный стандарт, независимый от поставщиков. CryptoAPI — это специальный API Microsoft. Большинство поставщиков смарт-карт обеспечивают поддержку обоих интерфейсов. В среде Windows пользователь должен выбрать, какой интерфейс использовать.

Текущая реализация OpenVPN, использующая MS CryptoAPI (опция cryptoapicert ), работает хорошо, пока вы не запускаете OpenVPN как службу. Если вы хотите запустить OpenVPN в административной среде с помощью службы, реализация не будет работать с большинством смарт-карт по следующим причинам:

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

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


Маршрутизация всего клиентского трафика (включая веб-трафик) через VPN

Обзор

По умолчанию, когда клиент OpenVPN активен, только сетевой трафик к и от сайта сервера OpenVPN будет проходить через VPN.Например, общий просмотр веб-страниц будет осуществляться с помощью прямых подключений в обход VPN.

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

Реализация

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

  push "redirect-gateway def1"  

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

  push "локальный def1 шлюз перенаправления"  

Передача клиентам опции redirect-gateway приведет к тому, что весь сетевой трафик IP, исходящий на клиентских машинах, будет проходить через сервер OpenVPN.Сервер необходимо настроить так, чтобы он каким-то образом обрабатывал этот трафик, например, путем преобразования его в Интернет с помощью NAT или маршрутизации через HTTP-прокси серверного сайта.

В Linux вы можете использовать такую ​​команду для NAT трафика клиента VPN в Интернет:

  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE  

Эта команда предполагает, что подсеть VPN — это 10.8.0.0/24 (взято из директивы server в конфигурации сервера OpenVPN) и что локальный интерфейс Ethernet — eth0 .

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

  push "dhcp-option DNS 10.8.0.1"  

настроит клиентов Windows (или клиентов, отличных от Windows с некоторыми дополнительными сценариями на стороне сервера) для использования 10.8.0.1 в качестве их DNS-сервера. Любой адрес, доступный для клиентов, может использоваться в качестве адреса DNS-сервера.

Предостережения

Перенаправление всего сетевого трафика через VPN не совсем без проблем. Вот несколько типичных ошибок, о которых следует знать:

  • Многие клиентские машины OpenVPN, подключенные к Интернету, будут периодически взаимодействовать с DHCP-сервером, чтобы продлить аренду своих IP-адресов. Параметр redirect-gateway может помешать клиенту достичь локального DHCP-сервера (поскольку сообщения DHCP будут маршрутизироваться через VPN), что приведет к потере аренды IP-адреса.
  • Существуют проблемы с отправкой DNS-адресов клиентам Windows.
  • Скорость просмотра веб-страниц на клиенте будет заметно ниже.

Для получения дополнительной информации о механизме директивы redirect-gateway см. Страницу руководства.


Запуск сервера OpenVPN на динамическом IP-адресе

Хотя клиенты OpenVPN могут легко получить доступ к серверу через динамический IP-адрес без какой-либо специальной настройки, все становится более интересным, когда сам сервер находится на динамическом адресе.Хотя у OpenVPN нет проблем с обработкой ситуации с динамическим сервером, требуется некоторая дополнительная настройка.

Первый шаг — получить динамический DNS-адрес, который можно настроить так, чтобы он «следил» за сервером каждый раз, когда IP-адрес сервера изменяется. Доступно несколько поставщиков услуг динамического DNS, например dyndns.org.

Следующим шагом является настройка механизма, при котором каждый раз при изменении IP-адреса сервера динамическое DNS-имя будет быстро обновляться с новым IP-адресом, позволяя клиентам находить сервер по его новому IP-адресу.Для этого есть два основных способа:

  • Используйте устройство маршрутизатора NAT с поддержкой динамического DNS (например, Linksys BEFSR41 ). Большинство недорогих устройств NAT-маршрутизатора, которые широко доступны, имеют возможность обновлять динамическое DNS-имя каждый раз, когда от ISP получена новая аренда DHCP. Эта установка идеальна, когда сервер OpenVPN представляет собой машину с одним сетевым адаптером внутри брандмауэра.
  • Используйте клиентское приложение динамического DNS, такое как ddclient, для обновления динамического адреса DNS при изменении IP-адреса сервера.Эта установка идеальна, когда машина, на которой запущен OpenVPN, имеет несколько сетевых адаптеров и действует как межсетевой экран / шлюз на уровне всего сайта. Чтобы реализовать эту настройку, вам необходимо настроить сценарий, который будет запускаться вашим программным обеспечением DHCP-клиента каждый раз, когда происходит изменение IP-адреса. Этот сценарий должен (а) запустить ddclient , чтобы уведомить вашего поставщика динамических DNS о вашем новом IP-адресе, и (б) перезапустить демон сервера OpenVPN.

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

Дополнительную информацию можно найти в FAQ.


Подключение к серверу OpenVPN через HTTP-прокси.

OpenVPN поддерживает соединения через HTTP-прокси со следующими режимами аутентификации:

  • Нет аутентификации прокси
  • Базовая проверка подлинности прокси
  • Проверка подлинности прокси NTLM

Прежде всего, использование прокси-сервера HTTP требует, чтобы вы использовали TCP в качестве протокола передачи туннеля.Поэтому добавьте следующее в конфигурацию клиента и сервера:

  протокол протокола TCP  

Убедитесь, что все строки proto udp в файлах конфигурации удалены.

Затем добавьте директиву http-proxy в файл конфигурации клиента (полное описание этой директивы см. На странице руководства).

Например, предположим, что у вас есть прокси-сервер HTTP в клиентской локальной сети по адресу 192.168.4.1 , который прослушивает соединения на порту 1080 .Добавьте это в конфигурацию клиента:

  http-прокси 192.168.4.1 1080  

Предположим, прокси-сервер HTTP требует базовой проверки подлинности:

  http-прокси 192.168.4.1 1080 stdin базовый  

Предположим, прокси-сервер HTTP требует проверки подлинности NTLM:

  http-прокси 192.168.4.1 1080 stdin ntlm  

Два приведенных выше примера аутентификации заставят OpenVPN запрашивать имя пользователя / пароль из стандартного ввода.Если вместо этого вы хотите поместить эти учетные данные в файл, замените stdin именем файла и поместите имя пользователя в строку 1 этого файла и пароль в строку 2.


Подключение к общему ресурсу Samba через OpenVPN

Этот пример предназначен для демонстрации того, как клиенты OpenVPN могут подключаться к общему ресурсу Samba через маршрутизируемый туннель dev tun . Если вы используете мост Ethernet ( dev tap ), вам, вероятно, не нужно следовать этим инструкциям, поскольку клиенты OpenVPN должны видеть серверные машины в своем сетевом окружении.

В этом примере мы предположим, что:

  • ЛВС на стороне сервера использует подсеть 10.66.0.0/24 ,
  • пул IP-адресов VPN использует 10.8.0.0/24 (как указано в директиве server в файле конфигурации сервера OpenVPN),
  • сервер Samba имеет IP-адрес 10.66.0.4 и
  • , сервер Samba уже настроен и доступен из локальной сети.

Если серверы Samba и OpenVPN работают на разных машинах, убедитесь, что вы следовали разделу о расширении возможностей VPN за счет включения дополнительных машин.

Затем отредактируйте файл конфигурации Samba ( smb.conf ). Убедитесь, что директива hosts разрешает разрешает подключение клиентов OpenVPN из подсети 10.8.0.0/24 . Например:

  хостов позволяют = 10.66.0.0/24 10.8.0.0/24 127.0.0.1  

Если вы используете серверы Samba и OpenVPN на одном компьютере, вам может потребоваться отредактировать директиву interfaces в файле smb.conf , чтобы также прослушивать подсеть интерфейса TUN 10.8.0.0 / 24 :

  интерфейсов = 10.66.0.0/24 10.8.0.0/24  

Если вы используете серверы Samba и OpenVPN на одном компьютере, подключитесь с клиента OpenVPN к общему ресурсу Samba, используя имя папки:

  \ 10.8.0.1 \ sharename  

Если серверы Samba и OpenVPN находятся на разных машинах, используйте имя папки:

  \\ 10.66.0.4 \ sharename  

Например, из окна командной строки:

  чистое использование z: \ 10.66.0.4 \ sharename / ПОЛЬЗОВАТЕЛЬ: myusername  

Реализация конфигурации балансировки нагрузки / аварийного переключения

Клиент

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

  удаленный server1.mydomain
удаленный server2.mydomain
удаленный server3.mydomain  

укажет клиенту OpenVPN попытаться установить соединение с server1, server2 и server3 в указанном порядке.Если существующее соединение разорвано, клиент OpenVPN повторит попытку последнего подключенного сервера, а в случае сбоя перейдет к следующему серверу в списке. Вы также можете указать клиенту OpenVPN случайным образом распределить список серверов при запуске, чтобы клиентская нагрузка была вероятностно распределена по пулу серверов.

  удаленно-случайное  

Если вы также хотите, чтобы сбои разрешения DNS приводили к переходу клиента OpenVPN на следующий сервер в списке, добавьте следующее:

  resolv-retry 60  

Параметр 60 сообщает клиенту OpenVPN попробовать разрешить каждое удаленное DNS-имя в течение 60 секунд, прежде чем перейти к следующему серверу в списке.

Список серверов также может относиться к нескольким демонам сервера OpenVPN, запущенным на одном компьютере, каждый из которых прослушивает соединения на другом порту, например:

  удаленный smp-server1.mydomain 8000
удаленный smp-server1.mydomain 8001
удаленный smp-server2.mydomain 8000
удаленный smp-server2.mydomain 8001  

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

OpenVPN также поддерживает директиву remote , относящуюся к DNS-имени, которое имеет несколько записей A в конфигурации зоны для домена. В этом случае клиент OpenVPN будет случайным образом выбирать одну из записей A каждый раз при разрешении домена.

Сервер

Самый простой подход к конфигурации балансировки нагрузки / переключения при отказе на сервере — использовать эквивалентные файлы конфигурации на каждом сервере в кластере, за исключением использования разных пулов виртуальных IP-адресов для каждого сервера.Например:

сервер1

  сервер 10.8.0.0 255.255.255.0  

сервер2

  сервер 10.8.1.0 255.255.255.0  

сервер3

  сервер 10.8.2.0 255.255.255.0  

Повышение безопасности OpenVPN

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

tls-auth

Директива tls-auth добавляет дополнительную подпись HMAC ко всем пакетам подтверждения SSL / TLS для проверки целостности. Любой пакет UDP, не имеющий правильной подписи HMAC, может быть отброшен без дальнейшей обработки. Подпись tls-auth HMAC обеспечивает дополнительный уровень безопасности, превышающий уровень, обеспечиваемый SSL / TLS. Может защитить от:

  • DoS-атаки или наводнение порта на UDP-порту OpenVPN.
  • Сканирование портов для определения того, какие UDP-порты сервера находятся в состоянии прослушивания.
  • Уязвимости переполнения буфера в реализации SSL / TLS.
  • SSL / TLS-инициации рукопожатия от неавторизованных машин (хотя такие рукопожатия в конечном итоге не смогут пройти аутентификацию, tls-auth может отключить их на гораздо более раннем этапе).

Использование tls-auth требует, чтобы вы сгенерировали общий секретный ключ, который используется в дополнение к стандартному сертификату / ключу RSA:

  openvpn --genkey --secret ta.ключ  

Эта команда сгенерирует статический ключ OpenVPN и запишет его в файл ta.key . Этот ключ следует скопировать по уже существующему защищенному каналу на сервер и все клиентские машины. Его можно разместить в том же каталоге, что и файлы RSA .key и .crt .

В конфигурации сервера добавить:

  tls-auth ta.key 0  

В конфигурации клиента добавить:

  tls-auth ta.ключ 1  

прото udp

Хотя OpenVPN позволяет использовать протокол TCP или UDP в качестве VPN-соединения, протокол UDP обеспечивает лучшую защиту от DoS-атак и сканирования портов, чем TCP:

  протокол протокола udp  

пользователь / группа (только не для Windows)

OpenVPN был очень тщательно разработан, чтобы позволить отказаться от привилегий root после инициализации, и эту функцию всегда следует использовать в Linux / BSD / Solaris.Без привилегий root запущенный демон сервера OpenVPN предоставляет злоумышленнику гораздо менее заманчивую цель.

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

Непривилегированный режим (только Linux)

В Linux OpenVPN можно запускать совершенно непривилегированно. Эта конфигурация немного сложнее, но обеспечивает лучшую безопасность.

Для работы с этой конфигурацией OpenVPN должен быть настроен для использования интерфейса iproute, это делается путем указания —enable-iproute2 для скрипта настройки.Пакет sudo также должен быть доступен в вашей системе.

Эта конфигурация использует возможность Linux изменять разрешение устройства tun, чтобы непривилегированный пользователь мог получить к нему доступ. Он также использует sudo для выполнения iproute, чтобы можно было изменить свойства интерфейса и таблицу маршрутизации.

Конфигурация OpenVPN:

    • Напишите следующий сценарий и поместите его в: / usr / local / sbin / unpriv-ip:
  #! / Bin / sh
sudo / sbin / ip $ *
  
    • Выполните visudo и добавьте следующее, чтобы разрешить пользователю user1 выполнить / sbin / ip:
  user1 ALL = (ALL) NOPASSWD: / sbin / ip  
    • Вы также можете включить группу пользователей с помощью следующей команды:
 % пользователей ALL = (ALL) NOPASSWD: / sbin / ip  
    • Добавьте в конфигурацию OpenVPN следующее:
  разработчик tunX / tapX
iproute / usr / местные / sbin / unpriv-ip  
    • Обратите внимание, что вы должны выбрать постоянный X и указать tun или tap не одновременно.

    • В качестве пользователя root добавьте постоянный интерфейс и разрешите пользователю и / или группе управлять им, выполните следующие действия: создайте tunX (замените своим собственным) и разрешите пользователям user1 и group доступ к нему.
  openvpn --mktun --dev tunX --type tun --user user1 --group users  
  • Запустить OpenVPN в контексте непривилегированного пользователя.

Можно добавить дополнительные ограничения безопасности, изучив параметры в сценарии / usr / local / sbin / unpriv-ip.

chroot (только не для Windows)

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

  тюрьма chroot  

заставит демон OpenVPN перейти в подкаталог jail при инициализации, а затем переориентирует свою корневую файловую систему в этот каталог, чтобы после этого демон не мог получить доступ к любым файлам за пределами jail и его дерева подкаталогов .Это важно с точки зрения безопасности, потому что даже если бы злоумышленник смог скомпрометировать сервер с помощью эксплойта вставки кода, эксплойт был бы заблокирован для большей части файловой системы сервера.

Предостережения: поскольку chroot переориентирует файловую систему (только с точки зрения демона), необходимо поместить все файлы, которые могут понадобиться OpenVPN после инициализации, в каталог jail , например:

  • файл crl-verify или
  • каталог client-config-dir .

Большие ключи RSA

Размер ключа RSA управляется переменной KEY_SIZE в файле easy-rsa / vars , которая должна быть установлена ​​до создания любых ключей. В настоящее время по умолчанию установлено 1024, это значение может быть разумно увеличено до 2048 без отрицательного влияния на производительность VPN-туннеля, за исключением немного более медленного квитирования повторного согласования SSL / TLS, которое происходит один раз для каждого клиента в час, и гораздо более медленного одноразового Diffie Процесс генерации параметров Хеллмана с помощью сценария easy-rsa / build-dh .

Симметричные ключи большего размера

По умолчанию OpenVPN использует Blowfish , 128-битный симметричный шифр.

OpenVPN автоматически поддерживает любой шифр, который поддерживается библиотекой OpenSSL, и, как таковой, может поддерживать шифры с ключами большого размера. Например, 256-битную версию AES (Advanced Encryption Standard) можно использовать, добавив следующее в файлы конфигурации сервера и клиента:

  шифр AES-256-CBC  

Сохранить корневой ключ (

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

Одно из преимуществ безопасности использования X509 PKI (как это делает OpenVPN) заключается в том, что корневой ключ CA ( ca. key ) не обязательно должен присутствовать на сервере OpenVPN. В среде с высоким уровнем безопасности вам может потребоваться специально назначить машину для целей подписания ключей, обеспечить хорошую физическую защиту машины и отключить ее от всех сетей. При необходимости можно использовать дискеты для перемещения ключевых файлов вперед и назад.Такие меры чрезвычайно затрудняют кражу корневого ключа злоумышленнику, за исключением физического кражи машины для подписи ключей.


Сертификаты отзыва

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

Типичные причины отзыва сертификата:

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

Пример

В качестве примера мы отзовем сертификат client2 , который мы сгенерировали выше в разделе «генерация ключей» HOWTO.

Сначала откройте оболочку или окно командной строки и перейдите в каталог easy-rsa , как вы это делали в разделе «генерация ключей» выше. В Linux / BSD / Unix:

 ../vars
./revoke-full client2
  

В Windows:

  варов
revoke-full client2
  

Вы должны увидеть примерно такой результат:

 Использование конфигурации из /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
ОТЛАДКА [load_index]: unique_subject = "да"
Отзыв сертификата 04.
База данных обновлена
Используя конфигурацию из /root/openvpn/20/openvpn/tmp/easy-rsa/openssl.cnf
ОТЛАДКА [load_index]: unique_subject = "да"
клиент2.crt: /C=KG/ST=NA/O=OpenVPN-TEST/CN=client2/[email protected]
ошибка 23 при поиске глубины 0: сертификат отозван 

Обратите внимание на «ошибку 23» в последней строке. Это то, что вы хотите увидеть, поскольку это указывает на то, что проверка сертификата отозванного сертификата не удалась.

Сценарий revoke-full создаст файл CRL (список отзыва сертификатов) с именем crl.pem в подкаталоге keys . Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ, затем проверка CRL должна быть включена в конфигурации сервера:

  crl-verify crl.pem  

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

CRL Примечания

  • Когда в OpenVPN используется опция crl-verify , файл CRL будет перечитываться каждый раз, когда подключается новый клиент или существующий клиент повторно согласовывает соединение SSL / TLS (по умолчанию один раз в час). Это означает, что вы можете обновлять файл CRL во время работы демона сервера OpenVPN, а новый CRL немедленно вступает в силу для вновь подключающихся клиентов.Если клиент, чей сертификат вы отзываете, уже подключен, вы можете перезапустить сервер с помощью сигнала (SIGUSR1 или SIGHUP) и сбросить все клиенты, или вы можете telnet к интерфейсу управления и явно убить конкретный объект экземпляра клиента на сервере, не мешая другие клиенты.
  • Хотя директива crl-verify может использоваться как на сервере OpenVPN, так и на клиентах, обычно нет необходимости распространять файл CRL клиентам, если сертификат сервера не был отозван.Клиентам не нужно знать о других клиентских сертификатах, которые были отозваны, потому что клиенты не должны принимать прямые соединения от других клиентов в первую очередь.
  • Файл CRL не является секретным и должен быть доступен для чтения всем, чтобы демон OpenVPN мог прочитать его после того, как были отброшены привилегии root.
  • Если вы используете директиву chroot , обязательно поместите копию файла CRL в каталог chroot, поскольку в отличие от большинства других файлов, которые читает OpenVPN, файл CRL будет прочитан после выполнения вызова chroot, а не до .
  • Распространенной причиной отзыва сертификатов является то, что пользователь шифрует свой закрытый ключ паролем, а затем забывает его. Отозвав исходный сертификат, можно сгенерировать новую пару сертификат / ключ с исходным общим именем пользователя.

Важное примечание о возможной атаке «Человек посередине», если клиенты не проверяют сертификат сервера, к которому они подключаются.

Чтобы избежать возможной атаки Man-in-the-Middle, когда авторизованный клиент пытается подключиться к другому клиенту, выдавая себя за сервер, убедитесь, что клиенты используют какую-то проверку сертификата сервера.В настоящее время для этого существует пять различных способов, перечисленных в порядке предпочтения:

  • [OpenVPN 2.1 и выше] Создайте сертификаты сервера с определенным использованием ключей и расширенным использованием ключей. RFC3280 определяет, что для TLS-соединений должны быть предоставлены следующие атрибуты:

    Mode Использование ключа Использование расширенного ключа
    Клиент цифровая подпись Аутентификация веб-клиента TLS
    ключ Соглашение
    цифровой Подпись, ключ Соглашение
    Сервер цифровая подпись, ключ шифрования Аутентификация веб-сервера TLS
    цифровой Подпись, ключ Соглашение

    Сертификаты сервера можно создать с помощью сценария build-key-server (дополнительную информацию см. В документации easy-rs).Это будет обозначать сертификат как сертификат только для сервера путем установки правильных атрибутов. Теперь добавьте следующую строку в конфигурацию вашего клиента:

      удаленный сервер сертификатов tls  
  • [OpenVPN 2.0 и ниже] Создайте сертификаты сервера с помощью сценария build-key-server (дополнительную информацию см. В документации easy-rsa). Это обозначит сертификат как сертификат только для сервера, установив nsCertType = server.Теперь добавьте следующую строку в конфигурацию вашего клиента:

      Сервер NS-Cert  

    Это заблокирует подключение клиентов к любому серверу, в сертификате которого отсутствует обозначение сервера nsCertType =, даже если сертификат был подписан файлом ca в файле конфигурации OpenVPN.

  • Используйте директиву tls-remote на клиенте, чтобы принять / отклонить соединение с сервером на основе общего имени сертификата сервера.
  • Используйте сценарий или подключаемый модуль tls-verify , чтобы принять / отклонить соединение с сервером на основе настраиваемого теста сведений о субъекте X509, встроенных в сертификат сервера.
  • Подписывайте сертификаты сервера с одним ЦС и сертификаты клиента с другим ЦС. Директива конфигурации клиента ca должна ссылаться на файл CA для подписи сервера, в то время как директива конфигурации сервера ca должна ссылаться на файл CA для подписи клиента.

Подключение к серверу доступа с Windows

Каждому устройству Windows требуется клиентское приложение для подключения к вашему серверу доступа OpenVPN.Мы рекомендуем использовать OpenVPN Connect, который предварительно настроен для подключения к вашему серверу доступа. В этом документе представлена ​​информация об использовании OpenVPN Connect, а также об альтернативных решениях.

Установка клиентского приложения

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

OpenVPN Подключитесь к вашему серверу доступа

Ваша установка OpenVPN Access Server включает копию OpenVPN Connect, который представляет собой отдельный пакет под названием openvpn-as-bundled-clients, который обновляется при выпуске новых версий OpenVPN Connect. OpenVPN Connect — это наше официальное клиентское приложение, и ваши пользователи могут загрузить его прямо из пользовательского интерфейса вашего клиента, предварительно настроенного для подключения к вашему серверу, или загрузить его отдельно с нашего веб-сайта и импортировать профиль подключения.

Шаги: доступ к пользовательскому интерфейсу клиента
  • Откройте браузер и введите IP-адрес вашего сервера доступа или пользовательское имя хоста, если вы это настроили (рекомендуется).
  • Введите ваше имя пользователя и пароль.
    • После входа в систему вверху отображается рекомендованное приложение OpenVPN Connect для вашего устройства. Также показаны загрузки для других платформ, а также профили подключения.

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

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

Для получения дополнительной информации см .: Руководство по установке клиента OpenVPN Connect в Windows.

OpenVPN Connect v3

Мы рекомендуем и поддерживаем OpenVPN Connect v3 в качестве официального приложения для OpenVPN Access Server и OpenVPN Cloud.Клиентское программное обеспечение предлагает клиентское подключение на четырех основных платформах: Windows, macOS, Android и iOS. Для Linux мы рекомендуем клиент OpenVPN с открытым исходным кодом.

Вы можете запустить OpenVPN Connect v3 как системную службу Windows, что особенно полезно, если вам нужно активировать VPN до того, как пользователь войдет в систему. Для получения дополнительных сведений см. Использование OpenVPN Connect v3 в Windows в режиме Service Daemon.

Мы рекомендуем загрузить OpenVPN Connect v3 прямо из пользовательского интерфейса веб-клиента сервера доступа.Вы также можете скачать установочный файл для OpenVPN Connect v3 со страницы загрузки на нашем сайте или по ссылке ниже. Установка приложения с нашего сайта не содержит никаких настроек подключения, поэтому вам нужно будет предпринять дополнительные шаги, чтобы настроить подключение к вашему серверу доступа. Если вы устанавливаете указанный ниже файл на компьютер, на котором уже установлен и настроен OpenVPN Connect v3, он просто обновляет его до последней версии и сохраняет все настройки.

OpenVPN Connect v2

OpenVPN Connect v2 — это предыдущее поколение клиентского программного обеспечения OpenVPN Connect для OpenVPN Access Server.Поддержка OpenVPN Connect v2 заканчивается в 2022 году. Мы настоятельно рекомендуем использовать OpenVPN Connect v3.

Альтернативный клиент с открытым исходным кодом OpenVPN: OpenVPN GUI

В проекте с открытым исходным кодом также есть клиент для Windows под названием OpenVPN GUI . Графический интерфейс OpenVPN поддерживает возможность одновременного подключения к нескольким серверам OpenVPN, но для этого требуется тщательная настройка, чтобы избежать конфликтов маршрутов и подсетей. Обратите внимание, что вы также должны убедиться, что имеется достаточно виртуальных сетевых адаптеров.В Windows OpenVPN создает виртуальную сетевую карту или адаптер, но только один туннель OpenVPN может подключаться к виртуальному сетевому адаптеру. Если вам требуется три одновременных туннельных подключения OpenVPN, вы должны вручную добавить адаптеры с помощью сценариев командной строки в меню «Пуск».

Подобно OpenVPN Connect v3, графический интерфейс OpenVPN также включает режим демона службы, в котором соединение запускается как системная служба в Windows до того, как пользователь войдет в систему. Для получения дополнительных сведений см. Запуск OpenVPN как службы Windows.

Профили подключения OpenVPN можно сохранить в каталоге программы config , обычно расположенном в C: \ program files (x86) \ openvpn \ config \ с расширениями файлов .conf или .ovpn. Например, вы можете загрузить заблокированный пользователем профиль или профиль с автоматическим входом из веб-интерфейса OpenVPN Access Server и поместить его в этот каталог. В меню на панели задач отображаются параметры, которые можно использовать с этим профилем подключения.

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

Вы можете загрузить графический интерфейс OpenVPN из раздела загрузок сообщества на нашем сайте и загрузить установщик для Windows. Программа с графическим интерфейсом OpenVPN входит в состав этого установщика.

Программа ограничена 50 профилями подключения.

Альтернативный клиент OpenVPN: tunXten

tunXten — сторонний клиент, созданный Евгением Миндровым. tunXten доступен только для Windows и совместим с OpenVPN Access Server. tunXten поддерживает импорт профилей подключения непосредственно с сервера доступа, а также может поддерживать несколько одновременных туннельных подключений OpenVPN.Как и в версии с открытым исходным кодом, tunXten требует для этого несколько виртуальных сетевых адаптеров, но для этого у него есть инструмент с графическим интерфейсом. Вы можете просто добавлять адаптеры, пока не наберете необходимое количество подключений. Он поставляется с полезной информацией для ведения журнала и возможностью размещать пользовательские значки на соединениях, переименовывать профили в графическом интерфейсе, устанавливать соединения для автоматического подключения при загрузке, запоминать сохраненные имена пользователей и пароли и т. Д.

Альтернативный клиент OpenVPN: вязкость

Visidity — еще один сторонний клиент OpenVPN, созданный SparkLabs.Вязкость доступна для Windows и macOS и совместима с OpenVPN Access Server.

Другие клиентские проекты с графическим интерфейсом

Существует множество VPN-клиентов, созданных для протокола OpenVPN, которые также работают с OpenVPN Access Server. См. Текущий список на веб-сайте сообщества.

Полезные ресурсы

При необходимости для получения подробных сведений о конфигурации VPN могут быть полезны следующие ресурсы:

Запуск OpenVPN как службы Windows

Когда OpenVPN работает как служба, он запускает отдельный процесс OpenVPN для каждого файла конфигурации, который он находит в каталоге \ Program Files \ OpenVPN \ config , и выводит файл журнала с тем же именем в каталог \ Program Files \ OpenVPN \ log .

При установке в качестве службы OpenVPN по умолчанию переходит в режим ручного запуска. Вы можете перейти в панель управления «Службы» в панели управления -> Администрирование , чтобы запустить службу или установить ее в режим автоматического запуска.

Пример файла конфигурации находится в \ Program Files \ OpenVPN \ config \ sample.ovpn.txt , который можно адаптировать к вашим потребностям.

Сервисные заметки:

Когда вы устанавливаете OpenVPN как службу, вы фактически устанавливаете openvpnserv.exe , который является служебной оболочкой для OpenVPN, то есть считывает каталог файла конфигурации и запускает отдельный процесс OpenVPN для каждого файла конфигурации. openvpnserv.exe выполняет ту же функцию под Windows, что и сценарий запуска /etc/init.d/openvpn под Linux.

Когда вы останавливаете службу OpenVPN, она отправляет сигнал завершения всем процессам OpenVPN, которые были ею запущены.

Если служебная оболочка OpenVPN ( openvpnserv.exe ) обнаруживает фатальные ошибки, она записывает их в журнал событий Windows, который можно просмотреть в Панели управления -> Администрирование -> Средство просмотра событий -> Журнал приложений .

Если процессы OpenVPN сами обнаруживают ошибки, они записывают их в соответствующие файлы журналов в каталоге файлов журналов.

Существует взаимно однозначное соответствие между процессом OpenVPN, файлом конфигурации OpenVPN, файлом журнала OpenVPN и адаптером TAP-Win32, который представляет собой конечную точку туннеля VPN.

Туннели

OpenVPN являются двухточечными в их простейшей форме, но их можно сделать многоточечными с помощью мостов или маршрутизации (см. Ниже).

Несколько процессов OpenVPN могут выполняться одновременно, каждый на отдельном адаптере TAP-Windows.

openvpn.exe получает всю информацию о конфигурации из своего файла конфигурации, а не из реестра.

Программа openvpnserv.exe (служебная оболочка) получает несколько строковых параметров из реестра, которые могут быть изменены пользователем. Если вы измените любой из этих параметров, вы сможете обновить OpenVPN до новой версии без перезаписи ваших изменений установщиком: HKEY_LOCAL_MACHINE \ SOFTWARE \ OpenVPN

config_dir

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

для сканирования, по умолчанию «\ Program Files \ OpenVPN \ config»
config_ext
расширение файла в файлах конфигурации, по умолчанию «ovpn»
exe_path
путь к openvpn.exe , по умолчанию — «\ Program Files \ OpenVPN \ bin \ openvpn.exe»
log_dir

Каталог файлов журнала

, по умолчанию «\ Program Files \ OpenVPN \ log»
log_append
, если установлено в «1», несколько экземпляров процесса OpenVPN будут добавляться в один и тот же файл журнала, если установлено в «0» (по умолчанию), каждый новый экземпляр будет усекать предыдущий приоритет файла журнала, класс приоритета Windows для каждого экземпляра OpenVPN процесс, может быть одним из:
  • «IDLE_PRIORITY_CLASS»
  • «BELOW_NORMAL_PRIORITY_CLASS»
  • «NORMAL_PRIORITY_CLASS» (по умолчанию)
  • «КЛАСС ВЫШЕГО_ПРИОРИТЕТА»
  • «ВЫСОКИЙ_ПРИОРИТЕТ_КЛАССА»

Конфигурация OpenVPN для клиента Windows со ссылкой для скачивания

Прежде всего, вы должны найти соответствующую информацию о своей службе VPN, такую ​​как имя пользователя, пароль и IP-адрес VPN.

Не пропустите доступные предложения веб-хостинга до $ 1 →

Вы можете найти эту информацию, выполнив следующие действия:

1. Войдите в свою учетную запись в области клиентов: https://billing.hostens.com/clientarea/

2. Выберите «Услуги» слева и нажмите «VPN».

3. Выберите свой VPN-сервис из списка, и вы попадете на страницу с основной информацией

Загрузите и установите OpenVPN

1. Сначала вам нужно установить программное обеспечение OpenVPN GUI.Мы рекомендуем скачать OpenVPN по этой ссылке:

https://openvpn.net/index.php/open-source/downloads.html

Выберите установщик openvpn-install-2.4.4-I601.exe для Windows Vista и более поздних версий.

2. Установите приложение OpenVPN. Подробное руководство по установке приложения можно найти здесь:

https://openvpn.net/index.php/access-server/docs/admin-guides-sp-859543150/howto-connect-client-configuration/395-how-to-install-the-openvpn-client-on -окна.html

3. Загрузите файл конфигурации OpenVPN для Windows из клиентской системы. Нажмите кнопку «Загрузить», выберите «Сохранить» в диалоговом окне загрузки.
По завершении загрузки нажмите «Открыть папку».

4. Теперь, после установки графического интерфейса OpenVPN, вам необходимо вставить уникальный файл конфигурации в папку конфигурации графического интерфейса OpenVPN.
Скопируйте загруженный файл конфигурации. Теперь перейдите на свой диск «C:», затем в папку «Program Files», затем в папку «OpenVPN» и, наконец, в папку «config».
Щелкните правой кнопкой мыши и выберите «Вставить». После вставки файла конфигурации содержимое папки должно выглядеть так:

5. Теперь перейдите на Рабочий стол. Перед запуском графического интерфейса OpenVPN вам необходимо изменить параметры приложения. Если вы этого не сделаете, вы получите сообщение «Ошибка создания ключа HKLM \ SOFTWARE \ OpenVPN-GUI». сообщение об ошибке, или приложение запустится и подключится, но IP-адрес не изменится (потому что не будет никаких разрешений на изменение таблицы маршрутизации для отправки всего трафика через VPN-туннель).Для этого щелкните правой кнопкой мыши значок графического интерфейса OpenVPN и выберите «Свойства». Перейдите на вкладку «Совместимость», установите флажок «Запускать эту программу от имени администратора», нажмите кнопку «ОК». Дважды щелкните значок графического интерфейса OpenVPN на рабочем столе. Это запустит приложение и создаст маленький значок в форме экрана компьютера и замок на панели задач.

6. Щелкните правой кнопкой мыши значок и выберите «Подключиться» и введите учетные данные для входа, которые вы можете найти в клиентской системе.

7.Программа покажет окно подключения с журналом, а значок на панели задач станет желтым. Когда VPN подключен, окно журнала исчезнет, ​​а значок станет зеленым.

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

Что такое OpenVPN?

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

OpenVPN состоит из трех частей:

  • Сервер OpenVPN-AS
  • Веб-интерфейс администратора / графический интерфейс администратора
  • Клиенты подключения

Сервер OpenVPN

Сервер OpenVPN является основным элементом OpenVPN -AS Server и управляет основными функциями на бэкэнде. Некоторые функции, которые обрабатываются в интерфейсе администратора, включают туннелирование, маршрутизацию, шифрование, управление пользователями, аутентификацию и многие другие функции.Сервер OpenVPN также состоит из графического интерфейса пользователя WebGUI, который помогает контролировать несколько основных компонентов программного обеспечения.

Главный административный интерфейс WebGUI

Основной веб-интерфейс GUI позволяет несложно управлять элементами сервера OpenVPN. В WebGUI администратор может проверять параметры маршрутизации, привилегии, сетевые конфигурации, проверку пользователя и другие параметры. По умолчанию администратор может подключиться к шлюзу GUIWeb, перейдя по адресу https: // serverip: 943 / admin

Клиенты OpenVPN Connect

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

  • Browser Connect Client — это инструмент подключения на основе браузера для openvpn. Веб-адрес для пользователей: https: // serverip: 943
  • OpenVPN Connect Client (Mac) — Упрощенный клиент с одним подключением
  • OpenVPN Connect Client (Linux / Windows) — это клиент OpenVPN (который отличается от основного openvpn). -как программа).Для правильной работы этого программного обеспечения требуется файл конфигурации.

Раздел 1. Установка OpenVPN

Загрузите и установите OpenVPN

На сервере Windows мы начинаем с загрузки установщика Windows, а затем запускаем его на нашем сервере Windows. Как только это будет завершено, мы начнем настройку.

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

Шаг 1: Изменить каталог

  1. Откройте меню «Пуск» и перейдите в « Windows System » >>, а затем щелкните правой кнопкой мыши « Командная строка », затем «» Подробнее »и выберите« Запуск от имени администратора.«
  2. Затем щелкните правой кнопкой мыши пункт меню« Командная строка ».
  3. Во всплывающем окне« Контроль учетных записей пользователей »нажмите« Да », чтобы принять программу, которая внесет изменения на этом сервере.
  4. Перейдите в следующую папку расположение с помощью команды cd в административной командной строке.
      cd C: \ Program Files \ OpenVPN \ easy-rsa  

Шаг 2: Настройте сервер OpenVPN

Внимание:

Запустите только init- config один раз во время установки.

  1. Теперь мы можем приступить к настройке OpenVPN. Введите следующую команду.
      init-config  
  2. Затем мы открываем файл «vars.bat» в текстовом редакторе блокнота.
      notepad vars.bat 
  3. Затем мы отредактируем последующие строки, переключив настройки «США», «CA», которые соответствуют местоположению вашей компании.
      установить KEY_COUNTRY = US 
    установить KEY_PROVINCE = CA
    установить KEY_CITY = SanFrancisco
    установить KEY_ORG = OpenVPN
    установить KEY_EMAIL = mail @ host.домен
  4. Теперь сохраните файл и выйдите из Блокнота.
  5. Далее мы запустим следующие команды.
      варов
     
    чистый-все

Примечание:

Поля KEY_CN и KEY_NAME будут уникальными для каждого запроса на сборку.

Параметры KEY_CN и KEY_NAME относятся к общему полю имени и имени сертификата.

Параметр KEY_OU относится к «организационной единице» и может иметь любое значение, если для этого нет требований.Значения PKCS11_ относятся к настройкам, используемым для аппаратных модулей безопасности и смарт-карт, если вы их используете.

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

  1. Чтобы создать сертификат и ключ центра сертификации (CA), нам необходимо выполнить следующую команду.
      build-ca  
  2. Вам будет предложено ввести страну, штат и город. Эти параметры также будут иметь значения по умолчанию, которые указаны в скобках. Для «Общего имени» наиболее выгодным выбором будет выбрать уникальное имя, которое будет отличать вашу компанию.
      Центр сертификации «OpenVPN-CA»: 
    Название страны (двухбуквенный код) [США]:
    Название штата или провинции (полное имя) [CA]:
    Название населенного пункта (например, город) [SanFrancisco]:
    Название организации (например, компания) [OpenVPN]:
    Название организационной единицы (например, раздел) []:
    Общее имя (например, ваше имя или имя хоста вашего сервера) []: OpenVPN-CA
    Адрес электронной почты [[email protected]] :
  3. Затем мы инициируем сертификат и ключ сервера с помощью этой команды:
      build-key-server сервер
      

    — При появлении запроса введите «Общее имя» как «server»
    — Когда будет предложено подписать сертификат, введите «y»
    — При появлении запроса на фиксацию введите «y»

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

  1. Во-первых, мы должны создать наши ключи, используя следующую команду.
      C: \ Program Files \ OpenVPN \ easy-rsa> build-key-server.bat  
  2. Для каждого клиента, который будет подключаться к серверу, мы должны выбрать уникальное имя, чтобы идентифицировать компьютер этого пользователя, например «david-laptop» в примере ниже.
      build-key david-laptop  

  3. Затем, когда будет предложено, мы вводим «Общее имя» в качестве имени, которое вы выбрали для сертификата / ключа клиента.Мы повторим этот шаг для каждого клиентского компьютера, который будет подключаться к VPN.
      C: \ Program Files \ OpenVPN \ easy-rsa> build-key david-laptop  
  4. Теперь нам нужно сгенерировать параметры «Diffie Hellman» с помощью команды build-dh. Этот шаг необходим для настройки модели шифрования.
      C: \ Program Files \ OpenVPN \ easy-rsa> build-dh.bat  

  5. Затем мы сгенерируем общий секретный ключ (который требуется при использовании tls-auth)
      "C: \ Program Файлы \ OpenVPN \ bin \ openvpn.exe "--genkey --secret" C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ ta.key " 

Раздел 2. Настройка OpenVPN

OpenVPN предоставляет образцы данных конфигурации, которые можно легко можно найти с помощью меню «Пуск»: Меню «Пуск» -> Все программы -> OpenVPN -> Образцы файлов конфигурации OpenVPN

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

Шаг 1. Копирование / редактирование файлов

  1. Начнем с копирования образец файла « server configuration » в папку easy-rsa.Вот команда и ее результат:
      copy "C: \ Program Files \ OpenVPN \ sample-config \ server.ovpn" "C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ server.ovpn" 

    copy " C: \ Program Files \ OpenVPN \ easy-rsa "" C: \ Program files \ OpenVPN \ bin \ openvpn.exe "--genkey --secret

    копировать" C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ ta.key "" C: \ Program Files \ OpenVPN \ easy-rsa "

    копировать" C: \ Program Files \ OpenVPN \ sample-config \ server.ovpn "" C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ server.ovpn "1 файл (ы) скопирован.

  2. Далее нам нужно будет отредактировать файл server.ovpn.
      блокнот "C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ server.ovpn  
  3. Теперь найдите в файле следующие строки:
      ca - ca.crt 
    cert - server.crt
    key - server.key
    dh - dh3048.pem

    И отредактируйте их следующим образом:

      ca "C: \\ Program Files \\ OpenVPN \ config \ ca.crt" 
    cert "C: \\ Program Files \ OpenVPN \ config \ server.crt "
    ключ" C: \\ Program Files \ OpenVPN \ config \ server.ключ "
    dh" C: \\ Program Files \ OpenVPN \ config \ dh3048.pem "
  4. Наконец, сохраните и закройте файл.

Шаг 2. Файлы конфигурации клиента

  1. Начнем с копирование образца файла « server configuration » в папку easy-rsa. Вот команда и ее результат:
      copy «C: \ Program Files \ OpenVPN \ sample-config \ server.ovpn» «C: \ Программные файлы \ OpenVPN \ easy-rsa \ keys \ server.ovpn "
    C: \ Program Files \ OpenVPN \ easy-rsa" C: \ Program files \ OpenVPN \ bin \ openvpn.exe "--genkey --secret" C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ ta.key "
    C: \ Program Files \ OpenVPN \ easy-rsa copy" C: \ Program Files \ OpenVPN \ sample -config \ server.ovpn "" C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ server.ovpn "
    Скопировано 1 файл (ы).
    C: \ Program Files \ OpenVPN \ easy-rsa
  2. Затем нам нужно будет отредактировать файл server.ovpn.
      блокнот "C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ server.ovpn"  
  3. Теперь найдите в файле следующие строки:
      ок. Ок.crt 
    cert server.crt
    key server.key
    dh dh3048.pem

    И отредактируйте их следующим образом:

      ca "C: \\ Program Files \ OpenVPN \ config \ ca.crt" 
    cert " C: \\ Program Files \ OpenVPN \ config \ server.crt "
    key" C: \\ Program Files \ OpenVPN \ config \ server.key "
    dh" C: \\ Program Files \ OpenVPN \ config \ dh3048.pem "
  4. Наконец, сохраните и закройте файл.

Настроить клиент

Шаг 1.Копирование файлов

  1. Теперь мы можем скопировать следующие файлы на клиенте из C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ в C: \ Program Files \ OpenVPN \ config \ на сервере, используя команда robocopy:

    -ca.crt
    -ta.key
    -dh3048.pem
    -server.crt
    -server.key
    -server.ovpn

      robocopy "C: \ Program Files \ OpenVPN \ easy- rsa \ keys \ "" C: \ Program Files \ OpenVPN \ config \ "
    ca.crt
    ta.key
    dh3048.pem
    server.crt
    server.key
    server.ovpn
    ---------------------------------------- -------------
    ROBOCOPY :: Надежное копирование файлов для Windows
    --------------------------- --------------------------
    Начато: Пятница, 27 декабря 2019 г., 12:16:02
    Источник: C: \ Program Files \ OpenVPN \ easy-rsa \ keys \
    Dest: C: \ Program Files \ OpenVPN \ config \
    Файлы:
    ca.crt
    dh3048.pem
    server.crt
    server.ovpn
    Параметры: / DCOPY: DA / COPY: DAT / R: 1000000 / W: 30
    ---------------------------------------- ----------------------------
    C: \ Program Files \ OpenVPN \ easy-rsa \ keys \
    100% новый файл 2482 ca .crt
    100% 432 dh3048.pem
    100% новый файл 10901 server.ovpn
    100% новый файл 657 ta.key
    ----------------------- ---------------------------------------------
    Общее количество пропущенных копий, несоответствие FAILED Extras
    Dirs: 1 0 1 0 0 0
    Files: 0 0 0 0
    Bytes: 14.1 k 14.1 k 0 0 0 0
    Times: 0:00:00 0:00:00 0:00:00 0:00 : 00
    Скорость: 452250 Байт / сек.
    Скорость: 25,877 Мегабайт / мин.
    Завершено: пятница, 27 декабря 2019 г., 12:16:02
    C: \ Program Files \ OpenVPN \ easy-rsa
  2. Теперь мы можем скопировать следующие файлы на сервер из C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ с по C: \ Program Files \ OpenVPN \ config \ для каждого клиента, который будет использовать VPN (например,g., в данном примере david-laptop)
    -ca.crt
    -ta.key
    -david-laptop.crt
    -david-laptop.key
    -david-laptop.ovpn
      robocopy "C: \ Program Files \ OpenVPN \ easy-rsa \ keys \ "" C: \ Program Files \ OpenVPN \ config \ "ca.crt ta.key dh3048.pem server.crt server.key server.ovpn 
    --------- -------------------------------------------------- ------------
    ROBOCOPY :: Надежное копирование файлов для Windows
    ---------------------------- -------------------------------------------
    Запущен: Пятница, 27 декабря , 2019 12:16:02
    Источник: C: \ Program Files \ OpenVPN \ easy-rsa \ keys \
    Место назначения: C: \ Program Files \ OpenVPN \ config \
    Файлы: ca.crt
    ta.key
    dh3048.pem
    server.crt
    server.key
    server.ovpn
    Параметры: / DCOPY: DA / COPY: DAT / R: 1000000 / W: 30
    --------- -------------------------------------------------- ------------
    C: \ Program Files \ OpenVPN \ easy-rsa \ keys \
    100% новый файл 2482 ca.crt
    100% новый файл 432 dh3048.pem
    100% новый файл 10901 server.ovpn
    100% Новый файл 657 ta.key
    ------------------------------------ -----------------------------------
    Общее количество скопированных пропущенных несоответствий FAILED Extras
    Dirs: 1 0 1 0 0 0
    Файлы: 4 4 0 0 0 0
    Байт: 14.1 k 14,1 k 0 0 0
    Время: 0:00:00 0:00:00 0:00:00 0:00:00
    Скорость: 452250 Байт / сек.
    Скорость: 25,877 Мегабайт / мин.
    Завершено: пятница, 27 декабря 2019 г., 12:16:02
    C: \ Program Files \ OpenVPN \ easy-rsa

Примечание:

Пробел в конце пути в каждой строке имеет значение.

Запуск OpenVPN

Затем и на сервере, и на клиенте нам нужно запустить OpenVPN из:
Меню Пуск -> Все программы -> OpenVPN -> OpenVPN GUI

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

Последние мысли

Настройки брандмауэра

Если у вас возникли проблемы с подключением, убедитесь, что вы установили правило на брандмауэре сервера, разрешающее входящий UDP-трафик на порт 1194. (Win + R «wf.msc»)

Запуск OpenVPN как службы

Мы также можем запустить OpenVPN как службу, что позволит:

  • OpenVPN запускаться из неадминистративной учетной записи.
  • OpenVPN для автоматического запуска при запуске системы. Это предпочтительный метод для использования на сервере, а также на любых клиентах, которые будут постоянно подключаться к серверу.
  • Чтобы запустить инструмент администрирования службы Windows:
    (нажмите клавиши Windows + R)
    Введите « services.msc » и нажмите «Enter», чтобы запустить инструмент services.msc. Затем найдите службу OpenVPN и сбросьте ее тип запуска на «автоматический». При желании вы можете запустить службу сейчас, если хотите.

Советы по безопасности

Мы также можем запустить OpenVPN как службу, которая позволит:

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

Мы будем рады услышать от вас!

Мы гордимся тем, что являемся самыми полезными людьми в Hosting ™!

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

Если у вас возникнут какие-либо вопросы относительно этой информации, мы всегда готовы ответить на любые вопросы, связанные с этой статьей, 24 часа в сутки, 7 дней в неделю, 365 дней в году.

Если вы являетесь полностью управляемым сервером VPS, выделенным облаком, частным облаком VMWare, частным родительским сервером, управляемыми облачными серверами или владельцем выделенного сервера и вам неудобно выполнять какие-либо из описанных действий, с нами можно связаться по телефону @ 800.580.4985, чат или обращение в службу поддержки, чтобы помочь вам в этом процессе.

Как настроить клиент OpenVPN в Windows 10 — CyberGhost VPN

Убедитесь, что выполняются следующие требования:

Шаг 1

Зайдите в свою онлайн-учетную запись CyberGhost VPN и войдите в систему со своим Премиум-именем пользователя и паролем

Щелкните « Мои устройства » и в разделе « Добавить новое устройство »> щелкните « Другие ».

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

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

  • Страна: Поскольку соединения по собственному протоколу могут использоваться только с одним сервером, теперь вам нужно выбрать страну, из которой вы хотите просматривать веб-страницы; сервер, который будет использоваться в этой стране, будет выбран CyberGhost автоматически.
  • Группа серверов: Выберите группу серверов и протокол OpenVPN (UDP или TCP), который вы хотите использовать:
    UDP обеспечивает более высокую скорость, чем версия TCP, но в некоторых случаях может привести к прерыванию загрузки.Это значение по умолчанию.
    TCP обеспечивает более стабильные соединения, чем версия UDP, но немного медленнее. Выберите эту версию, если у вас периодически возникают проблемы с подключением, например внезапные отключения.

После того, как желаемые параметры выбраны, сохраните их с помощью « Сохранить конфигурацию »

Чтобы просмотреть учетные данные OpenVPN , сгенерированные для вас на панели управления конфигурацией, нажмите « View Configuration» .

После открытия новой страницы для вас будут созданы учетные данные для подключения, но обратите внимание на следующую информацию:

  • Группа серверов: Это адрес страны (сервера), к которой вы хотите подключиться, например «12345-1-ca.cg-dialup.net». Примечание. Этот адрес меняется с каждой страной, которую вы выбрали на предыдущем шаге. Фактический единый сервер, который будет использоваться, будет автоматически выбран CyberGhost.
  • Имя пользователя: Имя пользователя, созданное исключительно для этого протокола. Это НЕ ваше обычное имя пользователя учетной записи CyberGhost, оно используется только для аутентификации на наших серверах с помощью ручной настройки.
  • Пароль (необходимо установить флажок «Показать пароль», чтобы увидеть его): Пароль, созданный исключительно для использования протокола. Это НЕ ваш обычный пароль учетной записи CyberGhost, он используется только для аутентификации на наших серверах с помощью ручной настройки.
  • Общий ключ

Загрузите файл конфигурации.Для этого нажмите « Загрузить конфигурацию » и загрузите файл конфигурации на свой компьютер (рекомендуется создать специальную папку для конфигурации, доступную где-нибудь, например, на рабочем столе, и Извлечь / скопировать содержимое .zip файл там ).

Теперь сохраненная конфигурация представляет собой ZIP-файл, который содержит следующие отдельные файлы:

  • ca.crt: Это сертификат центра сертификации
  • клиент.crt: Это файл сертификата пользователя
  • client.key: Это файл вашего личного ключа
  • openvpn.ovpn: Это ваш файл конфигурации OpenVPN

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

Шаг 2

OpenVPN — это стороннее программное обеспечение, которое не встроено в Windows и поэтому должно быть загружено с его домашней страницы> после того, как вы окажетесь на сайте, прокрутите вниз и загрузите следующий файл:

Или щелкните ЗДЕСЬ для прямой ссылки для скачивания.

Сохраните соответствующий установочный файл (‘openvpn-install …’) на вашем компьютере и запустите установку. Когда дело доходит до выбора отдельных компонентов, оставьте все настройки без изменений и нажмите «Далее».

Оставьте место установки по умолчанию без изменений и нажмите «Установить». Запомните путь, он понадобится вам позже.

Предупреждающее сообщение о том, что сетевой адаптер TAP будет установлен, необходимо подтвердить, нажав «Да».После этого нажмите еще раз на «Далее», а затем на «Готово».

Шаг 3

Перейдите в папку установки OpenVPN (по умолчанию «C: \ Program Files \ OpenVPN \» ) и скопируйте все загруженные файлы конфигурации в подпапку ‘ config ‘, подробно: ‘ca.crt’ , client.crt, client.key и openvpn.ovpn.

Если вы хотите заниматься серфингом из разных стран, переименуйте распакованный файл конфигурации OpenVPN с «openvpn.ovpn» на e.грамм. ‘CG_RO_NoSpy.ovpn’ (или любая другая комбинация местоположения / группы серверов, которую вы выбрали при настройке файла конфигурации в управлении вашей учетной записью). Затем выберите другое местоположение и другую группу серверов (если есть) и загрузите следующий заархивированный файл конфигурации. Разархивируйте его, переименуйте содержащий его файл «OpenVPN.ovpn» и скопируйте его в подпапку «config». Сертификат и файлы ключей, оставшиеся внутри ZIP-файла, не нужно копировать повторно, так как они у вас уже есть после первой загрузки.

Для двух разных стран вам нужно, например, выполнить следующие шаги:

  1. Укажите устройство, протокол и операционную систему
  2. Выберите страну, например США
  3. Загрузите заархивированный файл конфигурации с сертификатами, ключом и файлом конфигурации OpenVPN
  4. Распакуйте загруженный файл и скопируйте все файлы в подпапку config внутри папки программы OpenVPN.
  5. Переименуйте файл конфигурации OpenVPN с «openvpn.ovpn» на «CG_USA.овпнь.
  6. Выберите следующую страну, например Румыния
  7. Загрузите следующий заархивированный файл конфигурации
  8. Распакуйте загруженный файл и скопируйте только файл openvpn.ovpn в подпапку config внутри папки программы OpenVPN.
  9. Переименуйте его в «CG_RO.ovpn».
  10. и т. Д. …

Подпапка config теперь состоит из следующих файлов (относительно примера выше):

  • ок. Crt
  • client.crt
  • клиент.ключ
  • CG_USA.ovpn
  • CG_RO.ovpn
  • ххх.ovpn

Шаг 4

Запустите « OpenVPN GUI » с правами администратора, которые необходимы для всех установок Windows Vista, Windows 7 и Windows 8.

Для этого щелкните правой кнопкой мыши значок OpenVPN на рабочем столе или в меню «Пуск» и активируйте OpenVPN через пункт контекстного меню «Запуск от имени администратора».

Никогда не забывайте запускать OpenVPN от имени администратора.

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

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