Создание домашней сети на базе устройств MikroTik: Часть 4 — Создание OpenVPN туннеля

Продолжение предыдущих статей по организации единой локальной сети.
В предыдущих статьях мы с Вами настроили два наших роутера — это hAP ac и hEX
Создание домашней сети на базе устройств MikroTik: Часть 1
Создание домашней сети на базе устройств MikroTik: Часть 2 — Настройка hAP ac
Создание домашней сети на базе устройств MikroTik: Часть 3 — Настройка RB750gr3 hEX
Создание домашней сети на базе устройств MikroTik: Часть 4 — Создание OpenVPN туннеля (Вы тут)
Создание домашней сети на базе устройств MikroTik: Часть 5 — Создание EoIP туннеля
Создание домашней сети на базе устройств MikroTik: Часть 6 — Firewall защита доступа
Создание домашней сети на базе устройств MikroTik: Часть 7 — Firewall правильное перенаправление портов в сети с двумя шлюзами
Создание домашней сети на базе устройств MikroTik: Часть 8 — Установка и настройка MikroTik DUDE Network Monitor

В данной статье мы создадим защищенный туннельный интерфейс на базе OpenVPN.
Почему OpenVPN спросите Вы, ведь есть же PPTP, L2TP.
Отвечаю, я тестировал соединения на базе этих двух протоколов. К сожалению они не показали достаточно стабильного соединения между собой. Происходили частые падения туннельных интерфейсов.
Возможно это было связано с какой-то прошивкой. Но это не столь важно. Важно то, что настроив один раз туннель на OpenVPN, я забыл про разрывы связи совсем и до сих пор все работает отлично.

Если Вы хотите изучить MikroTik, то это можно реализовать с помощью специального онлайн-курса "Настройка оборудования MikroTik". В курсе изучаются все темы из официальной программы MTCNA, а автором курса является официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто даже не держал его в руках. В состав курса входят 162 видеоурока, 45 лабораторных работ и вопросы для самопроверки с конспектом. Кстати я получал сертификат MTCNA именно тут!

Прежде чем настраивать OpenVPN сервер и создавать туннель, разберемся с тем, как он работает на Mikrotik. Т.к. на RouterOS v6 есть ограничения.
Обратимся к официальному источнику — Wiki Mikrotik(Eng) и Manual Interface(Eng).
В OpenVPN используются два типа интерфейса:
tun — в RoS он определяется, как ip, это туннельный уровень.
tap — в RoS он определяется, как ethernet, это канальный уровень.
Только начиная с прошивки 6.39.x была добавлена топология subnet для tun режима.
Выдержка из Changelog:
*) ovpn — added support for «push-continuation»;
*) ovpn — added support for topology subnet for IP mode;
*) ovpn — fixed duplicate default gateway presence when receiving extra routes;
*) ovpn — improved performance when receiving too many options;

Не поддерживается в 6 версии операционной системы:
UDP протокол, т.е. необходимо использовать исключительно TCP!
LZO сжатие
TLS аутентификация
Аутентификация без имени пользователя и пароля
Если Вы будете читать эту статью, и уже будет доступна 7 версия RouterOS, то в ней, все это, уже должно работать (но это не точно)!

К сожалению сложно сказать, почему Mikrotik пришли именно к такому решению и именно таким ограничениям, но мы имеем то, что имеем.
По ТСР, сервер в типичном случае будет получать ТСР-сегменты OpenVPN, которые содержат другие ТСР-сегменты от клиента. В результате в цепи получается двойная проверка на целостность информации, что совершенно не имеет смысла, т.к. надежность не повышается, а скорости соединения и пинга снижаются.
UDP конечно предпочтительней, но его нет…

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

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

Для создания туннеля, нам понадобятся сертификаты и ключи к ним. Данные сертификаты можно создать, как на Windows, Linux, так и на самом роутере.
Я сторонник создания сертификатов на своем ПК, чтобы они были у меня в файлах и я мог их достать в случаях «А вдруг что».

1. Создание сертификатов для OpenVPN соединения
Я буду создавать сертификаты на операционной системе Windows, для всех остальных ОС принцип похож. Можно загуглить.
Для начала необходимо скачать и установить дистрибутив OpenVPN: Страница Загрузок OpenVPN
Запускаем установщик openvpn-install
Если Вы не собираетесь использовать все возможности туннелирования на своей Windows машине и Вам нужно исключительно создать сертификаты, то можно снять галки с пунктов TAP Virtual Ethernet Adapter и OpenVPN GUI.

openvpn-install
Выбираем нужные пункты
После скачивания и установки в указанную Вами папку в ней будет список файлов. у меня это папка C:\Program Files\OpenVPN\
Нам необходимо перейти в папку easy-rsa
Нужно открыть консоль Windows (для Windows Vista/7/8/8.1/10 нужно запускать от Администратора)
Переходим в папку easy-rsa по пути установки командой cd
Например:
cd C:\Program Files\OpenVPN\easy-rsa

Запускаем файл init-config.bat
C:\Program Files\OpenVPN\easy-rsa>init-config.bat
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
Скопировано файлов: 1.

В папке появится файл vars.bat, открываем его текстовым редактором, нас интересуют строчки в самом конце, их нужно заполнить
Я подставил свои параметры, у Вас данные параметры будут другие:
set KEY_COUNTRY=RU
set KEY_PROVINCE=Moscow
set KEY_CITY=Moscow
set KEY_ORG=HOME
set KEY_EMAIL=my@email.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=HOME
set PKCS11_MODULE_PATH=server
set PKCS11_PIN=12345

Там где написано server, не трогаем. Сохраняем файл.

Далее открываем редактором файл openssl-1.0.0.cnf
Находим строчку default_days 365 и заменяем число 365 на 3650 или свое. Тем самым мы увеличим время жизни наших сертификатов на 10 лет.
Сохраняем и закрываем.

Дополнительно:
Если Вы тот еще параноик, то Вы можете отредактировать еще один параметр:
set KEY_SIZE=1024
Для пущей сложности данный параметр можно изменить на 2048 и на 4096(для современных версий OpenVPN)
Но будьте готовы к долгому ожиданию(на слабых ПК очень долгому), пока сгенерируется ключ.

Пишем в консоль команды
vars
clean-all

В ответ должно прийти
Скопировано файлов: 1.
Скопировано файлов: 1.

Создаем ключ Диффи-Хеллмана
build-dh
Вывод из консоли:
C:\Program Files\OpenVPN\easy-rsa>build-dh
WARNING: can't open config file: /etc/ssl/openssl.cnf
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..........+.........

Известные проблемы:
При подаче команды clean-all или build-dh в самом начале генерации сертификатов, может проявится одна ошибка, выглядит она так:
C:\Users\TEST>build-dh
"openssl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Бороться с этим необходимо следующим образом. Нужно указать путь до файла openssl.exe в файле vars.bat в ручную.
А точнее стираем слово rem в строке (rem — это комментирование строки):
rem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"
Получаем:
set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"
Сохраняем файл и производим весь процесс сначала
vars
clean-all
build….. и т.д

Создаем основной сертификат
build-ca

При генерации основного сертификата в консоли будут отображаться вопросы. Просто нажимаем Enter, т.к. все эти параметры мы ввели в файле vars.bat
Нажимаем Enter до тех пор, пока не отобразиться строка приглашения
C:\Program Files\OpenVPN\easy-rsa

Далее создаем сертификат сервера и его ключ:
build-key-server server

На вопросы так же нажимаем Enter, но не торопимся, в самом конце будет задано два вопроса
Sign the certificate?
1 out of 1 certificate requests certified, commit?

На оба эти вопроса отвечаем Y
Вывод из консоли:
Certificate is to be certified until Oct 16 07:03:55 2027 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-key client

Также не торопимся с ответами, как только увидим строку «Common Name (eg, your name or your server’s hostname)» нужно ответить client
В самом конце также будут два вопроса, отвечаем также Y
Причем: для каждого клиента, нужно будет создать отдельные ключи и называть их по разному, например client1, client2 или как-то иначе, все зависит от Вашего воображения. Также не забывайте вводить эти имена при запросе Common Name
Вывод из консоли:
C:\Program Files\OpenVPN\easy-rsa>build-key client
WARNING: can't open config file: /etc/ssl/openssl.cnf
Generating a 1024 bit RSA private key
............++++++
.............................................................................++++++
writing new private key to 'keys\client.key'
-----
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.
-----
Country Name (2 letter code) [RU]:
State or Province Name (full name) [Moscow]:
Locality Name (eg, city) [Moscow]:
Organization Name (eg, company) [Home]:
Organizational Unit Name (eg, section) [Home]:
Common Name (eg, your name or your server's hostname) [server]:client
Name [server]:client
Email Address [my@email.ru]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
WARNING: can't open config file: /etc/ssl/openssl.cnf
Using configuration from openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'RU'
stateOrProvinceName :PRINTABLE:'Moscow'
localityName :PRINTABLE:'Moscow'
organizationName :PRINTABLE:'Home'
organizationalUnitName:PRINTABLE:'Home'
commonName :PRINTABLE:'client'
name :PRINTABLE:'client'
emailAddress :IA5STRING:'my@email.ru'
Certificate is to be certified until Oct 16 07:16:56 2027 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-key client1
build-key office1

На этом создание файлов сертификатов и ключей завершено.
Все файлы будут лежать в папке C:\Program Files\OpenVPN\easy-rsa\keys\

dir-sert-keys
Примерной такой список файлов должен получиться у Вас

2. Настройка OpenVPN сервера и интерфейса туннеля на hAP ac
Переходим к созданию туннеля на роутере hAP ac
Необходимо загрузить сертификат сервера, ключ сервера и основной сертификат в роутер. Файлы:
ca.crt
server.crt
server.key

Открываем раздел Files и переносим туда наши файлы. (Или используем FTP)

hap-file-certkey
Загруженные файлы сертификатов и ключа
Теперь нам необходимо импортировать данные сертификаты в RouterOS, чтобы она могла ими оперировать.
system-cert
Меню сертификатов
Импортируем наши сертификаты и ключи
import-certkey
Выбираем нужные сертификаты и ключ и импортируем их
Консольно:
/certificate import file-name=ca.crt passphrase=""
/certificate import file-name=server.crt passphrase=""
/certificate import file-name=server.key passphrase=""

Займемся настройкой OpenVPN. переходим в меню PPP

ppp
Меню PPP
ppp-profiles
Добавляем новый профиль для нашего туннеля
Нам необходимо выделить IP адреса, которые мы будем использовать для туннельных интерфейсов.
Я выбрал подсеть 172.16.10.0/24 соответственно сервер будет иметь адрес 172.16.10.1, а клиенты далее по маске. 2,3,4 и т.д.
new-ppp-profile
Заполняем необходимые параметры профиля
new-ppp-profile-2
Заполняем оставшиеся параметры профиля
Консольно:
/ppp profile add name=ovpn-server local-address=172.16.10.1 change-tcp-mss=yes use-upnp=no use-mpls=yes use-compression=no use-encryption=yes only-one=default

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

ppp-secrets
Открываем вкладку с записями данных авторизации
Т.к. у сервера IP 172.16.10.1 выдаем клиенту IP 172.16.10.2
new-ppp-secret
Добавляем нашего клиента
Консольно:
/ppp secret add name=client password=123456789 service=ovpn profile=ovpn-server remote-address=172.16.10.2

Теперь нужно включить саму службу OpenVPN

ppp-ovpn-server
Нажимаем кнопку для отображения параметров сервера
ppp-ovpn-enabled
Выполняем настройки сервера
Консольно:
/interface ovpn-server server set enabled=yes port=1194 mode=ip netmask=24 default-profile=ovpn-server certificate=server.crt_0 require-client-certificate=yes auth=sha1,md5 cipher=blowfish128,aes128,aes192,aes256

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

ppp-ovpn-server-binding
Биндим интерфейс
ppp-new-bind
Достаточно ввести имя клиента из PPP Secret и имя самого интерфейса
Консольно:
/interface ovpn-server add name=ovpn-inclient user=client

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

ip-firewall
Переходим в меню Firewall
ip-firewall-addnew
Добавляем новую запись
ip-firewall-newrule
Разрешаем входящий трафик на порту 1194 с интерфейса WAN
ip-firewall-newrule2
Само разрешение
Консольно:
/ip firewall filter add chain=input protocol=tcp dst-port=1194 in-interface=WAN action=accept comment="Accept OpenVPN Requests"

На этом настройка OpenVPN на роутере hAP ac завершена, переходим к роутеру hEX

3. Настройка OpenVPN клиента и интерфейса туннеля на hEX
На данном роутере нам необходимо проделать гораздо меньше операций для запуска клиента.
Помним, что создали сертификат клиента! Загружаем его в роутер и импортируем по аналогии с hAP ac.

hex-import-cert
Загружаем и импортируем сертификат и ключ клиента
Консольно:
/certificate import file-name=client.crt passphrase=""
/certificate import file-name=client.key passphrase=""

Создаем профиль для OpenVPN в меню PPP

ppp-ovpn-client-profile
Добавляем новый профиль
Консольно:
/ppp profile add name=ovpn-client change-tcp-mss=yes use-upnp=no use-mpls=yes use-compression=no use-encryption=yes

Добавляем интерфейс OpenVPN для подключения к OpenVPN серверу.
Как мы помним из первой части цикла статей, внешний IP адрес у нас 98.76.54.32

ovpn-client
Добавляем интерфейс клиента OpenVPN
new-ovpn-client
Задаем имя интерфейса
ppp-ovpn-clientnew
Заполняем параметры для подключения к серверу OpenVPN
Консольно:
/interface ovpn-client add name=ovpn-outclient connect-to=98.76.54.32 port=1194 mode=ip user=client password=123456789 profile=ovpn-client certificate=client.crt_0 auth=md5 cipher=blowfish128

Шифрование Вы можете выбрать любое, которое установили доступным для сервера.
После создания интерфейса туннель должен уже быть активен. В списке IP адресов Вы должны увидеть IP 172.16.10.2 полученный от OpenVPN сервера.
Также в статусе можно увидеть с какими параметрами подключен интерфейс.

ovpn-client-status
Признаки активного соединения

Вот мы и закончили создание OpenVPN туннеля между двумя роутерами hAP ac и hEX
Буду рад любым замечаниям или комментариям. Возможно Вы знаете, как сделать лучше!

P.S.
Аналогом данного решения может послужить вариант PPTP туннеля. А шифрование можно организовать в самом EoIP посредством IPsec

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

Продолжение:
Создание домашней сети на базе устройств MikroTik: Часть 5 — Создание EoIP туннеля

Список всех статей в хронологическом порядке: История статей

Поддержка блога
Если Вам не безразлична судьба блога или Вы просто хотите отблагодарить Автора за его труд, смело переходите на страницу Поддержки, там описана вся информация, по тому, как это сделать проще простого =)
Хочешь получать уведомления о выходе новых статей?
Loading
Если Вы хотите изучить MikroTik, то это можно реализовать с помощью специального онлайн-курса "Настройка оборудования MikroTik". В курсе изучаются все темы из официальной программы MTCNA, а автором курса является официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто даже не держал его в руках. В состав курса входят 162 видеоурока, 45 лабораторных работ и вопросы для самопроверки с конспектом. Кстати я получал сертификат MTCNA именно тут!
GregoryGost

Мир интересен, если вы достаточно любопытны!!!

Оцените автора
GREGORY GOST
Добавить комментарий

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

  1. Рамиль

    Инфа по генерации ключей OpenVpn похоже устарела

    Ответить
  2. Михаил

    Добрый день! Вопрос, возможно, немного не в тему. Настроил OpenVPN, работает уже где-то полгода. Клиенты цепляются, все хорошо. Тут появилась необходимость пробросить телефонию. Была в наличии пара телефонов Ggrandstream GXP1620, поддерживающие OpenVPN. Настроил, немного повозиться пришлось с сертификатом клиента, но все завелось. Телефон для шефа (домой) стоял у меня на прогонке с месяц. Все отлично работало. Пробовал из разных мест, работает стабильно. И вот отдаю шефу и на нем случился казус. Меньше суток проработал и его адрес попал блэклист. Стал разбираться, причину нашел, но вот что попутно случилось — его сертификат и сертификаты клиентов, которые не входили больше недели, перестали приниматься микротиком. Решение было найдено в перевыпуске сертификатов. Вопрос, в каком месте микротик определяет сертификат клиента? Т.е. еще вчера работает, а сегодня не прокатывает. Делаешь новый (перевыпускаешь) — все ок. Как-то такая нестабильность напрягает. В инете пока не нашел по этому поводу информацию, только решение, которое я и принял. Спасибо.

    Ответить
  3. Николай

    Здравствуйте. Вопрос о доступности сервисов из вне. Смысл такой. Есть два местоположения. И там, и там mikrotik. Одно назовём «Cервер» с внешним адресом 10.10.10.1 , второе»Клиент». На сервере локальная сеть 192.168.5.0/24, на клиенте 192.168.6.0/24. У каждого есть свой способ выхода в инет. Поднят VPN канал. Всё прекрасно работает. Все устройства доступны из обеих сетей. И там , и там стоят видеокамеры, по локалке всё смотрится. Но есть одна задача. Необходимо иметь возможность просмотра камер через внешний адрес сервера 10.10.10.1. С камерами сервера нет проблем, просто проброшены порты и все доступно. А вот с камерами клиента проблема. Порты на микротике сервера проброшены до портов камер в сети 192.168.6.0/24 (через VPN) , но ответа нет. Я понимаю, что это связано с подменой адреса получателя/отправителя в пакетах, но как решить эту проблему не знаю. Подскажите пожалуйста.

    Ответить
    1. GregoryGost автор

      Николай, здравствуйте!
      Вам необходимо настроить src-nat к тем правилам перенаправления, которые вы сделали.
      Проблема в том, что камера пытается отправить ответ не по VPN, а через свой шлюз провайдера из-за того, что в запросе src-address внешний, а не локальный. Соответственно у вас нет доступа.
      Посмотрите как это делать в статье: Создание домашней сети на базе устройств MikroTik: Часть 7 – Firewall правильное перенаправление портов в сети с двумя шлюзами

    2. Николай

      Блин. Я же читал эту статью. Спасибо огромное! Всё получилось.

  4. c0v0x

    «А шифрование можно организовать в самом EoIP посредством IPsec»
    Gregory, правильно ли я понимаю, что если в том же hEX S заявлена поддержка аппаратного шифрования IPsec, то туннель OpenVPN нужно строить без шифрования вообще, а туннель EoIP — с шифрованием IPsec?

    Ответить
    1. GregoryGost автор

      Как это ни странно, в теории, при отключении шифрования для OpenVPN и включении IPsec для EoIP все должно быть шикарно.
      Но на практике практически ничего не меняется. Я провел тесты и скорость оставалась практически идентичной и мне кажется все упирается в использовании OpenVPN-ом одного ядра, причем в hEX S четыре потока и задействуется именно один поток, второй не существенно, только на 0,2%

    2. c0v0x

      Хотите сказать, что на практике в отсутствии прироста скорости виноват OpenVPN? И что если бы EoIP строился без OpenVPN, то тогда наличие поддержки аппаратного шифрования IPsec вероятно дало бы прирост в скорости?

    3. GregoryGost автор

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

    4. GregoryGost автор

      Здравствуйте,
      После некоторых изысканий, могу рекомендовать небольшую хитрую схему!
      IPsec туннель, поверх него GRE туннель и поверх него EoIP (EoIP делать при необходимости сохранить топологию аналогичную моей)
      В этом случае аппаратное шифрование IPsec, позволило мне добиться скоростей на порядок выше, чем на EoIP поверх OpenVPN.

      Проверял через Bandwidth Test с роутера hEX S(тариф 500 Mbps) до роутера hEX(тариф 100 Mbps)
      UDP Random Data: Send=80 Mbps; Receive=60 Mbps;
      TCP Random Data: Send=27.6 Mbps; Receive=33.5 Mbps;

      Дополнительно проверил iperf3. Запустил сервер на хосте Proxmox, провод в роутер hEX S.
      Клиентом являлся ПК с Windows 10 подключенный через Wifi(PCE-AC68) к Asus RT-AC66U, а asus в свою очередь кабелем к роутеру hEX.
      iperf3-TCP: Send=84.6 Mbps; Receive=84.3 Mbps;

    5. c0v0x

      Добрый день! Спасибо за информацию. Ещё бы гайд подробный… 🙂

    6. GregoryGost автор

      В процессе 🙂

    7. GregoryGost автор

      Кстати, если хотите совсем просто, то L2TP/IPsec может выдать аналогичные характеристики. И IPsec будет аппаратно обрабатываться.
      GRE туннель будет не нужен.
      Единственное, нужно выставить правильно MTU для L2TP туннелей.
      Базовое значение MTU для L2TP: 1450
      Отсюда: 1450 — 48 Байт(ESP+AH) — 20 байт(IP) — 8 байт(UDP) — 12 байт(L2TP) = 1362
      Я выставил 1360 для L2TP, а EoIP с включенным Clamp TCP MSS работает сам.

      Почему по дефолту у PPTP и L2TP 1450?
      Базовый MTU 1500 — 20 байт(IP) — 16 байт(GRE-PPP) — 4 байт(PPP) — 10 байт(Encryption)

    8. c0v0x

      «Кстати, если хотите совсем просто, то L2TP/IPsec может выдать аналогичные характеристики. И IPsec будет аппаратно обрабатываться.
      GRE туннель будет не нужен.» — Даже если на одной стороне «серый» IP?

      «Единственное, нужно выставить правильно MTU для L2TP туннелей.
      Базовое значение MTU для L2TP: 1450» — А если с одной стороны (где «серый» IP) соединение через PPPoE с MTU 1480, то как нужно выставлять?

    9. GregoryGost автор

      Даже если на одной стороне “серый” IP?

      Даже если на одной стороне серый IP.
      У меня головной роутер с Белым IP, а второй роутер сидит за NAT провайдера и получает серый IP и IPsec шифруется аппаратно.
      После установки соединения это можно посмотреть в IPsec -> Installed SAs. Открываете любой SA и смотрите статус в самом низу. Должно быть [ ESP | Hardware AEAD | mature ]

      А если с одной стороны (где “серый” IP) соединение через PPPoE с MTU 1480, то как нужно выставлять?

      Зависит от того, включено ли у вас автоматическое создание Mangle правил.
      Если да, то нужно будет настраивать все это в ручную.
      В целом можно пойти по простому. Получается, что у вас на пути есть дополнительные заголовки. Т.е. исходным MTU будет не 1500, а 1480. Значит можно у моих 1360 отнять 20(получается так 1500-1480), получим 1340.
      Проверяется все это через Tool-Ping, выставлением размера пакета и флага DF

  5. Александр

    Gregory, спасибо за совет, но параметр был выключен.
    Где то накосячил с настройками, на клиенте, тк клиент на микроте совсем перестал поднимать тунель, на вин. по прежнему работает.
    Еще раз большое спасибо за совет. Буду копать дальше:)

    Ответить
    1. GregoryGost автор

      Тогда, да, смотрите настройки.
      Интересно чем дело закончится 🙂

  6. Александр

    Gregory, добрый день!
    Спасибо за хорошую и информативную статью.
    Хотел задать очень тривиальный вопрос, но совсем не очевидный для меня.
    Знакомство с microtic и open vpn начал пару дней назад.
    Тоннель успешно построил, но в роли шлюза на выходе получил микротик с сервером, а необходимы тонель для внутрянки, а внешка у каждого своя.
    В случае с microtic -server, а клиент Win ОС все понятно (через конфигурацию на ПК клиента), а как заставить микротик клиент ходить через свою внешку не понимаю. Не могли бы подсказать, в какую сторону копать? Буду очень благодарен за ответ.

    Ответить
    1. GregoryGost автор

      Александр, здравствуйте!
      Попробуйте отключить создание маршрута по умолчанию. (уберите галку Add Default Route у клиентского подключения)
      Если я вас правильно понял именно это у вас и происходит, соответственно все клиенты пытаются выходить в интернет, через маршрут(0.0.0.0/0) созданный вашим ovpn клиентом.

  7. Harlan

    «К сожалению сложно сказать, почему Mikrotik пришли именно к такому решению и именно таким ограничениям, но мы имеем то, что имеем.»
    Могу сказать, что таким решением подосрали (да простит меня модератор) они себе конкретно, так как поддержка Всего вышеперечисленного, для меня (и думаю, что не только для меня), — один из основополагающих (если не основной) фактор при выборе роутера. Семёрка, вроде вышла, но LZO в OVPN, как отсутствовал, так и отсутствует, но самое главное, что эта версия крайне нестабильная. а когда выйдет релиз (через три года или через пять) этого не знают даже в Микротике.
    Что касается конечных потребителей их поделок, то выбор, слава Богу, на рынке роутеров богатый — и TP-Link, И Keenetic и много кто ещё. А Mikrotik, при таком подходе, думаю, можно переименовать в Nekrotik.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Благодарю за честный комментарий 🙂

      Кстати по поводу LZO.
      Есть вот такое сообщение на официальном форуме MikroTik: forum.mikrotik.com
      Которое гласит:

      LZO is deprecated, so you should be asking for LZ4 instead

      Что действительно так: community.openvpn.net

      Deprecated in: OpenVPN v2.4

      В RouterOS v6.x — OpenVPN V2.1

      Соответственно я полагаю «Nekrotik» не будет использовать в 7 версии LZO, а будет поддерживать сжатие на основе LZ4, ибо UDP они туда уже добавили.
      Остается только ожидать выхода 7 в Stable, а лучше в long-term.

      Ну и так, для информации: Выхода 7 версии ждали давно и MikroTik это понимая форсил функции из 7 версии в 6 — это у них заняло еще больше времени на вывод 7 версии. И в итоге в 2019 году мы имеем первую презентацию 7 версии в России на MUM.
      Важно понимать подход к созданию и поддержке продукта подобного рода. Те же TP-Link, Keenetic, ASUS и др. не обладают единой операционной системой работающей от самого простого и старого устройства, до самого нового. А вы представьте сколько необходимо ресурсов учесть все нюансы и потом это поддерживать в продакшене.

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

      Но вот с чем был связан отказ в поддержке UDP в OpenVPN изначально… до сих пор загадка и ответ знают только «старожилы» или только сами сотрудники MikroTik

    2. Harlan

      Григорий, ещё раз здравствуйте.
      Было интересно прочитать ваш комментарий. Расскажу свою историю.
      Лет пять назад я выбирал домой роутер и «на попробовать» мне в руки попался роутер Mikrotik CRS125-24G-15-2HnD-IN. В конторе взяли этот роутер, чтобы заменить на него гейт собранный на платформе х86, а я решил покатать его дома. Первоначально я верещал от восторга, видя что и как на нём можно сделать. Но эйфория моментально прошла, когда я обнаружил, что встроенный OpenVPN не работает в UDP-моде, а у нас в конторе две сетки соеденены посредством OpenVPN. Сисадмин второй сети наотрез отказался переводить OpenVPN в TCP-режим, а когда узнал, что нет LZO, и TLS аутентификации на базе сертификатов, то его поддержало и начальство (начальство тоже разбирается в вопросе). Все мои аргументы а-ля «Mikrotik обещает, что со дня на день выйдет RouterOS 7, где всё это будет реализовано», легко разбились о «Ну, как выйдет, так посмотрим.»
      В результате, дома поселился Zyxel Keenetic II, который OpenVPN поднял после двух шелчков пальцами, Mikrotik поселился в шкафу, а сказку про RouterOS 7 мы слышим вот, уже, который год. Благо в этом году вышла крайне корявая и нестабильная Beta, в которой многие функции — «заглушки» (это признают сами сотрудники Mikrotik). Вот и возникает вопрос: а сколько ещё ждать, когда наступит обещанное «щястье»? Год? Три? Пять?
      Да. Согласен, что Router OS, типа, универсальна, но всегда ли это хорошо? Из всех функций, которые есть в RouterOS 6 мне нужно, от силы, 10%. Всё остальное — мёртвый груз, на разработку и поддержку которых ушли ресурсы и силы, которых не хватило на разработку и поддержку нужного мне функционала.
      Кроме того, за эти пять лет, которые я ждал выхода «семёрки», само железо устарело и, даже, получив long-term версию RouterOS 7 я вряд ли поставлю эту железку в свою сеть. Например, имея гигабитные порты, в режиме бридж я смог пропихнуть между двумя портами поток только в 120 Mbps. Дальше начались потери пакетов и прочие прелести. Получается, что как не крути, а каждые 5-7 лет, железяку нужно обновлять. Только, за это время TP-Link, Asus, Keenetic выпустят новое железо и новый функционал, а Mikrotik, в погоне за универсальностью, будут оставаться в режиме многолетнего ожидания.
      Извините, если был чересчур эмоционален.

    3. GregoryGost автор

      Приветствую!
      Действительно интересно читать подобные комментарии (в хорошем смысле)
      У каждого своя история и каждый по своему подходит к вопросу реализации тех или иных вещей 🙂

      Со своей стороны могу сказать так:
      Я ни в коем случае не защищаю MikroTik, в силу своих знаний и опыта я в состоянии прошить свой hAP ac на OpenWRT и реализовать на нем все, что душе будет угодно. И OpenVPN и торрент качалки и собственные пакеты написанные на bash,C/C++ и т.д. Я работал также со многими роутерами разных компаний, в том числе и Cisco (правда не очень углублялся)

      Так вот, на текущий момент MikroTik меня полностью устраивает в плане домашнего и офисного использования. Для меня есть одно не мало важное преимущество — это проприетарный тип интерфейса EoIP, туннель реализующий возможность пересылки Broadcast трафика, что необходимо для различных сервисов расположенных в разных местах. Может быть такое есть где-то еще, но мне это не известно, по крайней мере что-то подобное я видел в Cisco (но это не точно). И очень удобная утилита Winbox, с возможностью диагностики и настройки всех нужных функций. (долой cat /var/log/…) 🙂

      По поводу OpenVPN, я считаю для нормальной работы его необходимо разворачивать на нормальном хосте, виртуалка на Linux, WindowsServer, без разницы, главное чтобы было не на роутере.
      А все потому, что средствами роутера реализовать администрирование 5-10 клиентов не составит особого труда, но как только понадобиться корпоративный VPN и необходимость управлять 1000-10000 клиентами, понадобится включать на полную центр сертификации с возможностью отозвать сертификат. С роутером такое уже не прокатит.

      В общем, как я уже обозначил в начале — мы выбираем то, чем нам удобнее пользоваться в конкретный момент времени, реализуя конкретные задачи.
      Я прекрасно понимаю «батхерт» и «холивары» по поводу RouterOS и сдается мне, что MikroTik будет продолжать держать подобный курс. И эмоции по этому поводу — это нормально 🙂
      Можно лишь пожелать им удачи т.к. они выбрали очень не простой путь «универсальности», а универсальность, как известно с подвохом.

  8. Дмитрий

    А для работы OpenVPN нужен интернет?
    Я смоделировал сеть в GNS3, все сделал по инструкции, но почему то не подключается

    Ответить
    1. GregoryGost автор

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

    2. Дмитрий

      Здравствуйте
      Уже разобрался, небольшую ошибку сделал при настройке
      Все работает стабильно

  9. Никита

    Добрый день
    после настройки и генерации такая вот беда
    на микротике
    ovpn,debug,error,,,,,,,,,l2tp,info,,debug,,,critical,,,,,,,,,,,,,wa
    rning duplicate packet, dropping
    на стороне виндус клиента

    Wed Jul 31 11:38:57 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]92.XX.XXX.XXX:1194
    Wed Jul 31 11:38:57 2019 Socket Buffers: R=[65536->65536] S=[65536->65536]
    Wed Jul 31 11:38:57 2019 Attempting to establish TCP connection with [AF_INET]92.61.XX.XX:1194 [nonblock]
    Wed Jul 31 11:38:57 2019 MANAGEMENT: >STATE:1564562337,TCP_CONNECT,,,,,,
    Wed Jul 31 11:38:58 2019 TCP connection established with [AF_INET]92.XX.XX.XXX:1194
    Wed Jul 31 11:38:58 2019 TCP_CLIENT link local: (not bound)
    Wed Jul 31 11:38:58 2019 TCP_CLIENT link remote: [AF_INET]92.XXX.XXX.XXX:1194
    Wed Jul 31 11:38:58 2019 MANAGEMENT: >STATE:1564562338,WAIT,,,,,,
    Wed Jul 31 11:38:58 2019 MANAGEMENT: >STATE:1564562338,AUTH,,,,,,
    Wed Jul 31 11:38:58 2019 TLS: Initial packet from [AF_INET]92.XXX.XXX.XXX:1194, sid=07d3a5db 7530bf01
    Wed Jul 31 11:38:59 2019 VERIFY OK: depth=1, C=RU, ST=Saint-Petersburg, L=St Petersburg, O=IT, OU=changeme, CN=changeme, name=changeme, emailAddress=mail@host.domain
    Wed Jul 31 11:38:59 2019 VERIFY KU OK
    Wed Jul 31 11:38:59 2019 Validating certificate extended key usage
    Wed Jul 31 11:38:59 2019 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
    Wed Jul 31 11:38:59 2019 VERIFY EKU OK
    Wed Jul 31 11:38:59 2019 VERIFY OK: depth=0, C=RU, ST=Saint-Petersburg, L=St Petersburg, O=IT, OU=changeme, CN=mikrotik, name=nik, emailAddress=mail@host.domain
    Wed Jul 31 11:39:00 2019 Connection reset, restarting [0]
    Wed Jul 31 11:39:00 2019 SIGUSR1[soft,connection-reset] received, process restarting
    Wed Jul 31 11:39:00 2019 MANAGEMENT: >STATE:1564562340,RECONNECTING,connection-reset,,,,,
    Wed Jul 31 11:39:00 2019 Restart pause, 5 second(s)

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Это распространенная проблема. Дело в том, что в MikroTik RouterOS используется старое ядро и часть функционала OpenVPN ведет себя не так, как хочется.
      У меня удавалось запустить OpenVPN на Windows 7/10 с MikroTik RouterOS, но это было давно и ошибка
      ovpn,debug,error,,,,,,,,,l2tp,info,,debug,,,critical,,,,,,,,,,,,,warning duplicate packet, dropping
      никуда не девается, хотя соединение работало

      Вижу что много, кто пытается настроить OpenVPN с MikroTik, постараюсь написать отдельную статью по этой теме

  10. Иван

    вопрос по конфигу
    vars там есть параметр set PKCS11_PIN=1234
    насколько он обязателен , куда потом водить эти 1234 ? а можно без них ?

    как правильно оледенить и сделать один единый фаил .opvn в котором не ссылки на ключи будут а именно сами ключи и настройки ?

    Ответить
    1. GregoryGost автор

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

      «оледенить» можно вписывая ключи и сертификаты прямо в файл, это конечно увеличит его размер, но все будет в одном месте.
      Для этого нужно использовать обрамляющие теги ca /ca, а между ними сам код ключа или сертификата
      -----BEGIN CERTIFICATE-----
      MIIDyzCCAzSgAwIBAgIJAKRtpjsIvek1MA0GCSqGSIb3DQEBBQUAMIGgMQswCQYD
      VQQGEwJDSDEPMA0GA1UECBMGWnVyaWNoMQ8wDQYDVQQHEwZadXJpY2gxFDASBgNV
      +ogTneOl2w6P0xP6lyI6
      -----END CERTIFICATE-----

      Пример: https://paste.ubuntu.com/7231382/

  11. Alex_NOOK

    Как настроить клиента на Windows 10 для подключения к Mikrotik? Есть готовый client.ovpn?
    Использовал следующий
    client
    dev tap
    proto tcp
    remote 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert client.crt
    key client.key
    —auth-user-pass user-pwd.txt #файл с паролем
    remote-cert-tls server
    verb 3
    route-delay 5
    #Это маршрут до сети за микротиком (0.0 — сеть за микротиком, 100.1 — адрес микротика в ovpn)
    route 192.168.88.0 255.255.255.0 172.16.10.1
    #это если нужно будет, что бы микротик был шлюзом по умолчанию
    redirect-gateway def1

    На роутере ошибка
    ovpn,debug,error,,,,,,,,,l2tp,info,,debug,,,critical,,,,,,,,,,,,,warning duplicate packet, dropping

    Клиент OpenVPN Windows 10 в логах

    WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
    OpenSSL: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate
    TLS_ERROR: BIO read tls_read_plaintext error
    TLS Error: TLS object -> incoming plaintext read error
    TLS Error: TLS handshake failed
    Fatal TLS error (check_tls_errors_co), restarting

    Ответить
    1. Alex_NOOK

      IP в строке remote 1194 я опустил для поста.

    2. GregoryGost автор

      Здравствуйте,
      Это распространенная проблема. Дело в том, что в MikroTik RouterOS используется старое ядро и часть функционала OpenVPN ведет себя не так, как хочется.
      У меня удавалось запустить OpenVPN на Windows 7/10 с MikroTik RouterOS, но это было давно и ошибка
      ovpn,debug,error,,,,,,,,,l2tp,info,,debug,,,critical,,,,,,,,,,,,,warning duplicate packet, dropping
      никуда не девается, хотя соединение работало

      Вижу что много, кто пытается настроить OpenVPN с MikroTik, постараюсь написать отдельную статью по этой теме

  12. Александр

    Здравствуйте, пытаюсь подключить микротик к windows по ovpn . Иногда подключается:) . Но обычно после подключения на windows в виртуальном адаптере не прописывается ip адрес, а вместо него 169.254.0.0 . Сам микротик в этот момент пишет ovpn,debug,error,l2tp,critical и затем warning duplicate packet, dropping, не подскажите , что это может быть , но подключение происходит в 5-10% случаев….
    P.S. в интернете ничего нет, по поводу того , что виртуальный адаптер не может ip выдать:(

    Ответить
    1. Александр

      Помог сброс сокета сетевой карты и перезагрузка

  13. Николай

    Здравствуйте при создании основного сертификата выскакивает ошибка «Не удается найти C:\Program Files\OpenVPN\easy-rsa\keys\*.old». До этого момента всё нормально. В инете ответа не нашёл, хотя вопрос существует.

    Ответить
    1. GregoryGost автор

      Николай, здравствуйте
      Как-то раз я тоже с этим столкнулся.
      Попробуйте удалить все из папки keys. Потом проделайте процедуры vars и clean-all
      После этого уже можно пробовать создавать ключи.

      Надеюсь поможет

    2. Николай

      Спасибо! Всё получилось.

  14. Сергей

    стабильный канал это слишком легкая задача.
    у меня почти все клиенты висят на 4g модемах.
    хочу заметить что я не определил природу перидического отвала клиентов. но это точно не из-за модемов, так как отваливаюся клиенты и те и те. и бывает по 5-7 одновременно. Когда использовал в качестве сервера freebsd таких проблем не было, хотя и были другие.

    Ответить
    1. GregoryGost автор

      В любом случае интересно посмотреть на наличие разрывов при использовании Long-Term ветки.
      Также не забываем про настройки Firewall. Нужно убедиться, что канал ничто не блокирует.
      У меня у самого есть роутер с модемом 4G подключен к домашнему проводному роутеру и uptime соединения отличный

  15. Сергей

    Хорошо конечно буду ждать новую статью, но честно говоря думал есть какое нибудь решение. Например на клиенте уставить паузу до следующей попытки установить связь после её обрыва. Или на сервере отключить возможность создания DR серверов вообще.
    Я пытаюсь побороть данную проблему уже длительное время и так же обращался к помощи специалистов владеющих темой лучше меня.
    Это одна из самых серьезных невзгод для меня от микротик )))

    Ответить
    1. GregoryGost автор

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

  16. dimass

    Здравствуйте!

    Может кто сталкивался, сдалал все в точ по этой чудесной инструкции, все вроде ок, но почему-то сбрасывает, в логах понять не могу в чем же дело…

    Подскажите пожалуйста

    Mon Apr 08 10:32:54 2019 OpenVPN 2.4.7 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on Feb 21 2019
    Mon Apr 08 10:32:54 2019 Windows version 6.2 (Windows 8 or greater) 64bit
    Mon Apr 08 10:32:54 2019 library versions: OpenSSL 1.1.0j 20 Nov 2018, LZO 2.10
    Enter Management Password:
    Mon Apr 08 10:32:54 2019 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
    Mon Apr 08 10:32:54 2019 Need hold release from management interface, waiting...
    Mon Apr 08 10:32:55 2019 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
    Mon Apr 08 10:32:55 2019 MANAGEMENT: CMD 'state on'
    Mon Apr 08 10:32:55 2019 MANAGEMENT: CMD 'log all on'
    Mon Apr 08 10:32:55 2019 MANAGEMENT: CMD 'echo all on'
    Mon Apr 08 10:32:55 2019 MANAGEMENT: CMD 'bytecount 5'
    Mon Apr 08 10:32:55 2019 MANAGEMENT: CMD 'hold off'
    Mon Apr 08 10:32:55 2019 MANAGEMENT: CMD 'hold release'
    Mon Apr 08 10:32:55 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]109.108.94.235:1194
    Mon Apr 08 10:32:55 2019 Socket Buffers: R=[65536->65536] S=[65536->65536]
    Mon Apr 08 10:32:55 2019 Attempting to establish TCP connection with [AF_INET]109.108.94.235:1194 [nonblock]
    Mon Apr 08 10:32:55 2019 MANAGEMENT: >STATE:1554708775,TCP_CONNECT,,,,,,
    Mon Apr 08 10:32:56 2019 TCP connection established with [AF_INET]109.108.94.235:1194
    Mon Apr 08 10:32:56 2019 TCP_CLIENT link local: (not bound)
    Mon Apr 08 10:32:56 2019 TCP_CLIENT link remote: [AF_INET]109.108.94.235:1194
    Mon Apr 08 10:32:56 2019 MANAGEMENT: >STATE:1554708776,WAIT,,,,,,
    Mon Apr 08 10:32:56 2019 MANAGEMENT: >STATE:1554708776,AUTH,,,,,,
    Mon Apr 08 10:32:56 2019 TLS: Initial packet from [AF_INET]109.108.94.235:1194, sid=1bb7fc29 a55f071d
    Mon Apr 08 10:32:56 2019 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
    Mon Apr 08 10:32:57 2019 VERIFY OK: depth=1, C=UA, ST=CA, L=Kiev, O=OpenVPN, OU=dimass, CN=dimass\09, name=dimass, emailAddress=dima@stockhouse.in.ua
    Mon Apr 08 10:32:57 2019 VERIFY KU OK
    Mon Apr 08 10:32:57 2019 Validating certificate extended key usage
    Mon Apr 08 10:32:57 2019 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
    Mon Apr 08 10:32:57 2019 VERIFY EKU OK
    Mon Apr 08 10:32:57 2019 VERIFY OK: depth=0, C=UA, ST=CA, L=Kiev, O=OpenVPN, OU=dimass, CN=dimass\09, name=dimass, emailAddress=dima@stockhouse.in.ua
    Mon Apr 08 10:32:58 2019 Connection reset, restarting [0]
    Mon Apr 08 10:32:58 2019 SIGUSR1[soft,connection-reset] received, process restarting
    Mon Apr 08 10:32:58 2019 MANAGEMENT: >STATE:1554708778,RECONNECTING,connection-reset,,,,,
    Mon Apr 08 10:32:58 2019 Restart pause, 5 second(s)

    Ответить
  17. Игорь

    Здравствуйте,
    Сделал по Вашему мануалу, но интерфейс ovpn-outclient не устанавливает соединение.
    Сперва пишет Status: link establishes,
    Но уже через секунду пишет Status: terminating… peer disconnected.

    Лог на клиетском микротике:
    ovpn-outclient: initializing…
    ovpn-outclient: connecting…
    ovpn-outclient: terminating… — peer disconnected.
    ovpn-outclient: disconnected

    Лог на серверном микротике:
    TCP connection established from 195.238.92.76

    Посоветуйте, пожалуйста, что может быть не так.
    Спасибо!

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Рекомендую включить более детальный лог именно для OpenVPN
      /system logging add disabled=no topics=ovpn action=memory
      Далее смотрите, в чем конкретно ошибка.

  18. Шерзод

    добрый день,
    Создал сертификат и настроил серверный и клиентский часть как написано в сайте, все работает спасибо, но есть проблема соединения с VPN в не которых странах. Блокируется тип VPN: pptp, sstp, l2tp. Последний надежда был Open VPN, к сожалению там где я настроил ovpn данный момент выдает такую ошибку peer disconnected, хотя на тестовом площадке все работает. Попробовал порт VPN поменять не помогло. Пожалуйста, есть какой то решения с данного проблемы. Заранее благодарю за ответ.

    Ответить
    1. GregoryGost автор

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

  19. Николай

    Вот, спасибо, заработало сразу, а то я всё сам микротик мучал.

    Ответить
  20. Николай

    добавлю
    за микротиком сеть 192.168.10.0/24
    сеть OpenVPN 72.24.13.0/24
    OpenVPN сервер 72.24.13.1
    Win7 Получает 72.24.13.253

    где и как их объединять???

    Ответить
    1. GregoryGost автор

      Здравствуйте,

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

      Со стороны клиента на Win7 нужно добавить в файл конфигурации OpenVPN создание статического маршрута.
      route 192.168.10.0 255.255.255.0

  21. Николай

    Спасибо за подробные инструкции, уже второй раздел по которому я «готовлю».

    На микротике OpenVPN сервер поднял. На Win7 клиент установил, настроил, подключение проходит, IP адрес получает, к микротику по ip OpenVPN сервера, через winbox подключиться могу, (собственно и подключаюсь).
    Но сеть за микротиком не вижу (т.е. ни к чему кроме самого микротика, в той сети подключиться не могу).
    подсети естественно разные.

    Не подскажите, куда дальше копать, что бы подсети объединились? (я так понимаю объединять нужно сеть за микротиком и подсеть OpenVPN)

    два дня ковыряю и никак.

    Ответить
    1. Андрей

      тоже такая проблема, разные подсети не видит, указываю подсеть за роутером пропускает, такое чуство что нету проброса в «Софт бридж» который объединяет интерфейсы, а вот если бридж убрать и настроить по мастерпортам все работает

    2. GregoryGost автор

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

    3. Сергей

      Не могли бы вы указать, какую версию OpenVPN клиента используете «На Win7 клиент». И скинуть конфиг, несколько дней уже ковыряюсь не получается подружить клиент из под винды с Mikrotik сервером.

    4. GregoryGost автор

      Здравствуйте,
      Я не использую OpenVPN на PC и иных устройствах.
      У меня он используется только для соединения между Микротиками.
      Покажете конфигурацию, подскажу, что нужно поправить.

    5. Сергей

      Я надеялся что Николай мне поможет.
      От части решил проблему, клиент подключается, но сразу вылетает.
      на клиенте под виндой — Connection reset restarting [0]
      на микротике — duplicate packet, dropping.

      видел подобную проблему ниже, но решения так и не нашел…

    6. Dmitriy

      Не знаю читает человек что задал вопрос — у вас ПК с Win7 «не знает» о сетях за микротиком. Нужно указать вручную через CMD — route ADD 192.168.35.0 MASK 255.255.255.0 192.168.0.2 . Где 192.168.35.0 сеть за микротиком а 192.168.0.2 — Local адрес OpenVPN тунеля микротика. Один момент — маршрут активаен до перезагрузки ПК.

  22. Кирилл

    Спасибо за быстрый ответ.
    Все именно так, как вы говорите, провайдер выдает 2 IP. Но основной посыл именно в том, что, раз роутеры у одного провайдера, то не хочется 1.тратить инет (хоть и анлим), 2. идти длинным путем, а главное попадать на обрезку скорости трафика по тарифу. Поэтому высказал мысль про подключение по локальным ip провайдера.
    Велика вероятность, что у меня какие-то проблемы с правилами файрвола, буду разбираться.

    Ответить
    1. GregoryGost автор

      В начале не совсем понял схему соединения, теперь понятно.
      У вас два роутера в разных местах у одного провайдера и вроде бы локальная сеть также одного провайдера.
      Тут может крыться проблема блокировки провайдером на своем сетевом оборудовании различных портов или же недоступность различных хостовых подсетей (например у вашего роутера 10.10.10.125, а у другого роутера 10.10.15.125) нет маршрутов.
      Для начала рекомендую проверить есть ли пинг от одного роутера до другого (icmp может быть также заблокирован и пингов не будет, но это не значит, что нет доступа), или сразу поднять OpenVPN сервер на любом TCP порту отличном от стандартного 1194 (например 50500) и клиентским роутером попробовать подключиться.

      Тут Вам еще нужно будет посмотреть маршрут, куда уходит запрос. Если у Вас для PPPOE соединения маршрут стоит 0.0.0.0/0 то все запросы наружу могут идти через него.
      Можете попробовать сначала без PPPOE соединения.

  23. Кирилл

    День добрый. Спасибо за спасительный цикл статей.
    Давно готовился для реализации аналогичной идеи, оборудование установлено, но без вас бы не настроил.
    Возник вопрос, клиент не соединяется, отличие от вашей схемы это наличие интернета на порту wan через ppoe (и соответственно еще одного интерфейса), на обоих роутерах, НО, они у одного провайдера и в настройках сервера я указал wan и локальный адрес выдаваемый провайдером. Пусть трафик идет локальный (если они его не режут конечно).
    В логах плюется дисконнектами и примерно таким: rcvd P_ACK kid=0 sid=a43f6b67dd4c143 [3 sid=c41aa7c475dc3271] DATA len=0.
    Спасибо

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Рад, что Вам понравилось!

      Для PPPOE подключений на вашем роутере может быть два IP адреса от провайдера.
      Первый это локальный, а второй для выхода в интернет. Хоть это и не обязательно.
      И для подключения клиентов по VPN к вашему роутеру статический IP должен быть именно на интерфейсе PPPOE и именно он должен быть основным WAN интерфейсом (в Вашем случае два интерфейса должны быть как WAN и добавлены в interface list — Internet)
      По дисконнектам из лога не подскажу, единственное что из этой строки понятно, это отсутствие данных в запросе (DATA len=0)

    2. Dmitriy

      Клиент OpenVPN должен «висеть» на интерфейсе провайдера pppoe.

  24. Rob

    Hi,
    Thanks for your tutorial (or maybe I should call it course — because you have done awesome work).
    I don’t have static IP. Is there any chance that you will make another part about using ddns serviec such as NoIp?
    It would be very helpfull.

    Ответить
    1. GregoryGost автор

      Hi, Rob
      Thanks for your comment!
      I try to write about interesting ways to use routers and DDNS is one of the interesting topics.
      Of course, I plan to devote a separate article to this topic.
      It is a pity that I have not much time for my hobby.

  25. Максим

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

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      По Вашим данным сложно что-то понять. У меня нет понимания, как Вы настроили сеть, какие именно правила?
      Что проверяли? Что хотите получить в итоге?

  26. Hamsin

    Добрый день.

    Блестящая статья, спасибо. OpenVPN между двумя Микротиками настроил с первого раза.
    Теперь бы связку: сервер на Микротик, клиент на dd-wrt. 3 недели… с перерывами, конечно), но без всякого результата. Серификаты те же что и на Микротиках, сервере и клиенте. Проверил на клиенте Микротик, работает, выключил, вписал те же сертификат и ключ на dd-wrt. В логе сервера на Микротике красным цветом duplicate packet, dropping.
    На стороне клиента dd-wrt циклично происходит следующее:
    20181103 18:07:46 Restart pause 300 second(s)
    20181103 18:12:46 W WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
    20181103 18:12:46 W NOTE: the current —script-security setting may allow this configuration to call user-defined scripts
    20181103 18:12:46 I TCP/UDP: Preserving recently used remote address: [AF_INET]10.x.x.1:1194
    20181103 18:12:46 Socket Buffers: R=[43689->43689] S=[16384->16384]
    20181103 18:12:46 I Attempting to establish TCP connection with [AF_INET]10.x.x.1:1194 [nonblock]
    20181103 18:12:47 I TCP connection established with [AF_INET]10.x.x.1:1194
    20181103 18:12:47 I TCPv4_CLIENT link local: (not bound)
    20181103 18:12:47 I TCPv4_CLIENT link remote: [AF_INET]10.x.x.1:1194
    20181103 18:12:47 TLS: Initial packet from [AF_INET]10.x.x.1:1194 sid=fa1e627a b9b4b78d
    20181103 18:13:17 N Connection reset restarting [0]
    20181103 18:13:17 I SIGUSR1[soft connection-reset] received process restarting
    20181103 18:13:17 Restart pause 300 second(s)

    Все это в локальной сети тестируется, где разрешено все, так что это точно не вопрос firewall. В настройках клиента на dd-wrt выставлено Tunnel Protocol TCP, LZO Compression Disabled.
    В логе клиента настораживает строка
    20181103 18:12:47 TLS: Initial packet from [AF_INET]10.x.x.1:1194 sid=fa1e627a b9b4b78d
    на предмет упоминания TLS. Не в этом ли дело? Настройки TLS/SSL в вебинтерфейсе dd-wrt нет.

    Был бы весьма признателен за любую помощь, советом или ссылками.

    Ответить
    1. GregoryGost автор

      Здравствуйте,

      Это давняя проблема микротиков, это можно наблюдать с windows и linux клиентами
      Касательно dd-wrt — OpenVPN на микротиках не умеет работать только с сертификатами, обязательно должен быть логин и пароль, а dd-wrt я не видел таких пунктов в web
      Выхода на данный момент два, искать возможность ручной правки конфига oprnvpn в dd-wrt либо перейти на что-то без nvram вроде OpenWRT

      Вообще нюансов в работе сторонних, не микротик клиентах, хватает. Ядро уже далеко не новое и часть существенных ограничений в протоколах. Обещают в 7 версии новое ядро и нормальный openvpn

      У меня к сожалению нет оборудования на dd-wrt для проведения тестирования. Но это было бы интересно изучить и возможно написать большую статью по работе различных клиентских систем с микротиками

  27. Юрий

    Как сделать client-to-client на микротике, чтобы сеть между подключенными опенвпн клиентами была 172.16.10.2 — 172.16.10.20 чтобы они видели друг друга

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      В принципе достаточно будет использовать обозначенный Вами pool ip адресов для OpenVPN сервера
      Тогда клиенты будут получать IP только из этого диапазона. Дополнительно можно выбрать маски подсетей /28 или /27, но тут есть подвох, максимальное кол-во адресов тогда будет 16 и 32 соответственно.

  28. Евгений

    Спасибо за статью! Как пожелание напишите пожалуйста статью как заворачивать только определенный трафик на vpn (например для получения доступа к заблокированным сайтам или для нормальной работы телеграмма) если это реально напишите пожалуйста мне на почту, было бы интересно обсудить.
    А еще интересна настройка capsman на свежих версиях ROS, сегодня настраивал, вроде все работает, но есть некоторые странные моменты..

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Благодарю за лестный отзыв.

      Внесу некоторую ясность в свой блог. Касательно «для получения доступа к заблокированным сайтам»
      Вы же понимаете что это не законно с юридической точки зрения. А я стараюсь её придерживаться. Именно поэтому каких либо обходов текущих постановлений у меня не планируется.
      Но это не точно 🙂
      Как будет время напишу Вам. Что-то возможно завернуть, что-то со сложностями.

      С вопросом по CAPsMAN, уточните какие странные моменты Вас беспокоят?
      У меня был некоторый опыт в работе с ним.

  29. Максим

    [admin@MikroTik_Pushkarev] > /certificate import file-name=server.crt passphrase=»»
    certificates-imported: 1
    private-keys-imported: 0
    files-imported: 1
    decryption-failures: 0
    keys-with-no-certificate: 0

    [admin@MikroTik_Pushkarev] > /certificate import file-name=server.key passphrase=»»
    certificates-imported: 0
    private-keys-imported: 1
    files-imported: 1
    decryption-failures: 0
    keys-with-no-certificate: 0

    [admin@MikroTik_Pushkarev] > /certificate import file-name=ca.crt passphrase=»»
    input does not match any value of file-name
    [admin@MikroTik_Pushkarev] > /certificate import file-name=server.crt passphrase=»»
    certificates-imported: 0
    private-keys-imported: 0
    files-imported: 0
    decryption-failures: 0
    keys-with-no-certificate: 0

    server.crt не импортируется правильно?

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Уточните что и для чего делаете? Немного не понял вопроса.
      server.crt и server.key импортируются для роутера, который выступает точкой для подключения со статическим IP

    2. Максим

      Здравствуйте, Gregory. Прошу прощения что не смог выразить суть проблемы. Еще такой вопрос, что значит параметр
      passphrase=»».

    3. GregoryGost автор

      Здравствуйте,
      passphrase — Ключевая фраза
      При импорте и экспорте сертификатов (и не только их) позволяет ввести дополнительную переменную для их шифровки.
      Т.е. если вы используете свою ключевую фразу при импорте, то её же нужно будет использовать при экспорте этих сертификатов.
      Это полезно например, если к устройству есть доступ не только у Вас (несколько админов). Или при компрометации учетной записи позволит защитить ключи от несанкционированной выгрузки.
      Так что это просто доп. функционал защиты.

  30. Яков

    С подключением из ОС к Микротику по OpenVPN у меня все получилось, но вылезла другая проблема. Не могу никак подключится к устройствам, которые стоят во внутренней сети роутера. Может подскажите в какую сторону копать? Маршруты и так и этак кручу, но сделать ничего не получается. Спасибо!

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Опишите, какие IP получает Ваш ПК по OpenVPN и какая подсеть за роутером?
      Как пробуете подключиться к другим устройствам? Что именно делаете и что не получается?

  31. Яков

    Огромное спасибо за статью!
    Очень большая просьба: можете пояснить как подключаться к роутеру через клиенты на Windows и Linux? Как я не пытался — не смог сконфигурировать нужный файл для подключения.

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Спасибо за Ваш отзыв, очень приятно.
      Да, я обязательно опишу подключения с различных ОС и девайсов к OpenVPN микротика. Там есть ряд нюансов. Это тема для целой статьи. Боюсь в рамках ответа на комментарий, рассказать все не получится. Но это здорово, что Вы спрашиваете. Быстрее сяду за статью =)

  32. Иоанн

    Добрый день.
    Настраивал всё по статье, но почему то тоннель падает сразу после подключения
    На сервере появляется ip 172.16.10.2 и сразу исчезает
    Причём он пишет и ip и сеть 172.16.10.2. Почему сеть не 172.16.10.0?
    Клиент пишет: no ip address provided
    Что можно сделать?

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      В любом случае при возникновении проблем, нужно проводить диагностику. Поэтому:
      1. Покажите настройки OpenVPN и его основного профиля, и еще Клиентской записи Secret в которой должен быть задан Remote Address.
      2. Включите log и добавьте в него ovpn. Покажите часть лога именно в момент исчезания адреса 10.2
      /system logging add topics=ovpn action=memory disabled=no

  33. Vaippp

    Здравствуйте.
    Не могу никак настроить клиент для подключения к серверу с этой конфигурацией, напишите пожалуйста настройки для файла client.ovpn

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Данные настройки описаны не для клиентов Windows или Linux. Они для связки двух или более MikroTik.
      Подключение клиентских устройств Windows и Linux будет описано в ближайших статьях под номером 8 и 9

  34. Vitaly

    Просто отличная статья! Все сразу поднялось. Одна из 6! — реальный гайд.
    Есть очень большая просьба — опишите связку Mikrotik OVPN сервер + Windows client
    Пожалуйста. По другим гайдам — неустранимые на моем уровне ошибки.
    И возможно Вы сможете описать другие темы?

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Благодарю за отзыв. Рад, что статья оказалась для Вас полезной. Все это писалось по живому примеру =)
      Касательно связки MikroTik OpenVPN сервер и Windows OpenVPN Client. Постараюсь написать в одной из следующих статей. Данный опыт есть, причем рабочий, и не без «подводных камней» как обычно.
      Расскажите, какие другие темы, Вас могли бы заинтересовать?

  35. Сергей

    единственная статья, которая помогла решить мою проблему!!!))))))))) СПАСИБО

    Ответить
    1. GregoryGost автор

      Здравствуйте,
      Рад, что смог пролить свет на решение Вашей проблемы =))

    2. Сергей

      Gregory:
      Здравствуйте!
      Спасибо Вам за заметки, в них много полезного, что помогает решать задачи каждый день!
      Не имею возможности написать Вам напрямую, но думаю если ответите здесь, то и читателям будет интересно.
      Есть микротик впн-сервер работает на VPS. далее делаю как Вы.
      «я предпочитаю наблюдать за интерфейсом. для этого мы можем зафиксировать интерфейс за конкретным клиентом»

      Столкнулся с такой проблемой, по какой то причине происходит кратковременный сбой(дисконнект), и клиент появляется в интерфейсах с записью «DR». Его приходится удалять руками, после чего он подключается к своему серверу на свое место. Это очень не удобно. возможно у Вас есть решение этой проблемы или есть возможность помочь мне найти это решение. Благодарю за то что отвечаете на все посты! ))

    3. GregoryGost автор

      Сергей, приветствую,

      Благодарю Вас за поддержку !!! Для меня это много значит.

      Я сам сталкивался с данной проблемой, но она проявлялась в основном на ранних версиях прошивок. Как обычно я использую исключительно Long-Term ветку и у меня эта проблема ушла со временем.
      Возможно это связано с тем, что для своего Firwall я стал использовать Port-Knocking, после прохождения которого у клиента нет ограничений на подключения к «серверу»
      Возможно это связано с очень частыми разрывами соединений у клиента и обработками их на головном устройстве, но это очень сомнительно.
      Для начала я бы разобрался с тем, почему происходит так много переподключений.

      Для примера у меня есть роутер с 4G модемом, данный тип соединений сам по себе не славится постоянством, но при этом биндинг на прошивке 6.43.14 работает без нареканий и без непонятных «раздвоений»

      В Вашем случае я бы перешел на Long-Term ветку (если вы не на ней) и сделал закрытый Firewall с доступом клиентам через Port-Knocking (тут правда могут быть особенности)

      Планирую статью по Port-Knocking, проверял механизм, пока у меня с ним все работает отлично.