Установка и настройка OpenVPN на Windows или Linux

Доброго времени суток, дорогие читатели. Сегодня поговорим про такие вещи, как установка и настройка OpenVPN.

В прошлых статьях (раз, два) я рассказывал о том, что такое VPN и как его проверить в деле.

OpenVPN - иконка статьи

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

Пример первый:

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

Пример второй:

Мы хотим весь свой трафик передавать через домашний VPN сервер. Дома у нас Windows, на котором крутится виртуальная машина на Debian 8. Который и будет выступать в роли VPN сервера.

А теперь рассмотрим эти примеры более детально.
Приступим.


Схема сети для первого VPN-примера

У нас сеть домашний компьютер на Windows 10 x64, на нем развернута виртуалка на Debian 8, которая будет использоваться в качестве файлового хранилища, и рабочий ноутбук на Windows 10. Мы хотим с рабочего ноутбука подключиться к домашнему компьютеру и иметь доступ ко всем локальным ресурсам домашней сети.

На маршрутизаторе мы имеем внешний адрес 87.215.46.32, внутренний адрес 192.168.1.1. на домашнем компе мы имеем внутренний адрес 192.168.1.2, а также 192.168.94.2 для подсети VMWare. На виртуальном компе мы имеем адрес 192.168.94.110 и именно этот адрес нам понадобится для удаленного доступа к серверу. В качестве VPN подсети я выбрал 10.10.20.0 с префиксом /24 (маска 255.255.255.0):

Схема сети. Пример 1

Теперь давайте приступим к настройке.

к содержанию ↑

Установка и настройка VPN cервера на основе OpenVPN для первого примера

Скачиваем клиент отсюда (выбираем Installer (32-bit), Windows Vista and later или Installer (64-bit), Windows Vista and later).

На этапе выбора куда, собственно, все это ставить, я бы рекомендовал указать директорию, у которой путь идет без пробелов (например C:\), т.к. могут быть проблемы с работой некоторых скриптов. На этапе выбора компонент обязательно указываем OpenSSL Utilities и OpenVPN RSA Certificate Management Scripts:

Выбор компонентов OpenVPN

Устанавливаем. В процессе установки адаптера может появиться сообщение о необходимости установить VPN драйвер. Соглашаемся и жмем "Установить":

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

Как только все установили, можно приступить к настройке.

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

Для того, чтобы создать защищенное соединение, в OpenVPN используется аутентификация на цифровых сертификатах стандарта Х.509.

  • Цифровой сертификат представляет собой специальный файл, при помощи которого, например, сайт показывает, что ему можно доверять, или вы можете подписать сертификатом почтовое сообщение/документ и отправить его другому человеку, который по этому сертификату поймет, что файл действительно пришел от вас, а не от кого-то другого, и при этом он не был изменен;
  • Цифровой сертификат невозможно подделать, но можно попытаться подменить (но это легко определить, посмотрев кем был выдан такой сертификат). Любой сертификат веб-сайта или организации подписывается вышестоящим по иерархии сертификатом (сертификатом удостоверяющего центра).

При этом, существуют специальные организации, которые выдают сертификаты конечным потребителям. Такой сертификат есть у любого сайта, поддерживающего протокол HTTPS. Например, открываете сайт gosuslugi.ru и видите, что напротив HTTPS висит замочек:

Защищенный сайт Gosuslugi.ru

Тыкаете на него и видите свойства сертификата. Можете там же просмотреть сам сертификат и узнать кем он был выпущен:

Сертификат веб-сайта Gosuslugi.ru

У VPN ситуация похожая. Но здесь не только у сервера есть сертификат, но и у клиента. Они обмениваются этими сертификатами и проверяют сертификат партнера с помощью сертификата УЦ (Удостоверяющего центра, которым у нас выступает сервер) и таким образом определяют что партнеру можно доверять.

к содержанию ↑

Двигаемся далее - защищенное соединение

Так что для организации защищенного соединения между клиентом и серверов минимальный набор будет состоять из:

  • Сертификат УЦ (CA);
  • Сертификат сервера;
  • Сертификат клиента;
  • Закрытый ключ УЦ;
  • Закрытый ключ сервера;
  • Закрытый ключ клиента;
  • Ключевая последовательность Диффи-Хеллмана. Про сам алгоритм я расписывать не буду, если есть желание, можно глянуть этот ролик. Там довольно простым языком рассказывают о нем :)

Переходим в директорию с программой и идем в папку easy-rsa (у меня она находится в E:\OpenVPN\easy-rsa).

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

Создайте текстовый файлик под названием, например, generate-all, вставьте туда следующее содержимое:

@echo off
rem SETLOCAL enabledelayedexpansion
rem fullfill the vars under '-------' lines
:START
rem -------------VARS--------------
rem Edit this variable to point to
rem the openssl.cnf file included
rem with easy-rsa.
set PATH="E:\program files\OpenVPN"
set KEY_CONFIG=%PATH%\easy-rsa\openssl-1.0.0.cnf
rem Edit this variable to point to
rem your soon-to-be-created key
rem directory.
rem
rem WARNING: clean-all will do
rem a rm -rf on this directory
rem so make sure you define
rem it correctly!
set KEY_DIR=E:\certs
rem Increase this to 2048 if you
rem are paranoid. This will slow
rem down TLS negotiation performance
rem as well as the one-time DH parms
rem generation process.
set KEY_SIZE=1024
rem These are the default values for fields
rem which will be placed in the certificate.
rem Change these to reflect your site.
rem Don't leave any of these parms blank.
set KEY_COUNTRY=RU
set KEY_PROVINCE=CA
set KEY_CITY=Moscow
set KEY_ORG=barnak-VPN
set KEY_EMAIL=mail
set KEY_CN=barnak-CA
set KEY_NAME=name
set KEY_OU=ou
set PKCS11_MODULE_PATH=path
set PKCS11_PIN=pin
rem ----------------------------------------
rem ------------INIT SCRIPT-----------------
rem delete the KEY_DIR and any subdirs quietly
IF NOT EXIST %KEY_DIR% mkdir %KEY_DIR%
IF NOT EXIST %KEY_DIR%\index.txt (
rem copy in a fesh index file so we begin with an empty database
copy index.txt.start %KEY_DIR%\index.txt
rem copy in a fresh serial file so we begin generating keys at index 01
copy serial.start %KEY_DIR%\serial.
)
rem -----------------------------------------
echo.
echo Enter action:
echo 1 - Create CA certificate
echo 2 - Create DH file
echo 3 - Create Server Certficate
echo 4 - Create Client Certficate
echo 0 - Exit
set /P act=""
IF %act% == 1 (
 goto GEN-CA
) else IF %act% == 2 (
 goto GEN-DH
) else IF %act% == 3 (
 goto SRV-CRT
) else IF %act% == 4 (
 goto CLIENT-CRT
) else IF %act% == 0 (
 goto EXIT
) else (
 echo ERROR: Invalid action!
 goto START
)

:GEN-CA
rem build a cert authority valid for ten years, starting now
%PATH%\bin\openssl req -days 3650 -nodes -new -x509 -keyout %KEY_DIR%\ca.key -out %KEY_DIR%\ca.crt -config %KEY_CONFIG%
if ERRORLEVEL 0 echo CA certificate succesfully created
goto START

:GEN-DH
rem build a dh file for the server side
%PATH%\bin\openssl dhparam -out %KEY_DIR%/dh%KEY_SIZE%.pem %KEY_SIZE%
if ERRORLEVEL 0 echo DH file succesfully created
goto START

:SRV-CRT
set /P SRV_NAME="Enter Server Name: "
IF [%SRV_NAME%] == [] (
echo ERROR: Server name must not be empty!
goto SRV-CRT
)
set KEY_CN=%SRV_NAME%
rem build a request for a cert that will be valid for ten years
%PATH%\bin\openssl req -days 3650 -nodes -new -keyout %KEY_DIR%\%SRV_NAME%.key -out %KEY_DIR%\%SRV_NAME%.csr -config %KEY_CONFIG%
rem sign the cert request with our ca, creating a cert/key pair
%PATH%\bin\openssl ca -days 3650 -out %KEY_DIR%\%SRV_NAME%.crt -in %KEY_DIR%\%SRV_NAME%.csr -extensions server -config %KEY_CONFIG%
rem delete any .old files created in this process, to avoid future file creation errors
del /q %KEY_DIR%\*.old
IF NOT ERRORLEVEL 0 echo ERROR!
goto START

:CLIENT-CRT
set /P CLIENT_NAME="Enter Client Name: "
IF [%CLIENT_NAME%] == [] (
echo ERROR: Client Name must not be empty!
goto CLIENT-CRT
)
set KEY_CN=%CLIENT_NAME%
rem build a request for a cert that will be valid for ten years
%PATH%\bin\openssl req -days 3650 -nodes -new -keyout %KEY_DIR%\%CLIENT_NAME%.key -out %KEY_DIR%\%CLIENT_NAME%.csr -config %KEY_CONFIG%
rem sign the cert request with our ca, creating a cert/key pair
%PATH%\bin\openssl ca -days 3650 -out %KEY_DIR%\%CLIENT_NAME%.crt -in %KEY_DIR%\%CLIENT_NAME%.csr -config %KEY_CONFIG%
rem delete any .old files created in this process, to avoid future file creation errors
del /q %KEY_DIR%\*.old
IF NOT ERRORLEVEL 0 echo ERROR!
goto START

:EXIT

После этого сохраните скрипт как .bat файл (либо просто поменяйте ему расширение на .bat).

к содержанию ↑

Корректировки скрипта OpenVPN

Теперь надо внести некоторые корректировки в этот скрипт. Нас интересуют следующие строчки:

set PATH="E:\OpenVPN"

Где мы указываем папку с программой (путь).

set KEY_DIR=C:\certs

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

Идем дальше.

set KEY_COUNTRY=RU
set KEY_PROVINCE=CA
set KEY_CITY=Moscow
set KEY_ORG=barnak-VPN
set KEY_EMAIL=mail
set KEY_CN=barnak-CA
set KEY_NAME=name
set KEY_OU=ou
set PKCS11_MODULE_PATH=path
set PKCS11_PIN=pin

Здесь (см.выше) мы указываем информацию для сертификатов (они у нас будут использоваться для аутентификации между сервером и клиентом). Можно использовать пробелы:

  • KEY_PROVINCE, - указываем что хотим или оставляем по умолчанию;
  • KEY_CITY, - ваш город (или любой город);
  • KEY_ORG, - название вашего ИП :) (можно что угодно писать);
  • KEY_EMAIL, - указываем что хотим или оставляем по умолчанию;
  • KEY_CN, - название вашего сервера;
  • KEY_NAME, - указываем что хотим или оставляем по умолчанию;
  • KEY_OU, - указываем что хотим или оставляем по умолчанию;
  • PKCS11_MODULE_PATH, - указываем что хотим или оставляем по умолчанию;
  • PKCS11_PIN, - указываем что хотим или оставляем по умолчанию.

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

Скрипт для генерации OpenVPN

Вводим 1 и нажимаем Enter. Вас попросят ввести информацию о сертификате. Т.к. мы ее заполнили ранее, то просто нажимаете Enter, пока вам не напишет "CA certificate successfully created":

Выпуск СА сертификата

Кому интересно что это за поля и где их увидеть:

  • Открываете папку keys (или как вы ее назвали), открываете ca.crt, переходите на вкладку "Состав" и щелкаете по опции "Издатель":

Состав сертификата УЦ

Теперь нужно выпустить ключевую последовательность Диффи-Хеллмана. Вводим 2 и ждем, пока ключи сгенерируются:

Генерация ключей Диффи-Хеллмана

После этого выпускаем сертификат для нашего сервера. Вводим 3, далее нас попросят ввести имя сервера:

Выпуск сертификата сервера

Далее методично нажимаем Enter пока не появится фраза "Sign the certificate?", после чего нажимаем и Enter. Появится вопрос: "1 out of 1 certificate requests certified, commit?" на который мы отвечаем утвердительно. Сертификат готов.

Для клиента проделываем всё аналогично.

к содержанию ↑

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

После этого настраиваем конфигурацию сервера, для чего переходим в папку config и создаем файл server.ovpn, куда вставляем следующее:

port 1120
proto tcp
dev tun
dev-node OpenVPN
ca E:\\OpenVPN\\certs\\ca.crt
cert E:\\OpenVPN\\certs\\barnak-SRV.crt
key E:\\OpenVPN\\certs\\barnak-SRV.key # This file should be kept secret
dh E:\\OpenVPN\\certs\\dh1024.pem
server 10.10.20.0 255.255.255.0
push "route 10.10.20.0 255.255.255.0"
keepalive 10 120
cipher AES-128-CBC # AES
comp-lzo
max-clients 10
status openvpn-status.log
verb 4
mute 20
sndbuf 0
rcvbuf 0

Что здесь что:

  • port 1120, - номер порта, к которому будут подключаться клиенты;
  • proto tcp, - тип протокола (tcp или udp). TCP более медленный вариант, но если вы ходите через прокси-сервер, это единственный способ;
  • dev tun, - режим подключения (tun или tap, туннель или мост). В общем-то режим моста нужен для специфических приложений (типа тех, что используют IPX протокол, им нужно отправлять broadcast сообщения и тп.). Обычно хватает туннельного режима;
  • dev-node OpenVPN, - название вашего адаптера (используется только для режима подключения tap). Заходите в свойства сетевого адаптера и меняете название на то, которое вам больше нравится: Сетевой адаптер OpenVPN
  • ca E:\\OpenVPN\\certs\\ca.crt, - путь до сертификата УЦ. Обратите внимание на наше воспитание. Пьянки, гулянки, диско и панки обратный слеш (\) здесь указывается дважды;
  • cert E:\\OpenVPN\\certs\\barnak-SRV.crt, - путь до сертификата сервера;
  • key E:\\OpenVPN\\certs\\barnak-SRV.key, - путь до закрытого ключа сервера;
  • dh E:\\OpenVPN\\certs\\dh1024.pem, - путь до ключевой последовательности Диффи-Хеллмана;
  • server 10.10.20.0 255.255.255.0, - виртуальная подсеть и маска вашего VPN соединения. Когда к серверу будут подключаться, то сетевой адрес вы получите именно из этого диапазона. При этом, первый адрес всегда использует сервер;
  • push "route 10.10.20.0 255.255.255.0, - здесь указывается наша виртуальная подсеть. Эта команда нужна, чтобы при установлении соединения ваши VPN клиенты могли подключаться не только непосредственно к вам, но и к другим VPN компьютерам в вашей сети. При этом, таким образом можно добавлять несколько маршрутов;
  • keepalive 10 120, - отвечает за проверку доступности партнера. Будет отсылать пинги каждые 10 секунд, если от партнера не получен ответ в течение 120 секунд;
  • cipher AES-128-CBC, - алгоритм шифрования. Оставляйте этот, он самый надежный из предлагаемых :)
  • comp-lzo, - сжимание данных через VPN соединение (для уменьшения трафика);
  • max-clients 10, - сколько клиентов к вам может единовременно подключиться;
  • status openvpn-status.log, - название журнала, в котором будет краткая информация о том, кто подключился и т.п.: Пример вывода файла openvpn-status.log
  • verb 4, - уровень детализации логов. Чем больше, тем выше детализация;
  • mute 20, - Не выводить в логе больше 20 одинаковых сообщений (чтобы не засорять его);
  • sndbuf 0, - буфер для отправленных пакетов. 0 означает, что OpenVPN будет использовать системные настройки, что обычно увеличивает вашу пропускную способность;
  • rcvbuf 0, - буфер для полученных пакетов. Аналогично предыдущему.

Для более детального файла конфигурации можем перейти в папку sample-config и там открыть файл конфигурации текстовым редактором. Там есть комментарии к каждой опции.

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

Подключенный сервер OpenVPN

Если у вас просто пустой экран, то откройте файл журнала (\OpenVPN\log\;.log). В нем будет написано почему VPN не запускается.

к содержанию ↑

Настройка клиента OpenVPN для первого примера

С сервером мы закончили, теперь переходим к клиенту. Скачиваем все то же приложение, устанавливаем где нам удобнее. Переносим сертификат и ключ клиента, сертификат УЦ (у меня это: ca.crt, barnak-client.crt, barnak-client.key) в любое удобное для вас место.

Заходим в папку Config (у меня это C:\Program Files\OpenVPN\Config), создаем файл client.ovpn со следующим содержимым:

client
dev tun
dev-node OpenVPN
proto tcp
remote 87.215.46.32 1120
resolv-retry infinite
nobind
ca C:\\Program files\\OpenVPN\\keys\\ca.crt
cert C:\\Program files\\OpenVPN\\keys\\barnak-client.crt
key C:\\Program files\\OpenVPN\\keys\\barnak-client.key
ns-cert-type server
cipher AES-128-CBC
comp-lzo
verb 3
mute 20

Что у нас появилось нового:

  • client, - означает, что мы являемся клиентом;
  • remote 89.215.46.32 1120, - здесь указываем IP адрес (или DNS имя) нашего сервера и его порт;
  • resolv-retry infinite, - программа будет каждый раз узнавать IP адрес по DNS имени (если мы указывали DNS имя). Удобно тем, кто пользуется ноутбуками и не всегда подключен к сети;
  • nobind, - указываем, что мы не используем определенный локальный порт (т.е. программа будет выбирать случайный доступный порт);
  • ;http-proxy [proxy server] [proxy port #], - если вы используете прокси, то уберите ";". Здесь можно указать адрес (или DNS имя) прокси сервера и его порт;
  • ;http-proxy-retry # retry on connection failures,- переподключаться к прокси при обрыве связи. Также уберите ";", если вы собираетесь использовать прокси;
  • ns-cert-type server, - проверяем, что в сертификате сервера написано, что он сервер, а не клиент.

Теперь сохраняем настройки и запускаем VPN клиент. Через пару минут он подключится:

Подключенный OpenVPN

Следом настроим наше файловое хранилище.

к содержанию ↑

Настройка файлового хранилища на базе Debian

Для начала отвечу на вопрос: "А почему линукс, а не винда?". Да просто на виртуалке его намного быстрее настроить и он меньше требует ресурсов. Есть еще более компактные дистрибутивы типа TinyCore (самый маленький дистрибутив, что я находил), которые вовсе занимают 30 MB оперативной памяти и 2 GB жесткого диска, но нам сейчас это не подходит :)

Подключаемся к Debian. Устанавливаем пакет Samba командой:

apt-get install samba

Создаем учетную запись для подключения к этому хранилищу командой:

smbpasswd -a "имя пользователя Linux"

Далее нас попросят ввести пароль для этого пользователя, что мы и делаем. При этом стоит обратить внимание, что пользователь должен уже существовать (в первом случае он мне не дал создать пользователя, т.к. тот не существовал):

Создание пользователя user в Samba

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

mkdir /home/user/testshare

После чего настраиваем Самбу. Открываем файл конфигурации любым текстовым редактором:

vim.tiny /etc/samba/smb.conf

Прокручиваем в самый низ и добавляем следующие строки:

[test share]
 path = /home/user/testshare
 available = yes
 valid users = user
 read only = no
 browsable = yes
 public = yes
 writable = yes

..где:

  • [test share], - название общей директории, которое будет отображаться в Windows;
  • path, - пусть до общей папки;
  • valid users, - кто может подключаться к этой папке.

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

После этого перезапускаем сервис:

service samba restart

Если не помогло, то можно перезагрузиться (что тоже очень быстро).

к содержанию ↑

Прописываем маршрут OpenVPN

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

В моем примере VPN сервер не является шлюзом по умолчанию, так что маршрут нужен.

Добавляем следующую строчку:

route add -net 10.10.20.0/24 gw 192.168.94.2

Эта команда означает, что мы хотим для любого адреса из сети 10.10.20.0 255.255.255.0 отправлять все пакеты на шлюз 192.168.94.2.

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

echo 12345 > /home/user/testshare/test.txt

После этого тестируем нашу общую папку:

Проверяем доступность общей папки в Samba

Вводим учетные данные нашего Samba пользователя и видим, что всё доступно :)

Общая папка Samba доступна

А сейчас давайте несколько усложним задачу. Помимо файлового хранилища, мы хотим перенести наш VPN сервер на вторую виртуалку с Debian ( :) ) и к тому же мы хотим, чтобы весь трафик шел через него.

к содержанию ↑

Схема сети для второго примера VPN

У нас сеть домашний компьютер на Windows 10 x64, на нем развернута виртуалка на Debian 8, которая будет использоваться в качестве файлового хранилища, еще одна виртуалка, которая будет выступать VPN сервером, и рабочий ноутбук на Windows 10. Мы хотим с рабочего ноутбука подключиться к VPN серверу и иметь доступ ко всем локальным ресурсам домашней сети.

На маршрутизаторе мы имеем внешний адрес 87.215.46.32, внутренний адрес 192.168.1.1. на домашнем компе мы имеем внутренний адрес 192.168.1.2, а также 192.168.94.2 для подсети VMWare.

На виртуальном клиенте мы имеем адрес 192.168.94.110 и именно этот адрес нам понадобится для удаленного доступа к нему. На виртуальном VPN сервере мы имеем адрес 192.168.94.100. В качестве VPN подсети я выбрал всю ту же 10.10.20.0 с префиксом /24 (маска 255.255.255.0).

Схема сети. Пример 2

Собственно, теперь перейдем к настройке этого примера.

к содержанию ↑

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

Подключаемся к нашему серверу, входим под рутом и скачиваем openvpn:

aptitude install openvpn openssl

После установки копируем скрипты в папку программы:

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

Далее переходим в папку /etc/openvpn/easy-rsa и открываем файл vars текстовым редактором. Здесь нас интересуют следующие опции:

export KEY_SIZE=1024

export KEY_COUNTRY="RU"

export KEY_PROVINCE="CA"

export KEY_CITY="Moscow"

export KEY_ORG="barnak VPN"

export KEY_EMAIL="test"

export KEY_OU="test"

Соответственно что делать с этими полями вы уже знаете :)

export KEY_SIZE=1024 - длина ключа. Можно указать 2048, но особого смысла в этом не будет, только VPN медленнее станет работать.

Теперь эти переменные надо инициировать:

source ./vars

Мы получим предупреждение, что при запуске скрипта clean-all оно удалит все содержимое папки с ключами (а это папка с программой). Но нам ничего чистить не нужно, так что не обращаем внимания.

Теперь создаем сертификат УЦ:

./build-ca

После этого ключи DH:

./build-dh

Сертификат и ключи сервера:

./build-key-server debian-srv

И клиента:

./build-key client

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

vim.tiny /etc/openvpn/server.conf

Добавляем туда следующее:

port 1194

proto tcp

dev tun

ca ca.crt

cert debian-srv.crt

key debian-srv.key

dh dh1024.pem

server 10.10.20.0 255.255.255.0

keepalive 10 120

cipher AES-128-CBC # AES

comp-lzo

max-clients 10

persist-key

persist-tun

client-to-client

status openvpn-status.log

log /var/log/openvpn.log

verb 4

mute 20

sndbuf 0

rcvbuf 0

push "route 10.10.20.0 255.255.255.0"

push "redirect-gateway def1"

Из новых настроек здесь следующие:

  • persist-key, - позволяет избежать некоторых проблем с доступностью при понижении прав (только для Linux);
  • persist-tun, - аналогично;
  • client-to-client, - позволяет клиентам видеть друг друга. Без этой опции клиенты смогут видеть только сервер и его ресурсы, но не других клиентов (аналог AP Isolation);
  • log /var/log/openvpn.log, - где будет храниться журнал событий openvpn;
  • push "redirect-gateway def1", - добавляет клиентам маршрут к VPN серверу, чтобы весь трафик ходил через него.

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

iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE

Где 10.10.20.0/24 - ваша виртуальная VPN подсеть.

Сохраняем правило NAT в файл:

iptables-save > /etc/network/iptables.conf

Теперь открываем текстовым редактором настройки сетевых интерфейсов:

vim.tiny /etc/network/interfaces

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

post-up /sbin/iptables-restore < /etc/network/iptables.conf

Вот как это выглядит у меня:

Содержимое файла interfaces

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

И последний штрих. нужно включить IP Forwarding. Без этого скорее всего ваш NAT не заработает. Открываем текстовым редактором файл  /etc/sysctl.conf, находим строчку net.ipv4.ip_forward=1, раскомментируем ее (либо выставляем 1) и применяем командой:

sysctl -p

Теперь можно запускать OpenVPN. делается это довольно просто командой:

openvpn server.conf

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

к содержанию ↑

Настройка VPN-клиента для второго примера

В общем-то здесь ничего нового. Только нужно предварительно стянуть ключи и сертификаты с нашего сервера. Я использовал для этого pscp. Пуск - Выполнить - CMD:

C:\Downloads\pscp -r -P 2200 [email protected]:/etc/openvpn/easy-rsa/keys/* C:\Program Files\OpenVPN\keys\

где:

  • C:\Downloads\pscp - путь до программы;
  • -r - копировать каталоги;
  • -P 2200 - порт для подключения к виртуалке;
  • [email protected] - имя пользователя и адрес сервера;
  • /etc/openvpn/easy-rsa/keys/* - путь до ключей и сертификатов на сервере;
  • C:\Program Files\OpenVPN\keys\ - путь куда их копировать.

А дальше все, как в прошлый раз :)

Ну и.. На сим, пожалуй, можно переходить к послесловию.

к содержанию ↑

Послесловие

Вот мы и добрались до конца c OpenVPN.

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

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

PS: За существование оной статьи отдельное спасибо другу проекта и члену нашей команды под ником “barn4k“.

Sonikelf's Project's логотип Sonikelf's Project's логотип Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Sonikelf

Мощь..

Sol

Не то слово...

Pavel

Чет я не понял зачем такие сложности. А просто Team Viwer поставить не пойдет? Или уровень шифрование в нем не достаточно?

Sonikelf

Совершенно не вариант.. Я бы даже сказал, что это вообще два разных подхода к самой сути даже :)

tvark

Ага, сильно-сильно!!!
Вот только вопрос... а разве нельзя обойтись одной реальной железкой, на которой будет стоять Debian и он будет выступать и VPN-сервером и Файловым хранилищем... или в одну корзину как говорится разные яйца не камильфо складывать???

Sonikelf

Смотря, как говорится, где и зачем :)

Дмитрий

Спасибо за статью. Осталось освоить и попробовать :)

Sonikelf

Лишь бы на пользу :)

zxy

фуф)) Классно, давно хотел от вас такую статью.
Но Дмитрий выше прав, надо осваивать..
Как-то оно с наскока страшно :)
Ну и про дебиан не понятно. Его же тоже устанавливать-настраивать?

Вадим

Спасибо за статью , обязательно попробую :)
Вопрос такой , ясли я пользуюсь не VMWare а VirtualBox , то в настройках машины в разделе Сеть какой тип подключения указывать ? И ещё насчет 24 порта это как-то связано с разными виртуалками или можно использовать по умолчанию ?

Сергей

Спасибо за материал, очень полезно знать) Не могли бы разъяснить, в чем кардинальная разница между этими двумя примерами? В обоих случаях подключение к домашней сети идет через VPN-сервер, только в первом случае он крутится на физической машине с Windows 10, а во втором - на виртуалке под линуксом, правильно понимаю? В чем тогда принципиальные отличия?

Дмитрий

А для чего вообще vpn в локальной сети? Что бы от подмены пакетов защититься? другой причины не вижу

Дмитрий

Уже разобрался, почитав другие статьи

Алексей

День добрый!
Подскажите пожалуйста по скрипту - "generate-all"

При его копировании и запуске, вылетает ошибка "quot" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом."

При игнорировании ошибки и дойдя до пункта 3, другая ошибка " Не удается найти C:\certs\*.old "

И да, путь с установленным openvpn в скрипте менял на set PATH="C:\OpenVPN"
Менял эти самые " на ковычки, но тогда синтаксис не правильный пишет
Спасибо!

barn4k

Приветствую!

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

Sonikelf

Немного подлатали, вытащили на главную.

Сергей

Добрый день! Не работает скрипт, все равно ошибка на 2-3 пункте, дайте пожалуйста ссылочку на исправленный вариант.Заранее благодарен.

Максим

Добрый день!

Создаю скрипт для первого примера. Есть проблема. На 3 и 4 пункте выскакивает ошибка. Подскажите в чем проблема.

Error opening CA private key "C:\OpenVPN"\certs/ca.key
3364:error:0200107B:system library:fopen:Unknown error:bss_file.c:406:fopen('"C:\OpenVPN"\certs/ca.key','rb')
3364:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:408:
unable to load CA private key
Не удается найти C:\OpenVPN\certs\*.old

Ильгиз

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

barn4k

Добрый день!
Проверяйте пути. В примере выше неверный путь указан: "C:\OpenVPN"\certs/ca.key
Не должно быть слешей(/) в разные стороны.

Сергей

Править в каком файле? В скрипте вроде нет...Уточните пожалуйста! Не все шарят)

Сергей

Поправьте пожалуйста скрипт) Ну сделайте доброе дело)))

Sergey

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl-1.0.0.cnf
Can't open "C:\OpenVPN"\certs/ca.key for reading, Invalid argument
4532:error:0200107B:system library:fopen:Unknown error:crypto/bio/bss_file.c:74:fopen('"C:\OpenVPN"\certs/ca.key','r')
4532:error:2006D002:BIO routines:BIO_new_file:system lib:crypto/bio/bss_file.c:83:
unable to load CA private key
Не удается найти C:\OpenVPN\certs\*.old

Тоже самое... Менять в скрипте или opensыl ?

barn4k

У вас откуда-то появляется неправильный слеш "/ca.key". Пришлите сам скрипт (.bat) в виде архива на почту [email protected], посмотрю.

Сергей

Спасибо огромное!!!!!!

Сергей

Не хочет Вам письмо отправляться, выложил на Яндекс диск, посмотрите пожалуйста
https://yadi.sk/d/UrdbGEtb3aT257

barn4k

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

Сергей

Спасибо Вам огромное за помощь и энтузиазм!!!!!

Sonikelf

Поддержать проект можно так - https://sonikelf.ru/helpme/ :)

Сергей

За такую дельную статью и помощь можно и задонатить)На просторах сети чаще всего люди чужие статьи перезаливают, тут дело уникальное)))

Sonikelf

Мы стараемся своё, обычно нас переливают :)

Максим

Всё, разобрался

barn4k

Приветствую!

Если что, обращайтесь :)

Сергей

Подскажи пожалуйста, в чем дело было?

Максим

Добрый день!

Всё настроил, сервер подключается, получает ip 10.10.10.1. Клиент тоже подключается с ip 10.10.10.2.
Ping проходит и в одну и в другую сторону. Но сетевые папки не видно ни на сервере ни на клиенте.

Подскажите где ошибка.

Server

port 12122
proto udp4
dev tun
dev-node "OpenVPN"
dh C:\\OpenVPN\\certs\\dh1024.pem
ca C:\\OpenVPN\\certs\\ca.crt
cert C:\\OpenVPN\\certs\\SVR.crt
key C:\\OpenVPN\\certs\\SVR.key
server 10.10.10.0 255.255.255.0
cipher AES-128-CBC
status C:\\OpenVPN\\log\\openvpn-status.log
log C:\\OpenVPN\\log\\openvpn.log
client-config-dir "C:\\OpenVPN\\Cli"
verb 3
mute 20
max-clients 10
keepalive 10 120
client-to-client
comp-lzo
persist-key
persist-tun
route-delay 5
push "route 10.10.10.0 255.255.255.0"
push "redirect-gateway def1"
route-gateway 10.10.10.1
topology subnet

Client

client
port 12122
proto udp4
dev tun
dev-node "OpenVPN"
remote *.*.*.* 12122
remote-cert-tls server
ca C:\\OpenVPN\\certs\\ca.crt
cert C:\\OpenVPN\\certs\\CLI-2.crt
key C:\\OpenVPN\\certs\\CLI-2.key
comp-lzo
persist-key
persist-tun
cipher AES-128-CBC
status C:\\OpenVPN\\log\\openvpn-status.log
log C:\\OpenVPN\\log\\openvpn.log
verb 3
mute 20

barn4k

А сетевые папки где находятся? На сервере, клиенте или на каком-то другом компе?

Максим

На сервере

barn4k

Тогда никаких проблем не должно быть с доступом. Проверьте, что межсетевой экран не блокирует общий доступ.

А откуда вас в конфигурации сервера взялась команда "route-gateway 10.10.10.1"? Плюс строчку "proto udp4" поправьте на "proto udp", так же на клиенте уберите команды "port 12122", "remote-cert-tls server". Это серверные команды.

Максим

Так и не понял что блокировало доступ. Пришлось винду переустановить.
И всё ОК. Всё работает.
Спасибо за помощь!

Sonikelf

Бывает..

Игорь

Доброго времени суток. Подскажите, а как потом отозвать сертификат у клиента или заблокировать его????

Игорь

Уже разобрался. Допилил скрипт:)

barn4k

Хех, не успел :)

FREELIFE

Can't open "C:\OpenVPN"\certs/ca.key for reading, Invalid argument
9384:error:0200107B:system library:fopen:Unknown error:crypto/bio/bss_file.c:74:fopen('"C:\OpenVPN"\certs/ca.key','r')
9384:error:2006D002:BIO routines:BIO_new_file:system lib:crypto/bio/bss_file.c:83:
unable to load CA private key
Не удается найти C:\OpenVPN\certs\*.old

Как решить данную проблему ?

FREELIFE

req: Cannot open input file openssl-1.0.0.cnf, No such file or directory
req: Use -help for summary.
Using configuration from openssl-1.0.0.cnf
Can't open openssl-1.0.0.cnf for reading, No such file or directory
4156:error:02001002:system library:fopen:No such file or directory:crypto/bio/bss_file.c:74:fopen('openssl-1.0.0.cnf','r')
4156:error:2006D080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:81:
Не удается найти C:\OpenVPN\certs\*.old

А это если 3 пункт запускать от админа

FREELIFE

Can't open "C:\OpenVPN"\certs/ca.key for reading, Invalid argument
14660:error:0200107B:system library:fopen:Unknown error:crypto/bio/bss_file.c:74:fopen('"C:\OpenVPN"\certs/ca.key','r')
14660:error:2006D002:BIO routines:BIO_new_file:system lib:crypto/bio/bss_file.c:83:
unable to load CA private key
Не удается найти C:\OpenVPN\certs\*.old

Установил сертификат в ручную, нечего, не выходит.

barn4k

Добрый день!
Проверьте пути. У вас не в ту сторону смотрит слеш:
Can't open "C:\OpenVPN"\certs/ca.key for reading

Alex82

Подскажите где искать не правильно стоящий слеш?

bezbflava

Здравствуйте. Я так понял заработает это всё дело если у меня статический ip?

barn4k

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

Сергей

Доброго времени суток команда sonikelf.ru Интересует некая деталь конфигурации OpenVPN. При подключении клиента к серверу, и, прохождения Нннного количества трафика через OpenVPN сервер, сервер выдаёт ошибку MULTI: bad source address from client Весь трафик исходя из конфига сервера я перенаправляю через свою машину(OpenVPN) т.е. использую дерективу push "redirect-gateway def1" Если я исключаю эту дерективу, сервер не выдаёт ошибок. Но в моём случае важно завернуть весь трафик в тунель, и сделать чтобы клиентский трафик ходил без потерь.
-------------------------------------------------------------------------------------
Параметры моей машины(OpenVPN) периферия и ПО:
-Windows 10 x64
-Роутер TP-Link Archer C 20
-Антивирус Eset Internet Security
-------------------------------------------------------------------------------------
Работы которые производились на роутере:
-Резервирование ip
-Проброс UDP порта 1194 для зарезервированого ip (моей машины OpenVPN)
-------------------------------------------------------------------------------------
Работы которые производились с антивирусом:
-Создано разрешающее правило для исходящего и входящего трафика программы OpenVPN по порту 1194( ip машины OpenVPN также вписан в это правило) (Протокол UDP также указан в правиле)
-------------------------------------------------------------------------------------
Конфиг Сервера:

dev-node "svchost"
mode server

port 1194
proto udp
dev tun

tls-server
tls-auth C:\\OpenVPN\\config\\fa.key 0

ca C:\\OpenVPN\\config\\server\\ca.crt
cert C:\\OpenVPN\\config\\server\\svchost.crt
key C:\\OpenVPN\\config\\server\\svchost.key
dh C:\\OpenVPN\\config\\server\\dh2048.pem

duplicate-cn

auth MD5

server 10.10.10.0 255.255.255.0
topology subnet

route 10.10.10.0 255.255.255.0
route-gateway 10.10.10.1

push "redirect-gateway def1"
push "route 10.10.10.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

route-delay 10
route-method exe

keepalive 5 120
client-to-client

tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
comp-lzo yes

persist-key
persist-tun

cipher AES-128-CBC
verb 4
mute 20
sndbuf 0
rcvbuf 0
-------------------------------------------------------------------------------------
Конфиг Клиента:

nobind
client

remote dojki.com
port 1194
dev tun
proto udp

tls-client
remote-cert-tls server
route-delay 2

auth MD5

tun-mtu 1500
tun-mtu-extra 32
mssfix 1450

pull

cipher AES-128-CBC
comp-lzo yes

persist-key
persist-tun-mtu

verb 4

key-direction 1

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

-----END CERTIFICATE-----

-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----

-----BEGIN OpenVPN Static key V1-----

-----END OpenVPN Static key V1-----

barn4k

Приветствую!

Пришлите всю строку целиком, которая начинается на "MULTI: bad source address from client"

Сергей

Tue May 29 00:12:19 2018 us=64085 ss/46.133.36.201 MULTI: bad source address from client [100.72.188.225], packet dropped

barn4k

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

Сергей

Я также в этом где то убежден, только вот вопрос, есть ли какой то рецепт решения подобных проблем?

barn4k

Ммм... тут нужно понимание что куда ходит. У вас клиент ходит через VPN сервер к каким-то определенным ресурсам или в интернет? Клиент может обращаться к каким-то ресурсам мимо VPN сервера?
также пришлите вывод команды route print (windows) или route -n (linux) на клиенте и сервере

Сергей

Клиент ходит в интернет, и не должен быть ничем ограничен, просто должен как бы идти через меня транзитом. В процессе теста, клиент видит общедоступные ресурсы розшарянные на сервере, с этим проблем нет. Также мной было протестировано много решений которые я вносил в client-config-dir C:\\OpenVPN\\ccd (сейчас эта деректива также есть, но она пустая, т.к. ничего из моих попыток не дали результата) по поводу ошибки Tue May 29 00:12:19 2018 us=64085 ss/46.133.36.201 MULTI: bad source address from client [100.72.188.225], packet dropped, а конкретно, задавал самые разные push route и iroute
-----------------------------------------------------------------------------------------------------
Сейчас я слегка изменил конфиг сервера,думал может где то есть конфликт(Думаю не слишком принципиально) (опять же, всё проброшено по этим адресам)

dev-node "OpenVPN"
mode server

port 443
proto udp
dev tun

client-config-dir C:\\OpenVPN\\ccd

tls-server
tls-auth C:\\OpenVPN\\config\\fa.key 0

ca C:\\OpenVPN\\config\\server\\ca.crt
cert C:\\OpenVPN\\config\\server\\svchost.crt
key C:\\OpenVPN\\config\\server\\svchost.key
dh C:\\OpenVPN\\config\\server\\dh2048.pem

duplicate-cn

auth MD5

server 172.16.150.0 255.255.255.0
topology subnet

route 172.16.150.0 255.255.255.0
route 192.168.0.0 255.255.255.0
route-gateway 172.16.150.1

push "redirect-gateway def1 bypass-dhcp"
push "route 192.168.0.1 255.255.255.0"
push "route 192.168.0.0 255.255.255.0"
push "route 172.16.150.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

route-delay 10
route-method exe

keepalive 10 120
client-to-client

tun-mtu 1500
tun-mtu-extra 32
mssfix 0
comp-lzo

persist-key
persist-tun

cipher AES-128-CBC
verb 4
mute 20
sndbuf 0
rcvbuf 0
-----------------------------------------------------------------------------------------------
В результате данная фича изминений не принесла =(
-----------------------------------------------------------------------------------------------
Шлю route print с надеждой может вы подскажите решение задачи
Microsoft Windows [Version 10.0.17134.81]
(c) Корпорация Майкрософт (Microsoft Corporation), 2018. Все права защищены.

C:\Users\Сергей>route print
===========================================================================
Список интерфейсов
6...0a 00 27 00 00 06 ......VirtualBox Host-Only Ethernet Adapter
22...34 23 87 fc 08 79 ......Broadcom 802.11n Network Adapter
18...36 23 87 fc 08 79 ......Microsoft Wi-Fi Direct Virtual Adapter
11...36 23 87 fc 00 79 ......Microsoft Wi-Fi Direct Virtual Adapter #2
14...20 1a 06 a0 52 cb ......Qualcomm Atheros AR8172/8176/8178 PCI-E Fast Ethernet Controller (NDIS 6.30)
19...00 00 db 34 92 1b ......Evolve Virtual Ethernet Adapter
21...00 ff c8 cb 27 bb ......TAP-Windows Adapter V9
10...34 23 87 fc 08 7a ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
===========================================================================

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.109 35
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
172.16.150.0 255.255.255.0 On-link 172.16.150.1 291
172.16.150.1 255.255.255.255 On-link 172.16.150.1 291
172.16.150.255 255.255.255.255 On-link 172.16.150.1 291
192.168.0.0 255.255.255.0 On-link 192.168.0.109 291
192.168.0.0 255.255.255.0 On-link 172.16.150.1 36
192.168.0.109 255.255.255.255 On-link 192.168.0.109 291
192.168.0.255 255.255.255.255 On-link 192.168.0.109 291
192.168.0.255 255.255.255.255 On-link 172.16.150.1 291
192.168.56.0 255.255.255.0 On-link 192.168.56.1 281
192.168.56.1 255.255.255.255 On-link 192.168.56.1 281
192.168.56.255 255.255.255.255 On-link 192.168.56.1 281
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.56.1 281
224.0.0.0 240.0.0.0 On-link 192.168.0.109 291
224.0.0.0 240.0.0.0 On-link 172.16.150.1 291
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.56.1 281
255.255.255.255 255.255.255.255 On-link 192.168.0.109 291
255.255.255.255 255.255.255.255 On-link 172.16.150.1 291
===========================================================================
Постоянные маршруты:
Сетевой адрес Маска Адрес шлюза Метрика
255.255.255.255 255.255.255.255 On-link 1
224.0.0.0 240.0.0.0 On-link 1
===========================================================================

--------------------------------------------------------------------------------------------------
Может быть поможет инфа, мой ПК это постоянный(зарезервированный ip)
192.168.0.109
--------------------------------------------------------------------------------------------------
Роутер
192.168.0.1
-------------------------------------------------------------------------------------------------
Клиентский route print(клиент на другом провайдере, также ОС Windows, не суть, т.к. с под моего андроида также есть потери)
Список интерфейсов
13...00 ff bf 37 1c d0 ......TAP-Win32 Adapter V9 (Tunngle)
29...00 ff 79 bb 9b c4 ......TAP-Windows Adapter V9
2...bc ae c5 5d d2 1a ......Realtek PCIe GBE Family Controller
9...00 00 63 b3 8b 74 ......Evolve Virtual Ethernet Adapter
1...........................Software Loopback Interface 1
3...00 00 00 00 00 00 00 e0 Microsoft Teredo Tunneling Adapter
===========================================================================

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.111 25
0.0.0.0 128.0.0.0 172.16.150.1 172.16.150.3 3
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
128.0.0.0 128.0.0.0 172.16.150.1 172.16.150.3 3
172.16.150.0 255.255.255.0 On-link 172.16.150.3 259
172.16.150.0 255.255.255.0 172.16.150.1 172.16.150.3 3
172.16.150.3 255.255.255.255 On-link 172.16.150.3 259
172.16.150.255 255.255.255.255 On-link 172.16.150.3 259
192.168.0.0 255.255.255.0 172.16.150.1 172.16.150.3 3
192.168.1.0 255.255.255.0 On-link 192.168.1.111 281
192.168.1.111 255.255.255.255 On-link 192.168.1.111 281
192.168.1.255 255.255.255.255 On-link 192.168.1.111 281
195.214.223.155 255.255.255.255 192.168.1.1 192.168.1.111 25
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.1.111 281
224.0.0.0 240.0.0.0 On-link 172.16.150.3 259
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.1.111 281
255.255.255.255 255.255.255.255 On-link 172.16.150.3 259
===========================================================================
Постоянные маршруты:
Сетевой адрес Маска Адрес шлюза Метрика
255.255.255.255 255.255.255.255 On-link 1
224.0.0.0 240.0.0.0 On-link 1
===================================================

Сергей

Не работает скрипт..прошу помощи! По первой и второй команде:
Системе не удается найти указанный путь. Вроде поправляли, посмотрите пожалуйста еще)

barn4k

Приветствую!
Сам скрипт покажите. Ту часть, что не работает.

Sergey

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl-1.0.0.cnf
Can't open "C:\OpenVPN"\certs/ca.key for reading, Invalid argument
4532:error:0200107B:system library:fopen:Unknown error:crypto/bio/bss_file.c:74:fopen('"C:\OpenVPN"\certs/ca.key','r')
4532:error:2006D002:BIO routines:BIO_new_file:system lib:crypto/bio/bss_file.c:83:
unable to load CA private key
Не удается найти C:\OpenVPN\certs\*.old

Sergey

Я не пойму, где путь не правильный. openssl вроде нормальный, подскажите пожалуйста.

Сергей

Добрый день! Помогите пожалуйста с конфигурацией:
mode server
port 2035
proto tcp
dev tun
dev-node "OpenVPN"
dh C:\\OpenVPN\\certs\\dh1024.pem
ca C:\\OpenVPN\\certs\\ca.crt
cert C:\\OpenVPN\\certs\\ServerVPN.crt
key C:\\OpenVPN\\certs\\ServerVPN.key # This file should be kept secret
client-config-dir
server 10.10.20.0 255.255.255.0
push "route 10.10.20.0 255.255.255.0"
keepalive 10 120
cipher AES-128-CBC # AES
comp-lzo
max-clients 10
status openvpn-status.log
verb 4
mute 20
sndbuf 0
rcvbuf 0

ЛОГ:

Thu Aug 23 09:51:09 2018 us=248845 NOTE: --mute triggered...
Thu Aug 23 09:51:09 2018 us=248845 278 variation(s) on previous 20 message(s) suppressed by --mute
Thu Aug 23 09:51:09 2018 us=248845 OpenVPN 2.4.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Apr 26 2018
Thu Aug 23 09:51:09 2018 us=248845 Windows version 6.2 (Windows 8 or greater) 64bit
Thu Aug 23 09:51:09 2018 us=248845 library versions: OpenSSL 1.1.0h 27 Mar 2018, LZO 2.10
Thu Aug 23 09:51:09 2018 us=264471 NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.
Thu Aug 23 09:51:09 2018 us=264471 Diffie-Hellman initialized with 1024 bit key
Thu Aug 23 09:51:09 2018 us=264471 TLS-Auth MTU parms [ L:1624 D:1210 EF:40 EB:0 ET:0 EL:3 ]
Thu Aug 23 09:51:09 2018 us=264471 interactive service msg_channel=0
Thu Aug 23 09:51:09 2018 us=280095 ROUTE_GATEWAY 192.168.1.1/255.255.255.0 I=11 HWADDR=00:0b:ca:55:87:ef
Thu Aug 23 09:51:09 2018 us=280095 open_tun
Thu Aug 23 09:51:09 2018 us=280095 TAP-WIN32 device [OpenVPN] opened: \\.\Global\{5D0CE514-17C1-4A6F-9F41-F8172CCDCEA7}.tap
Thu Aug 23 09:51:09 2018 us=280095 TAP-Windows Driver Version 9.21
Thu Aug 23 09:51:09 2018 us=280095 TAP-Windows MTU=1500
Thu Aug 23 09:51:10 2018 us=295768 NETSH: C:\Windows\system32\netsh.exe interface ip set address OpenVPN dhcp
Thu Aug 23 09:51:10 2018 us=577035 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.10.20.1/255.255.255.252 on interface {5D0CE514-17C1-4A6F-9F41-F8172CCDCEA7} [DHCP-serv: 10.10.20.2, lease-time: 31536000]
Thu Aug 23 09:51:10 2018 us=577035 Sleeping for 10 seconds...
Thu Aug 23 09:51:20 2018 us=593138 Successful ARP Flush on interface [6] {5D0CE514-17C1-4A6F-9F41-F8172CCDCEA7}
Thu Aug 23 09:51:20 2018 us=593138 do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Thu Aug 23 09:51:20 2018 us=593138 C:\Windows\system32\route.exe ADD 10.10.20.0 MASK 255.255.255.0 10.10.20.2
Thu Aug 23 09:51:20 2018 us=593138 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=35 and dwForwardType=4
Thu Aug 23 09:51:20 2018 us=593138 Route addition via IPAPI succeeded [adaptive]
Thu Aug 23 09:51:20 2018 us=593138 Data Channel MTU parms [ L:1624 D:1450 EF:124 EB:406 ET:0 EL:3 ]
Thu Aug 23 09:51:20 2018 us=593138 Could not determine IPv4/IPv6 protocol. Using AF_INET6
Thu Aug 23 09:51:20 2018 us=593138 Socket Buffers: R=[65536->65536] S=[65536->65536]
Thu Aug 23 09:51:20 2018 us=593138 setsockopt(IPV6_V6ONLY=0)
Thu Aug 23 09:51:20 2018 us=593138 Listening for incoming TCP connection on [AF_INET6][undef]:2035
Thu Aug 23 09:51:20 2018 us=593138 TCPv6_SERVER link local (bound): [AF_INET6][undef]:2035
Thu Aug 23 09:51:20 2018 us=593138 TCPv6_SERVER link remote: [AF_UNSPEC]
Thu Aug 23 09:51:20 2018 us=593138 MULTI: multi_init called, r=256 v=256
Thu Aug 23 09:51:20 2018 us=593138 IFCONFIG POOL: base=10.10.20.4 size=62, ipv6=0
Thu Aug 23 09:51:20 2018 us=593138 MULTI: TCP INIT maxclients=10 maxevents=14
Thu Aug 23 09:51:20 2018 us=593138 Initialization Sequence Completed

При подключение выходят две ошибки:
NOTE: your local LAN uses the extremely common subnet address 192.168.0.x or 192.168.1.x. Be aware that this might create routing conflicts if you connect to the VPN server from public locations such as internet cafes that use the same subnet.

Greaate FileFailed on TAP device \\.\Global\5D............

Сергей

Нашел в чем проблема была, нужно было выключить службу.

Сергей

Добрый день! Хотелось бы немного уточнить по поводу конфига сервера и клиента:
В инструкции нет ta ключа, TLS нужен или нет?
И второй, задача связать несколько офисов в одну сеть,чтоб клиенты могли между собой передавать данные через расшаренные папки, подойдут ли настройки из данной стать???

Алекс

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