О протоколе openvpn

Команды и параметры при работе с сертификатами x509 и параметрами шифрования

cipher < alg > — указываем алгоритм шифрования. Например:
cipher AES-256-CBC
Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining).keysize < n > — размер ключа в битах. Например:
keysize 128auth < alg > — алгоритм хэширования. Пример:
auth SHA1df < file > — файл с ключем Диффи-Хелманаca < file > — файл сертификата для CAcert < file > — сертификат локальной машиныkey < file > — локальный ключ машиныtls-server — явно указывает, что данный хост является tls-servertls-client — соответственно tls-clientpkcs12 < file > — указываем файл (PKCS12), который содержит в себе сертификат, ключ и CA в одном файле. Пример:
pkcs12 /filecrl-verify < file > — список отозванных сертификатов, т.е. blacklist.no-replay — отключает защиту OpenVPN от атаки повторного воспроизведения (replay attack). Крайне не рекомендуется отключать!no-iv — отключает использование вектора инициализации шифра (IV). Крайне не рекомендуется отключать!
Последние две опции очень сильно снижают безопасность OpenVPN, крайне не рекомендуется их использование.secret < file > — включает режим шифрования и аутентификации на статических ключах. В качестве параметра использует заранее сгенерированный, командой —genkey, файл. Например:
secret key.txt
Все доступные алгоритмы шифрования можно просмотреть выполнив из командной строки:openvpn —show-ciphers
Алгоритмы хэширования:openvpn —show-digests
Показать все доступные TLS-шифры (TLS используется только для шифрования канала управления)openvpn —show-tls
Показать все доступные крипто-устройства в системе (если такие имеются):openvpn —show-engines
Для улучшения безопасности рекомендовано запускать все сервисы с минимальными правами. Следующими двумя командами мы укажем с правами какого пользователя и группы будет работать openvpn:user nobodygroup nogroup
Где, соответственно, nobody и nogroup имена пользователя и группы.

Как настроить OpenVPN на Windows 10

Как работает OpenVPN

Протокол OpenVPN отвечает за поддержание коммуникации между клиентом и сервером. Как правило, он используется для создания защищённого туннеля между VPN-клиентом и сервером.

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

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

Как подключиться OpenVPN

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

Теперь запустите программу OpenVPN GUI от имени администратора в Windows 10. В противоположном случае просто не удастся подключиться к выбранному серверу.

  1. На панели задач в контекстном меню OpenVPN выберите Импорт конфигурации… В открывшемся окне проводника укажите расположение ранее загруженной конфигурации.
  2. После импорта можно смело выбирать пункт Подключиться. При необходимости можно импортировать несколько конфигураций. В таком случае подключений будет два или три.

Рекомендуем импортировать несколько разных конфигураций, после чего перейти к их тестированию. Для тестирования можно воспользоваться сервисами проверки скорости Интернета на компьютере Windows 10.

Если же перейти в расположение: C:\ Пользователи\ Имя_пользователя\ OpenVPN\ config, то можно увидеть, и при необходимости удалить, папки с ранее добавленными конфигурациями.

После подключения к определённому серверу весь трафик пользователя будет проходить через VPN. Таким образом, можно будет играть в игры или посещать сайты, заблокированные в регионе. Скорость — далеко не его сильная сторона, но если у Вас скоростной Интернет, то скорость будет приемлемой. Как правило, скорость интернета падает из-за сильного уровня шифрования в OpenVPN.

Заключение

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

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

Ключи сертификатов можно хранить не в отдельных файлах, а внутри конфигурационного файла ovpn.


key-direction 1
 

<ca>
——BEGIN CERTIFICATE——

——END CERTIFICATE——
</ca>
<tls-auth>
——BEGIN OpenVPN Static key V1——

——END OpenVPN Static key V1——
</tls-auth>
<cert>
——BEGIN CERTIFICATE——

——END CERTIFICATE——
</cert>
<key>
——BEGIN PRIVATE KEY——

——END PRIVATE KEY——
</key>
<dh>
——BEGIN DH PARAMETERS——

——END DH PARAMETERS——
</dh>

* key-direction 1 — необходим для tls-auth, в противном случае, работать не будет; ca — ключ центра сертификации (ca.crt); tls-auth — ta.key; cert — открытый сертификат клиента (clients.crt); key — закрытый сертификат клиента (clients.key); dh — сертификат, созданный на базе протокола Диффи Хеллмана.

Команды для управления туннелем

ping < seconds > — указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, если по туннелю не передавался никакой трафик. Пример:
ping 10ping-restart < seconds > — если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель. Пример:
ping-restart 60 — если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.ping-timer-rem — позволяет перезапускать туннель, только когда указан удаленный адрес.persist-tun — данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.persist-key — указывает не перечитавать файлы ключей при перезапуске туннеля.resolv-retry < seconds > — устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста. Пример:
resolv-retry 86400inactive < seconds > — после n-секунд неактивности устройство TUN/TAP автоматически отключется. Пример:
inactive 120ping-exit < seconds > — если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN. Пример:
ping-exit 120keepalive < seconds > < seconds > — является совмещением сразу двух команд — ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел. Пример:
keepalive 10 180
Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета — то перезапускать туннель.persist-local-ip < IP > — оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен.persist-remote-ip < IP > — оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен.
persist-remote-ip 192.168.50.1

Возможные проблемы

Большая часть проблем решается при помощи логов, которые находятся в папке C:\Program Files\OpenVPN\log. Уровень детализации лога контролируется параметром verb в конфигурационном файле сервера или клиента.

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

  1. Проблема: клиент постоянно пытается подключиться к серверу, но соединения не происходит или подключение зависает.
    Причина: сервер блокирует подключения по настроенному порту VPN (в нашем примере, 443).
    Решение: на сервере необходимо добавить 443 порт в исключения брандмауэра или отключить последний.
     
  2. Проблема: при попытке подключиться к серверу выскакивает ошибка «Не удалось подключиться к config».
    Причина: ошибка в настройках.
    Решение: перепроверьте каждую строчку файла конфигурации. Проверьте наличие всех файлов, на которые ссылаетесь в настройках.
     
  3. Проблема: клиенты получают одинаковые IP-адреса.
    Причина: подключение выполняется под одним и тем же пользователем.
    Решение: сервер выдает одинаковые адреса одинаковым клиентам. Необходимо настроить авторизацию на сервере и выдать каждому клиенту индивидуальные настройки.
     
  4. Проблема: соединение происходит, но через несколько минут связь прерывается.
    Причина: дублирование IP-адресов.
    Решение: данная проблема описана выше (пункт 3).

Регистрация на DigitalOcean

Лучше всего регистрироваться по реферальной ссылке — тогда будет автоматически применён промокод на $10. А можно зарегистрироваться заполнив форму на главной странице и позже ввести любой промокод — он легко ищется через google. Их много разных и все по $10.

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

Далее нужно ввести данные кредитной карты, либо PayPal. Это обязательное требование для подтверждения аккаунта. PayPal есть практически у каждого.

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

Нужно нажать и выбрать вариант

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

Здесь — внесенный аванс. А — сумма, которую нужно оплатить. Оплата обычно производится по факту — сколько потратили за месяц, столько вас и попросят оплатить(после исчерпания аванса). В самом низу можно посмотреть, какие были начисления.

Команды для управления маршрутизацией

Обозначение: VPN-хост — удаленная сторона (удаленный хост)route < network > — устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля. Пример:
route 10.0.10.0 255.255.255.252route-gateway < IP > — устанавливает шлюз на VPN-хосте. Пример:
route-gateway 192.168.0.22
После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22route-delay < seconds > — указывает подождать n-секунд перед установкой маршрутов. Пример:
route-delay 5
Т.е. через 5 секунд после установки туннеля будут заданы маршруты.route-up < cmd > — выполнить скрипт или программу < cmd > после установки маршрутов. Пример:
route-up /script.shredirect-gateway — установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.

Доступ к локальной сети

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

1. Настройка реестра

Для включения IP маршрутизации в Windows необходимо в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters найти параметр IPEnableRouter и задать ему значение 1. Это можно сделать в утилите редактирования реестра (regedit) или командой:

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

* командную строку необходимо запускать от администратора.

2. Настройка OpenVPN Server

В конфигурационный файл OpenVPN добавим:

push «route 172.16.10.0 255.255.255.0»
push «route 192.168.2.0 255.255.255.0»

* где 172.16.10.0 — VPN сеть; 192.168.2.0 — локальная сеть, в которую необходимо «попасть» пользователям openvpn.

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

push «dhcp-option DNS 192.168.0.15»
push «dhcp-option DNS 192.168.0.16»
push «dhcp-option DOMAIN dmosk.local»

* где 192.168.0.15 и 192.168.0.16 — внутренние DNS-серверы; dmosk.local — домен, который будет добавляться к узлам, обращение к которым идет по неполному имени.

Если нам нужно, чтобы все запросы клиента (в том числе, Интернет) ходили через сервер OpenVPN, добавляем:

push «redirect-gateway def1»

* в таком случае, нам не обязательно добавлять push route, который мы использовали выше.

Перезагружаем службу OpenVpnService.

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

Заходим в управление сетевыми подключениями (Панель управления\Сеть и Интернет\Сетевые подключения). Кликаем правой кнопкой мыши по адаптеру локальной сети — Свойства:

На вкладке Доступ ставим галочку Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера:

… и сохраняем настройки.

Шаг 1. Подключение

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

1.2. Следующая причина — ваше соединение НЕ будет принято, если пользователь с таким именем уже подключен. В этом случае вы получите ошибку отклонения авторизации.Если вы некорректно оборвали первое соединение (например, отвалился канал к провайдеру) и начали устранавливать его еще раз, то в это случае наша система может вас не подключить до того момента, пока не исчетет таймаут неактивности первой сессии.В некоторых случаях этот таймаут может доходить до 5 минут.

1.3. Если вы все сделали верно, но соединение не устанавливается, то обратитесь к нам в форум

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

Результат этого шага — Соединение установлено.

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

При инициализации плагина в OpenVPN, плагин возвращает масочный список всех функций, которые может обслужить. При наступлении очередной фазы подключения или внутреннего события, OpenVPN вызывает соответствующие функции из плагина. Плагин преобразует переменное окружение и параметры переданные функции в структуру, инициализирует python и передаёт структуру в соответствующую процедуру python модуля. Процедура возвращает плагину один из трёх ответов (0 — Success, 1 — Error, 2 — Deferred). Ответ транформируется и возвращается OpenVPN.

Обратите внимание, что все вызовы модуля являются «stateless», это означает, что процедуры не помнят и не знают, что происходило ранее в других вызовах. Ориентироваться можно только на переменное окружение передаваемое плагину из OpenVPN

Внутри python модуля вы можете реализовать любую логику, подключая нужные библиотеки и ресурсы. Если вы не уверены в скорости выполнения проверок, то используйте «отложенные» подтверждения.

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

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

Суть проста. Токен содержит в себе идентификатор клиента и срок окончания доступа. Для подписи токена используется HMAC_SHA1 с закрытым ключом. После подписи токена, текстовое содержимое ксорится подписью и конвертится в base64. Таким образом получается «запечатывание» токена. «Запечатанный» токен используется в качестве пароля пользователя. При несанкционированном изменении блока с данными, поломается xor, если поломается xor, значит поломается проверка подписи. Без закрытого ключа подпись изменить не получится.

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

Надеюсь информация в данной статье была вам полезна.
Спасибо за потраченное на её прочтение время.
Если есть вопросы, попробую ответить на что смогу.

Пошаговая инструкция установки и настройки OpenVPN клиента на Android

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

1) Первое что нам необходимо сделать — установить OpenVPN на ваше Android устройство. Для этого вам необходимо скачать приложение OpenVPN for Android из любого источника, например из Google play:

Установка OpenVPN через Google Play

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

Запуск OpenVPN для Android.

3) Выбираем нужную директорию с файлом конфигурации, ключем и сертификатами. Жмем на файл конфигурации и кнопку «Выбрать».

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

4) По результатам процедуры импорта клиент OpenVPN для Android автоматически сформирует файл конфигурации и включит в файл конфигурации ключ, сертификаты клиента и сервера.

Примем импорта файлов конфигурации,ключа и сертификатов.

5) На данном этапе импорт и базовая конфигурация OpenVPN клиента для Андроид является завершенной. В дальнейшем вы можете провести дополнительную тонкую настройку используя графический интерфейс клиента OpenVPN для Android или вручную прописать нужные конфигурации в файле конфигураций. По завершению процедуры импорта, мы рекомендуем вам удалить исходные файлы конфигурации, ключи и сертификаты для большей безопасности вашей приватной VPN сети.

Конфигурация OpenVPN для Android через графический интерфейс.

6) Если вы правильно сконфигурировали сервер и клиент OpenVPN, то далее мы подключаем наше устройство к серверу. Для подключения OpenVPN клиента к нашему серверу необходимо нажать на импортированную запись и дождаться статуса подключения SUCCESS. В трее Android устройств будет висеть ваша аналитическая информация о количестве переподключений, трафике VPN сети и прочая аналитическая информация.

Подключение в OpenVPN серверу на Android

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

На сервере

На сервере генерируем сертификат для клиента. Для этого сначала чистим файл index.txt в папке C:\Program Files\OpenVPN\easy-rsa\keys.

Затем запускаем командную строку от имени администратора:

Переходим в каталог easy-rsa:

cd %ProgramFiles%\OpenVPN\easy-rsa

Далее наши действия зависят от версии RSA.

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

Запускаем команду:

EasyRSA-Start.bat

Мы окажемся в среде EasyRSA Shell.

Создаем клиентский сертификат:

./easyrsa gen-req client1 nopass

./easyrsa sign-req client client1

Мы должны увидеть запрос на подтверждение намерения выпустить сертификат — вводим yes:

  Confirm request details: yes

* в данном примере будет создан сертификат для client1.

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

Теперь из папки pki копируем файлы:

  • issued/client1.crt
  • private/client1.key
  • ca.crt
  • dh.pem
  • ta.key

… и переносим их на клиентский компьютер.

б) Создание сертификатов с RSA 2

Запускаем vars.bat:

vars.bat

И генерируем сертификат первого пользователя:

build-key.bat client1

* на все запросы наживаем Enter, кроме Common Name — в данном поле вводим имя клиента (в нашем случае, просто client1). В конце подтверждаем введенную информацию — y.
** На каждого клиента нужно сгенерировать свой сертификат, в противном случае, им будет присваиваться один и тот же IP-адрес, что будет приводить к конфликту.

Получиться, что-то на подобие:

По умолчанию, для Common Name будет подставляться значение из vars.bat — но с ним сертификат не будет создаваться. Необходимо при создании каждого ключа подставлять значение, равное имени сертификата. Например, как выше — подставлено client1.

Теперь из папки keys копируем файлы:

  • client1.crt
  • client1.key
  • ca.crt
  • dh.pem

… и переносим их на клиентский компьютер.

На клиенте

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

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

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее сертификаты, которые перенесли с сервера.

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

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
compress
ncp-disable
fast-io
cipher AES-256-CBC
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
float
keepalive 10 120
persist-key
persist-tun
verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы. Для боевой среды это будет внешний адрес.

Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно). Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Шаг 4. Пинг моего другого устройства по адресу 172.16.x.x успешен, а как выполнить пинг другого устройства по его внутреннему адресу 192.168.x.x?

Дальше начинается действие, ради которого все и затевалось — получение одним устройством c ОС Windows доступа к внутренней сети, расположенной за вторым устройством (маршрутизатором). Эти действия связаны с наличием маршрутной информации о сети «за» маршуртизатором и почти аналогичны предыдущему шагу, но с некоторыми отличиями. Теперь нам необходимо не только обучить ваш Windows «знанию» о сети 172.16.0.0/16, что было выполнено на предыдущем шаге, но и дать ему информацию о сети, расположенной «за» маршрутизатором вашего второго туннеля.

Прежде чем приступить к этому шагу вы должны убедиться в том, что сеть «за» вашим маршрутизатором НЕ пересекается с сетью, в которую подключена ваша Windows машина. То есть, если ваш Windows находится в сети 192.168.0.0/24 (например дом) и такая же сеть 192.168.0.0/24 расположена за вторым устройством (например дача) то такая конфигурация будет некорректной и из нее есть два выхода:

— перенастроить одну из сетей на другую схему адресации, например 192.168.1.0/24

— осуществить трансляцию портов на вашем втором устройстве в адрес, полученный от сети vpnki 172.16.x.x (эту конфигурацию мы не будем рассматривать в рамках настоящего документа)

Итак, если вы имеете разные сети, то теперь нам необходимо сообщить вашему Windows устройству о наличии сети, например 192.168.1.0/24, расположенной за ваш вторым туннелем. Для этого вам необходимо на вашей персональной странице настроек vpnki, для второго вашего туннеля (например дача) отметить галочкой то, что вы настраиваете маршуртизатор и за ним расположена сеть 192.168.1.0/24. Примененная на этой странице настройка добавит эту сеть в протокол DHCP и передаст в ваше Windows устройство при следующем подключении. Проверить это вы сможете выполнив команду . В ее длинном выводе вы должны обнаружить следующую строку:

Сетевой адрес       Маска            Адрес шлюза         Интерфейс192.16.1.0          255.255.255.0    172.16.0.1          172.16.x.x — выданный вам адрес

Если по какой-то причине данная строка не появилась это означает, что протокол DHCP не отработал и маршрутная информация не получена. В этом случае имеет смысл разобраться в причине или добавить статический маршрут в ручном режиме. В качестве обходного маневра вы можете прописать маршрут к сети 192.168.1.0/24 выполнив команду (с правами администратора!)

После этого вы должны успешно выполнить пинг своего «другого устройства», подключенного к сети vpnki по его внутреннему адресу (например 192.168.1.1), выполнив команду

Однако обращаем внимание:

— на то, что второе устройство (маршрутизатор) должно содержать в своей таблце маршрутов путь к сети 172.16.0.0/16 для отправки ответов на ваш пинг.

— на втором вашем устройстве (маршрутизаторе) межсетевой экран не должен блокировать ответы на пакеты icmp

Результат этого шага — наличие маршрута к сети 192.168.1.0/24 в таблице маршрутов Windows устройства и/или успешный пинг вашего второго устройства по внутреннему адресу 192.168.1.x.

PS: В целях борьбы с зависшими сессиями мы принудительно отключаем пользовательские туннели с протоколом OpenVPN в 00:00 по Московскому времени. При правильной настройке соединения должны автоматически переустановиться.

ВАЖНО! ЕСЛИ СОЕДИНЕНИЕ В 00:00 НЕ ПЕРЕУСТАНАВЛИВАЕТСЯ, ТО ОЗНАКОМЬТЕСЬ С ЭТИМ И ВНЕСИТЕ ИЗМЕНЕНИЯ В КОНФИГУРАЦИОННЫЙ ФАЙЛ OVPN

ДОПОЛНИТЕЛЬНО ПО ТЕМЕ:

Ознакомьтесь с настройками и работой нашей услуги «Публикация URL», которая поможет вам организовать удаленный доступ по протоколам http и https к своим ресурсам

Озанакомьтесь с работой и настройками нашей услуги «Проброс TCP порта», которая поможет вам опубликовать в сети Интернет TCP порт вашего устройства для организации удаленного доступа

Ознакомьтесь с настройками и приниципами работы услуги «Доступ через HTTP и SOCKS5 прокси», которая даст вам возможность удаленного доступа такими протоколами и приложениями как HTTP, RDP, VNC, ssh и другими

Несколько конфигурационных файлов

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

Для Windows:

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

Пример каталога config:

Пример файлов в одном из каталогов:

Теперь при подключении клиентом к можно выбрать конкретный VPN-сервер:

Для Linux:

Также как для Windows, создаем для каждого сервера свой каталог, куда скопируем рабочие файлы:

mkdir /etc/openvpn/server1

А в каталоге /etc/openvpn создаем для каждого подключения свой конфиг:

vi /etc/openvpn/client1.conf

* в конфигурационном файле все пути до файлов должны вести в соответствующий каталог (в нашем примере, /etc/openvpn/server1).

Запускаем OpenVPN:

openvpn —config /etc/openvpn/server1/client.conf

Для автоматического запуска мы уже ранее применяли команду:

systemctl enable openvpn@client

… где @client — указатель на использование конфигурационного файла client внутри папки openvpn (/etc/openvpn). Таким образом, если мы создали 2 файла client1.conf и client2.conf, команды для разрешения автозапуска бelen такие:

systemctl enable openvpn@client1

systemctl enable openvpn@client2

Шаг 4. Пинг удаленного компьютера

Результат: Пинг удаленного компьютера успешен

Шаг 4.1 Если два туннеля работают, то самое время проверить связь двух компьютеров между собой. Начать имеет смысл с выполнения команды ping на Компьютере 1. Это важный шаг и не стоит им пренебрегать.

В меню Windows — «Пуск» — «Выполнить» напишите три буквы — cmd

Это запустит командную строку Windows и в ней мы воспользуемся командой ping. Напишите там ping и далее адрес удаленного компьютера (в нашем примере Компьютера 2 — 172.16.35.182). Команда будет выглядеть так:  ping 172.16.35.182

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

На время тестов отключите межсетевой экран на принимающей стороне (Компьютер 2) и после этого пинги должны быть успешны.

Такой же пинг вы можете выполнить и из личного кабинета системы, перейдя на страницу «Инструменты»

Шаг 4. Пинг моего другого устройства по адресу 172.16.x.x успешен, а как выполнить пинг другого устройства по его внутреннему адресу 192.168.x.x?

Дальше начинается действие, ради которого все и затевалось — получение одним устройством c ОС Android доступа к внутренней сети, расположенной за вторым устройством (маршрутизатором). Эти действия связаны с наличием маршрутной информации о сети «за» маршуртизатором и почти аналогичны предыдущему шагу, но с некоторыми отличиями. Теперь нам необходимо не только обучить ваш Android «знанию» о сети 172.16.0.0/16, что было выполнено на предыдущем шаге, но и дать ему информацию о сети, расположенной «за» маршрутизатором вашего второго туннеля.

Прежде чем приступить к этому шагу вы должны убедиться в том, что сеть «за» вашим маршрутизатором НЕ пересекается с сетью, в которую подключено ваше Андроид устройство. То есть, если ваш Андроид находится в сети 192.168.0.0/24 (например дом) и такая же сеть 192.168.0.0/24 расположена за вторым устройством (например дача) то такая конфигурация будет некорректной и из нее есть два выхода:

— перенастроить одну из сетей на другую схему адресации, например 192.168.1.0/24

— осуществить трансляцию портов на вашем втором устройстве в адрес, полученный от сети vpnki 172.16.x.x (эту конфигурацию мы не будем рассматривать в рамках настоящего документа)

Это осуществляется также путем указания статического маршрута в настройках соединения Андроид. Таким образом в настройках соединения у вас окажутся два маршрута, разделенные пробелом:

172.16.0.0/16 192.168.0.0/24

После этого вы должны успешно выполнить пинг своего «другого устройства», подключенного к сети vpnki по его внутреннему адресу (например 192.168.1.1), выполнив команду

Однако обращаем внимание:

— на то, что второе устройство (маршрутизатор) должно содержать в своей таблце маршрутов путь к сети 172.16.0.0/16 для отправки ответов на ваш пинг.

— на втором вашем устройстве (маршрутизаторе) межсетевой экране не должен блокировать ответы на пакеты icmp

Результат этого шага — успешный пинг вашего второго устройства по его внутреннему адресу 192.168.1.x.

PS: В целях борьбы с зависшими сессиями мы принудительно отключаем пользовательские туннели с протоколом OpenVPN в 00:00 по Московскому времени. При правильной настройке соединения должны автоматически переустановиться.

ДОПОЛНИТЕЛЬНО ПО ТЕМЕ:

Ознакомьтесь с настройками и работой нашей услуги «Публикация URL», которая поможет вам организовать удаленный доступ по протоколам http и https к своим ресурсам

Озанакомьтесь с работой и настройками нашей услуги «Проброс TCP порта», которая поможет вам опубликовать в сети Интернет TCP порт вашего устройства для организации удаленного доступа

Ознакомьтесь с настройками и приниципами работы услуги «Доступ через HTTP и SOCKS5 прокси», которая даст вам возможность удаленного доступа такими протоколами и приложениями как HTTP, RDP, VNC, ssh и другими

Скриптинг

up < command >— выполнить команду после запуска устройства TUN/TAP. Пример:
up script-up.shup-delay < seconds > — подождать n-секунд перед запуском команды указанной в up. Пример:
up-delay 5down < command > — выполнить команду когда интерфейс TUN/TAP выключится. Пример:
down script-down.shdown-pre — выполнить команду, указанную в down перед выключением интерфейса TUN/TAPup-restart < command > — выполнить команду после каждого реконнектаroute-up < command > — выполнить команду после установки сетевых маршрутов. Пример:
route-up script.shlearn-address < command > — выполнить указанную команду, если ip удаленной стороны изменился.ipchange < command > — выполнить команду, если ip сервера изменился.client-connect < command > — выполнить команду, когда клиент подключился.client-disconnect < command > — выполнить команду, когда клиент отключился.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: