Записки IT специалиста
Настройка OpenVPN-сервера на роутерах Mikrotik. RouterOS 6
- Автор: Уваров А.С.
- 19.01.2020
OpenVPN является одной из самых популярных технологий для построения VPN-сетей и это вполне справедливо, данный продукт сочетает в себе безопасность с простой настройкой и мощными возможностями конфигурирования и управления сетью. В роутерах Mikrotik возможности OpenVPN существенно ограничены, что требует серьезно взвесить все за и против перед развертыванием, тем не менее в ряде случаев настройка OpenVPN выглядит оправданной и сегодня мы расскажем как это сделать.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Данная статья предназначена для RouterOS 6.x, для настройки OpenVPN сервера в RouterOS 7.x воспользуйтесь обновленным материалом.
Подготовка роутера
OpenVPN, как и любой другой использующий SSL-шифрование продукт, чувствителен к расхождению времени между клиентом и сервером. Поэтому в первую очередь правильно настроим время на Mikrotik. Прежде всего откроем System — Clock и установим правильное значение часового пояса, его автоматическое определение лучше отключить.

В консоли это можно сделать командой:
/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow
В качестве параметра опции time-zone-name следует указать наименование вашего часового пояса согласно tz database.
Затем установим пакет NTP, для этого вам потребуется скачать с официального сайта архив Extra packages для вашей архитектуры и версии RouterOS, оттуда следует извлечь пакет ntp и поместить его на роутер, для установки достаточно перезагрузить устройство.
![]()
После чего перейдем в System — NTP Client, включим его и укажем адреса NTP-серверов, в нашем случае это сервера из пула ru.pool.ntp.org.

В командной строке это можно сделать так:
/system ntp client
set enabled=yes primary-ntp=185.209.85.222 secondary-ntp=37.139.41.250
Обратите внимание, что вместо доменных имен серверов следует указать их IP, имейте ввиду, что адреса pool.ntp.org указывают на случайно выбранные из пула сервера, которые меняются каждый час, поэтому полученные вами адреса могут отличаться от указанных нами.
Аналогичные манипуляции следует выполнить на всех роутерах-участниках VPN-сети. Для ПК и других устройств-клиентов также следует настроить синхронизацию времени.
Создание ключей и сертификатов
Некоторые руководства в сети предполагают создание ключей и сертификатов при помощи сторонних утилит, например, Easy-RSA, мы же будем использовать собственные средства Mikrotik. Перейдем в System — Certificate и создадим новый корневой сертификат нашего центра сертификации (CA).

Обязательные поля отмечены нами красным, это Name и Common Name — ca, размер ключа — Key Size — 2048, и срок действия — Days Valid — 3650 или 10 лет, для локального центра сертификации это вполне оправдано. Выделенные зеленым поля содержат информацию о владельце сертификата и к заполнению не обязательны, но их заполнение является правилом хорошего тона и при наличии большого количества сертификатов позволяет быстро понять, что это за сертификат и кому он принадлежит.
Затем перейдем на закладку Key Usage и укажем только crl sign и key cert. sign и нажмем кнопку Apply, теперь подпишем сертификат нажав Sign. В появившемся окне заполним поле CA CRL Host адресом локальной петли — 127.0.0.1, после чего нажимаем Start и дожидаемся окончания подписи сертификата.

Эти же действия в консоли:
/certificate
add name=ca country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="ca" key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign
sign ca ca-crl-host=127.0.0.1
Следующим создадим сертификат и закрытый ключ сервера. Закладка General нового сертификата заполняется аналогично, только в полях Name и Common Name указываем ovpn-server (можете выбрать на собственное усмотрение). На вкладке Key Usage укажите digital-signature, key-encipherment и tls-server. Затем подпишем сертификат ключом нашего CA, для этого в поле CA выберите только что созданный нами сертификат ca.

Для выпуска сертификата в консоли выполните:
/certificate
add name=ovpn-server country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="ovpn-server" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
sign ovpn-server ca="ca"
Теперь создадим клиентские сертификаты, в полях Name и Common Name на закладке General указываем имя сертификата, его следует давать осмысленно, чтобы всегда можно было определить какому клиенту принадлежит сертификат. Также следует подумать над сроком действия сертификата, если клиентом будет роутер в удаленном офисе, то можно также выпустить сертификат на 10 лет, а вот если клиентом будет ноутбук сотрудника на испытательном сроке, то лучше выдать его на срок испытательного срока. Выпустить новый сертификат не представляет проблемы, в то время как не отозванный вовремя сертификат может привести к несанкционированному доступу и утечке данных.
На вкладке Key Usage указываем только tls-client и также подписываем сертификат ключом нашего CA. Можно сразу выпустить все необходимые клиентские сертификаты, можно создавать из по мере необходимости.
![]()
Получение клиентского сертификата в консоли:
/certificate
add name=mikrotik country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="mikrotik" key-size=2048 days-valid=365 key-usage=tls-client
sign mikrotik ca="ca"
Обратите внимание, в данном случае мы выпустили сертификат со сроком действия в 1 год: days-valid=365.
Если все сделано правильно, то у вас будут следующие сертификаты, обратите внимание, что корневой сертификат должен иметь флаги KLAT, остальные KI:
![]()
Для использования на клиента нам необходимо экспортировать закрытый ключ и сертификат клиента, а также корневой сертификат центра сертификации. Удобнее всего использовать для этого формат PKCS12, который содержит все необходимые компоненты в одном файле (сертификат, ключ и сертификат CA). Для этого щелкните на нужном сертификате правой кнопкой и выберите Export, в открывшемся окне укажите формат Type — PKCS12 и парольную фразу для экспорта (минимум 8 символов) в поле Export Passphrase. Без указания пароля закрытые ключи выгружены не будут, и вы не сможете использовать такой сертификат для клиента.

Либо используйте команды:
/certificate
export-certificate mikrotik type=pkcs12 export-passphrase=12345678
В данном случае мы использовали парольную фразу 12345678. Экспортированные сертификаты можно скачать в разделе Files.

Как видим, возможности RouterOS легко позволяют управлять сертификатами без привлечения дополнительных инструментов.
Настройка OpenVPN сервера
Начнем с создания пула адресов для выдачи OpenVPN клиентам, так как назначать адреса вручную во втором десятилетии 21 века — дурной тон. Для этого перейдем в IP — Pool и создадим новый пул: Name — ovpn_pool0 — произвольное имя пула, Addresses — 10.8.8.100-10.8.8.199 — диапазон адресов для выдачи клиентов, также можете выбрать по собственному усмотрению.
![]()
Эти же действия в консоли:
/ip pool
add name=ovpn_pool0 ranges=10.8.8.100-10.8.8.199
Теперь перейдем в PPP — Profiles и создадим новый профиль. Укажем его имя Name — ovpn, локальный и удаленный адреса: Local Address — 10.8.8.1, Remote Address — ovpn_pool0. На всякий случай напомним, что локальный адрес должен принадлежать той-же /24 сети, что и диапазон пула адресов.
![]()
Быстро создать профиль в терминале:
/ppp profile
add local-address=10.8.8.1 name=ovpn remote-address=ovpn_pool0
Затем перейдем в PPP — Secrets и убедимся, что включена аутентификация по пользователю. Для этого нажмем PPP Authentication&Accounting, где должен стоять флаг Accounting:

Хотя гораздо быстрее выполнить команду:
/ppp aaa
set accounting=yes
Здесь же создадим учетные записи для клиентов. Особенностью реализации OpenVPN в RouterOS 6 является обязательное использование аутентификации по имени и паролю. При создании учетной записи указываем ее имя — Name, рекомендуем дать ей то же самое имя, которое вы использовали при создании сертификата, чтобы избежать путаницы. Password — пароль, так как основная аутентификация производится по сертификату особых требований к нему нет. Service — какие службы могут использовать данную учетную запись — ограничиваем только OpenVPN выбрав ovpn, затем указываем созданный нами профиль Profile — ovpn.

В терминале для создания учетной записи выполните:
/ppp secret
add name=mikrotik password=123 profile=ovpn service=ovpn
В данном случае мы создали запись для пользователя mikrotik с паролем 123.
После создания пользователей перейдем в PPP — Interface и нажмем на кнопку OVPN Server, в открывшемся окне включим службу установив флаг Enabled, Default Profile — ovpn, в поле Certificate укажем созданный нами сертификат сервера. Для дополнительной безопасности включим Require Client Certificate, в этом случае сервер будет проверять сертификат клиента на принадлежность к цепочке сертификатов локального CA. Затем укажем параметры шифрования: Auth — безальтернативно sha1, Cipher — здесь есть возможность выбора, для роутеров с аппаратной поддержкой AES следует выбирать шифры только из этого семейства, однако чем сильнее шифр — тем больше он нагружает оборудование.
![]()
В терминале эти же действия выполняются командами:
/interface ovpn-server server
set auth=sha1 certificate=ovpn-server cipher=aes256 default-profile=ovpn enabled=yes require-client-certificate=yes
Также не забудьте разрешить входящие подключения к вашему OpenVPN серверу. Откроем IP — Firewall и добавим правило: Chain — input, Protocol — tcp, Dst. Port — 1194. Действие можно не указывать, так как по умолчанию применяется accept.
![]()
В терминале выполните:
/ip firewall filter
add action=accept chain=input dst-port=1194 protocol=tcp
Данное правило должно располагаться выше запрещающего в цепочке INPUT.
![]()
На этом настройка OpenVPN сервера на базе роутера Mikrotik закончена.
Настройка OpenVPN клиента на роутере Mikrotik
Прежде всего закачаем на устройство файл сертификатов в формате PKCS12, который мы экспортировали на сервере. Для этого перейдем в System — Certificate и воспользуемся кнопкой Import, в открывшемся окне укажем файл сертификата и парольную фразу, которую мы установили при экспорте.

В консоли выполните:
/certificate
import file-name=mikrotik.p12 passphrase=12345678
В результате у вас появятся два сертификата: сертификат клиента с закрытым ключом, о чем говорит флаг KT, и корневой сертификат удостоверяющего центра с флагом LAT (K — означает наличие ключа). Запомним наименование сертификатов, либо переименуем их.
![]()
Затем перейдем в PPP — Interface и создадим новый интерфейс типа OVPN Сlient. В поле Connect To указываем адрес или FQDN-имя вашего OpenVPN сервера, Port — 1194, Mode — ip. Ниже указываем учетные данные, созданные для этого пользователя на сервере в полях User и Password, еще ниже указываем параметры шифрования: Auth — sha1, Cipher — аналогично тому, что вы указали на сервере. В поле Certificate выберите сертификат клиента, флаг Verify Server Certificate следует снять.

В терминале следует выполнить:
/interface ovpn-client
add certificate=mikrotik.p12_0 cipher=aes256 connect-to=192.168.3.115 name=ovpn-out1 password=123 user=mikrotik
Если все было сделано правильно, то соединение будет установлено сразу как вы создадите интерфейс.
Чтобы клиенты сети за клиентом имели доступ в сеть за сервером и наоборот необходимо настроить маршрутизацию. Перейдем в IP — Routes и добавим новый маршрут. В поле Dst. Address укажем сеть за сервером, в нашем случае это 192.168.186.0/24, в поле Gateway укажем интерфейс нашего OpenVPN подключения — ovpn-out1.
![]()
Либо выполните команду:
/ip route
add distance=1 dst-address=192.168.186.0/24 gateway=ovpn-out1
Теперь перейдем на сервер и посмотрим каким образом выглядит подключение данного клиента. Как видим, был создан динамический интерфейс ovpn-mikrotik, настраивать маршрутизацию с таким интерфейсом нельзя, так как маршрут «сломается» при отключении клиента.
![]()
Поэтому создадим для этого клиента постоянный интерфейс. Перейдем в Interfaces и создадим новый интерфейс типа OVPN Server Binding. В настройках укажем имя, рекомендуется давать интерфейсам понятные имена, Name — ovpn-mikrotik, в поле User — укажем пользователя, подключение которого будет привязано к этому интерфейсу — mikrotik.

Это же можно сделать командой:
/interface ovpn-server
add name=ovpn-mikrotik user=mikrotik
После чего можно добавить на сервере маршрут к сети за клиентом, настройки здесь аналогичные, Dst. Address — сеть за клиентом, Gateway — интерфейс OpenVPN подключения. В нашем случае 192.168.111.0/24 — сеть за клиентом.
![]()
В терминале следует выполнить:
/ip route
add distance=1 dst-address=192.168.111.0/24 gateway=ovpn-mikrotik
После чего можем проверить связь. Узлы различных сетей должны видеть друг друга.
Настройка стандартного клиента OpenVPN на ПК
Немного изменим задачу, будем считать, что у нас есть ноутбук сотрудника с установленным клиентом OpenVPN, которому необходимо обеспечить доступ в корпоративную сеть через OpenVPN сервер на роутере Mikrotik. Будем считать, что OpenVPN установлен в C:\OpenVPN, а для хранения ключей используется директория C:\OpenVPN\keys.
Прежде всего разместим файл сертификатов в формате PKCS12 в директории для хранения ключей, а также создадим файл с учетными данными C:\OpenVPN\auth.cfg и разместим в нем в разных строках логин и пароль:
win10
123
Где win10 — имя пользователя, 123 — пароль которые мы задали для этой учетной записи на сервере.
Теперь создадим файл C:\OpenVPN\keypass.cfg в котором разместим парольную фразу для сертификата:
12345678
За основу конфигурационного файла мы примем стандартный шаблон client.ovpn, который расположен в C:\OpenVPN\sample-config. Его следует скопировать C:\OpenVPN\config, ниже будут приведены только ключевые опции, а также те, которые мы изменяем или добавляем.
Укажем, что у это клиент, тип туннеля — tun и протокол tcp:
client
dev tun
proto tcp
Адрес и порт сервера:
remote 192.168.3.115 1194
Убедимся в наличии опций:
persist-key
persist-tun
Затем заменим весь блок с указанием путей к ключам и сертификатам:
ca ca.crt
cert client.crt
key client.key
pkcs12 C:\\OpenVPN\\keys\\win10.p12
где укажем путь к нашему файлу сертификатов в формате PKCS12.
Ниже добавим две строки с указанием, где брать учетные данные для дополнительной аутентификации и парольную фразу:
auth-user-pass C:\\OpenVPN\\auth.cfg
askpass C:\\OpenVPN\\keypass.cfg
Проверим наличие опции:
remote-cert-tls server
#tls-auth ta.key 1
Сразу добавим маршрут к сети за сервером:
route 192.168.186.0 255.255.255.0 10.8.8.1
Укажем выбранный нами на сервере шифр:
cipher AES-256-CBC
и отключим сжатие:
#comp-lzo
Теперь можно пробовать подключаться. Если все сделано правильно, то клиент подключится к серверу и ему будут доступны ресурсы сети за сервером. Никаких дополнительных настроек на сервере производить не нужно.
Если за данным ПК у вас находится сеть и нужно обеспечить связь между сетями, то нужно выполнить настройки на сервере аналогичные предыдущей части: создать интерфейс для подключения клиента и добавить маршрут для сети за клиентом. На клиентском ПК не забудьте включить службу маршрутизации.
Данная инструкция также полностью подходит для ПК на Linux, вам потребуется только откорректировать пути в конфигурационном файле и раскомментировать в нем опции:
user nobody
group nogroup
Как видим, настройка OpenVPN сервера на роутерах Mikrotik достаточно проста, но требует учитывать особенности и ограничения реализации этой технологии в RouterOS.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Дополнительные материалы:
Mikrotik
- Оборудование MikroTik класса SOHO. Общий обзор и сравнение возможностей
- Производительность младших моделей Mikrotik hEX и hAP. Экспресс-тестирование
- Базовая настройка роутера MikroTik
- Расширенная настройка DNS и DHCP в роутерах Mikrotik
- Автоматическое резервное копирование настроек Mikrotik на FTP
- Проброс портов и Hairpin NAT в роутерах Mikrotik
- Настройка IPTV в роутерах Mikrotik на примере Ростелеком
- Настройка VPN-подключения в роутерах Mikrotik
- Настройка черного и белого списков в роутерах Mikrotik
- Настройка выборочного доступа к сайтам через VPN на роутерах Mikrotik
- Настройка OpenVPN-сервера на роутерах Mikrotik
- Безопасный режим в Mikrotik или как всегда оставаться на связи
- Настройка Proxy ARP для VPN-подключений на роутерах Mikrotik
- Настраиваем Port Knocking в Mikrotik
- Резервирование каналов в Mikrotik при помощи рекурсивной маршрутизации
- Настраиваем родительский контроль на роутерах Mikrotik
- Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
- Расширенная настройка Wi-Fi на роутерах Mikrotik. Режим точки доступа
- Mikrotik CHR — виртуальный облачный роутер
- Настройка контроллера CAPsMAN (бесшовный Wi-Fi роуминг) на Mikrotik
- Настройка VPN-подключения на роутерах Mikrotik если подсети клиента и офиса совпадают
- Настраиваем использование DNS over HTTPS (DoH) на роутерах Mikrotik
- Настройка PPTP или L2TP VPN-сервера на роутерах Mikrotik
- Установка Mikrotik CHR на виртуальную машину Proxmox
- Защита RDP от перебора паролей при помощи оборудования Mikrotik
- Настройка SSTP VPN-сервера на роутерах Mikrotik
- Настройка выборочного доступа к сайтам через VPN с автоматическим получением маршрутов по BGP на роутерах Mikrotik
- Особенности эксплуатации CA на роутерах Mikrotik: резервное копирование, экспорт и импорт сертификатов
- Настройка туннелей GRE и IPIP на роутерах Mikrotik
- Правильное использование Fast Path и FastTrack в Mikrotik
- DHCP Snooping — настройка защиты от неавторизованных DHCP-серверов на оборудовании Mikrotik
- Работа оборудования Mikrotik в режиме беспроводной станции (клиента)
- Используем режим ARP reply-only для повышения безопасности сети на оборудовании Mikrotik
The Dude
- The Dude. Установка и быстрое начало работы
- Централизованное управление обновлением RouterOS при помощи The Dude
- Централизованный сбор логов Mikrotik на сервер The Dude
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
![]()
Или подпишись на наш Телеграм-канал:
Поднимаем на Mikrotik OpenVPN сервер
OpenVPN — это одна из самых современных технологий VPN на сегодняшний день. Основное достоинство OpenVPN — это бесперебойная работа вне зависимости от качества канала интернет и заблокированных портов провайдерских маршрутизаторов. OpenVPN это своего рода «танк», который работает несмотря ни на что.
Поднимем сервер OpenVPN на маршрутизаторе Mikrotik любой модели. Самое главное, чтобы была RouterOS.
Что нужно знать до установки OpenVPN на Mikrotik
Чтобы полноценно использовать OpenVPN-сервер на Mikrotik, вам нужно обновить версию прошивки до версии 7.1 и выше.
В Mikrotik OpenVPN немного урезан. Главные особенности:
- нет поддержки UDP . Только TCP Добавили в стабильной версии RouterOS 7.1. Есть проблемы в работе.;
- нет LZO -компрессии;
Установка сервера OpenVPN на Mikrotik
Подготовка Mikrotik
Любой OpenVPN сервер требует точного времени всех узлов сети. Нужно настроить синхронизацию времени как клиента, так и сервера. Если синхронизация времени на всех десктопных операционных системах работает из коробки, то Mikrotik, на котором будет установлен OpenVPN сервер, нуждается в дополнительной настройке.
Часовой пояс
Первым делом устанавливаем правильный часовой пояс. Для этого нужно перейти в System — Clock и указать часовой пояс.

system clock set time-zone-autodetect=no time-zone-name=Asia/Omsk
Синхронизация времени
Указываем NTP -сервера для синхронизации времени:

Сами адреса можно взять отсюда – www.ntp-servers.net
В примере используются эти:
88.147.254.232 88.147.254.230
Через консоль это будет выглядеть так:
system ntp client set enabled=yes primary-ntp=88.147.254.232 secondary-ntp=88.147.254.230
Создание сертификатов
Нам нужно создать минимум 3 сертификата:
- самоподписанный корневой сертификат для центра сертификации;
- сертификат для нашего роутера Mikrotik, который выступает OpenVPN-сервером;
- сертификат для клиента.
Для клиентов можно выпустить требуемое количество сертификатов.
Позднее, если потребуется вынести OpenVPN-сервер на другое устройство, их с легкостью можно перенести.
Корневой сертификат CA
Создаем корневой сертификат для нашего центра сертификации. Переходим в System — Certificate
- Name и Common Name — название, которое обычно именуется ca;
- Country, State, Locality, Organization — это произвольные поля, которые заполняются для удобства опознавания сертификатов в будущем;
- Days Valid — это время действия сертификата. Ставим 3650 дней = 10 лет.
На вкладке Key Usage отмечаем только:
Нажимаем кнопку Apply и затем Sign. В поле CA CRL Host указываем сами на себя – 127.0.0.1. Для запуска генерации сертификата, кликаем на Start. После окончания закрываем все окна.
certificate add name=ca common-name="ca" key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign sign ca ca-crl-host=127.0.0.1
Сертификат для OpenVPN сервера Mikrotik
Создание всех сертификатов очень похожи между собой. На вкладке System — Certificate для сертификата сервера OpenVPN Mikrotik, в полях Name и Common Name указываем ovpn-serv (можно указать любое значение), а на вкладке Key Usage выбираем:
Нажимаем кнопку Apply и затем Sign. В поле CA выбираем – ca. Для запуска генерации сертификата, кликаем на Start. После окончания закрываем все окна.
certificate add name=ovpn-serv common-name="ovpn-serv" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server sign ovpn-ser ca="ca"
Сертификат для клиента
Настало время выпускать клиентские сертификаты. Процедура та же самая. На вкладке Key Usage выбираем:
Нажимаем кнопку Apply и затем Sign. В поле CA выбираем – ca. Для запуска генерации сертификата, кликаем на Start. После окончания закрываем все окна.
certificate add name=user1 common-name="user1" key-size=2048 days-valid=365 key-usage=tls-client sign user1 ca="ca"
В результате у нас должно получиться минимум 3 сертификата:

Если у Вас будет больше клиентов, то сертификатов будет больше.
Можно выпустить 1 клиентский сертификат и раздать всем пользователям OpenVPN сервера на Mikrotik. Это будет работать, но так делать не нужно. В случае, если Вам нужно будет отозвать один из клиентских сертификатов для уволенного сотрудника, то сделать это будет невозможно. У вас останется возможность только заблокировать учетную запись.
Экспортируем сертификат пользователя
Для экспорта клиентских сертификатов лучше всего использовать формат PKCS12, так как в результате вы получите 1 файл, который проще передать пользователю. Если нужно настроить подключение на телефонах с Android или IOS , то лучше экспортировать в формате PEM , так как далее нужно будет объединять сертификаты в конфигурационный файл.
Если использовать «устаревший» формат PEM , то будет 2 файла:
- user1.crt – открытая часть ключа пользователя;
- user1.key – закрытая часть ключа пользователя.
К ним нужно будет экспортировать корневой сертификат ca.crt. Без него работать не будет.
При формате PKCS12 файл всего один. Разница между PKCS12 и PEM только в удобстве.
При экспорте обязательно указываем 8-значный пароль и имя файла. Если этого не сделать, в файл при экспорте не добавится закрытая часть ключа и пользоваться будет невозможно.
Через консоль с паролем 12345678:
certificate export-certificate user1 type=pkcs12 export-passphrase=12345678
Настройка OpenVPN сервера
Назначаем IP-адреса для OpenVPN
Всем подключаемым пользователям необходимо назначить IP-адрес. Сделать это можно либо вручную, либо автоматически используя DHCP . В большинстве случаев используйте второй вариант.
Диапазон адресов
Для автоматической выдачи адресов vpn-клиентам достаточно создать pool-адресов. Для этого переходим в раздел IP — Pool .

ip pool add name=ovpn-pool ranges=192.168.132.201-192.168.132.220
Статические адреса
В исключительных случаях нужно выдать статический IP-адрес. Сделать это можно в разделе PPP — Secret . при создании пользователей:

- Local Address — адрес Mikrotik;
- Remote Address — статический адрес клиента.
Более подробнее о создании пользователей пойдет ниже.
Создаем профиль пользователей
Профили в Mikrotik позволяют облегчить дальнейшее добавление пользователей. В профиле можно указать общие параметры для всех пользователей. Это избавит от необходимости указывать одни и те же данные для каждого пользователя отдельно.
В разделе PPP — Secret переходим на вкладку Profiles и создаем новый профиль.
На вкладке General:

- Name — название профиля;
- Local Address — адрес Mikrotik;
- Remote Address — созданный ранее pool для OpenVPN. Если подразумевается использовать статические IP, то поле оставляем незаполненным;
- Bridge — выбираем мост сети;
- Change TCP MSS = yes — автоматическая подстройка размера MSS ;
- Use UPnP = no — автоматическая настройка сетевых устройств;
На вкладке Protocols:

- Use IPv6 = yes — использование IPv6;
- Use MPLS = yes — передача пакетов с помощью меток. В теории ускоряет прохождение пакетов между маршрутизаторами;
- Use Compression = yes — компрессия Mikrotik;
- Use Encryption = yes — базовое щифрование.
На вкладке Limits:

- Only One = yes — указываем для монопольного входа пользователей.
Создаем пользователей
В разделе PPP — Secret нужно включить возможность аутентификации по пользователю. Для этого кликаем на кнопку PPP Authentication&Accounting и проверяем, чтобы была установлена галочка напротив Accounting.

Делаем через консоль:
ppp aaa set accounting=yes
После этого можно приступать к созданию пользователей:

- Name — имя клиента (только латинские буквы и цифры, спец. символы не всегда работают корректно);
- Password — пароль. Пароль, после создания пользователя, будет скрыт звездочками, но есть способ узнать пароль MikroTik;
- Service = ovpn — сервис, указав который ограничиваем возможность подключения только к OpenVPN;
- Profile = ovpn — созданный ранее профиль;
- Remote Address — статический адрес. Если это не требуется, оставляем поле пустым.
Тоже самое можно сделать через консоль:
ppp secret add name=user1 password=1234567 service=ovpn profile=ovpn
Запуск OpenVPN-сервера
В разделе PPP — Interface кликаем на кнопке OVPN Server и настраиваем как на скриншоте:

- Protocol = udp — эта возможность появилась в версии RouterOS 7.1;
- Default Profile = ovpn — созданный профиль;
- Certificate = ovpn-serv — выбираем сертификат, который создавали для сервера;
- Require Client Certificate — обязательное наличие сертификата при авторизации;
- Auth = sha1 — хеширование пароля при его первой передаче по незащищенному каналу при аутентификации;
- Cipher = aes 256 — шифрование передачи данных.
И не забываем поставить галочку напротив Enabled, чтобы включить сервер.
interface ovpn-server server set enabled=yes certificate=ovpn-serv default-profile=ovpn require-client-certificate=yes auth=sha1 cipher=aes256
Открываем порт для OpenVPN
В разделе IP — Firewall на первой вкладке Filter Rules добавляем новое правило:

- Chain = input — так как мы хотим дать доступ извне к самому маршрутизатору, то выбираем цепочку input;
- Protocol = 6 (udp) — протокол UDP , этот протокол начал поддерживаться с версией RouterOS 7.1;
- Dst.Port = 1194 — удаленный порт, который будет открыт на маршрутизаторе.
ip firewall filter add action=accept chain=input protocol=tcp dst-port=1194
Настройка клиентов
Более подробнее о настройке клиентов на разных ОС можно прочитать здесь:
Проблемы
duplicate packet, dropping : using encoding - AES-256-CBC/SHA1 TCP connection established from 109.125.24.30 duplicate packet, dropping
Сама фраза в log`ах duplicate packet, dropping не является ошибкой, если при этом происходит подключение.
Если подключение не происходит, причина чаще всего в несоответствии логина или пароля. Подробнее нужно смотреть логи клиента.
Комментарии
dimass, 16 августа 2022 г. 00:55 #
Шикарная инструкция огромное спасибо, все завелось и закрутилось, очень детально описан процесс. Лучьший how too на моменте на данную версию прошивки!
Как создать сертификат для впн для микротик
В первую очередь для нашего VPN сервера необходимо создать сертификаты.
Создание ключей и сертификатов
Создание CA сертификата
Можно использовать сторонные средства для создания ключей и сертификатов, например Easy-RSA, но я буду это делать средствами роутера Mikrotik.
Заходим System > Certificates
Создаём корневой сертификат нашего центра сертификации (СА).

Поля которые обязательно заполнить выделены красным цветом, а зелёным которые желательно.
Name — Имя нашего сертификата. Обычно делают одинаковыми с Common Name
Common Name — Имя нашего центра сертификации
Key size — Размер ключа. Больше — лучше, но и соответственно нагрузка на железо больше.
Days Valid — Срок действия

Дальше во вкладке Key Usage отмечаем crl sign и key cert. sign и нажимаем Apply
Потом подписываем наш сертификат нажав Sign. В окне которое появится заполняем CA CRL Host
CA CRL Host — нужно указать IP адрес по которому будем доступен наш VPN сервер, или даже лучше если у вас есть доменное имя, которое ссылается на этот IP.

Создание сертификата сервера
Добавляем ещё один сертификат. Во вкладке General, заполняем поля как и для CA сертификата, только меняем Name и Common Name

Переходим во вкладку Key Usage
Отмечаем digital signature, key encipherment и tls server. Нажимаем Apply и Sign, в поле CA выбираем созданный ранее наш сертификат и жмём кнопку Start

Создание сертификата клиента
Добавляем ещё один сертификат и в полях Name и Common Name пишем название клиентского сертификата, желательно название должно быть осмысленное, чтобы через какое то время долго не искать чей это сертификат.

Во вкладке Key Usage оставляем только tls client, дальше Apply и Sign, потом указываем CA и жмём Start

Если всё сделано правильно, то список сертификатов должен выглядеть примерно так:

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

Таким же образом экспортируем CA сертификат, только без указания пароля.
Переходим в Files и видим наши сертификаты

Для дальнейшей настройки клиентов нам необходимо будет их загрузить с роутера. Для этого выделяем сертификаты и нажимаем правой клавишей мышки > Download
Настройка OpenVPN сервера
Создадим пул адресов.
Диапазон в котором клиенты будут получать айпишники.
Заходим IP > Pool и добавляем новый

Далее создадим профиль для наших VPN клиентов.
Используется для настройки одинаковых параметров для нескольких клиентов.
Заходим в PPP > Profiles и добавляем новый


Также есть дополнительные интересные опции:
- Вкладка Protocol
Use Encryption — Использовать шифрование. Ставим yes
Use Compression — Использовать сжатие. Ставим No . Есть смысл использовать только если у вас низкоскоростной канал связи. Но нагрузка на процессор будет больше. - Вкладка Limits
Only One — Одновременно с одним логином и паролем, который мы укажем далее. Можно будет подключатся к серверу только один раз, для одного клиента.

Создадим учётную запись для клиентов.
Здесь нужно придумать Имя, Пароль, а также указать наш сервис ovpn и профиль ovpn, который мы создали

Включаем OpenVPN сервер
PPP > Interface и нажимаем OVPN Server
Отмечаем галочкой Enabled
Port — порт меняем при необходимости, или оставляем по дефолту
Mode — Режим работы. ethernet — tap , ip — tun
Default Profile — Указываем профиль который мы создали
Certificate — Выбираем наш сертификат сервера
Require Client Certificate — Включаем проверку клиентских сертификатов сервером.
Auth — Оставляем только sha1
Cipher — Шифр. Оставляем aes 256

Настройка Firewall
Открываем порт
Для подключения к VPN серверу необходимо открыть порт. В нашем случае это 1194 tcp
IP > Firewall

На вкладке Action, Action соответственно Accept
Настройка OpenVPN клиента на роутере Mikrotik
Загрузим на устройство наши сертификаты.
Открываем Files жмём Upload

Импорт сертификатов
System > Certificates
Для начала импортируем CA сертификат
Хотя CA сертификат для настройки OpenVPN клиента на Mikrotik роутере не нужен. Необходим только клиентский сертификат. Но пусть будет на всякий случай.

Делаем импорт клиентского сертификата с указанием пароля, который был при экспорте. Сначала сертификат, потом приватный ключ.


Флаги возле импортированых сертификатов должны быть как у меня(LAT для CA и KT для клиентского сертификата).

Настройка клиента
Открываем PPP

Connect To — IP адрес или доменное имя нашего VPN сервера
Port — Порт
Mode — Режим работы
User — Пользователь
Password — Пароль
Profile — Профиль
Certificate — Импортированный сертификат клиента
Auth — sha1
Cipher — aes 256
Use Peer DNS — Использование DNS сервера
Add Default Route — Использовать как маршрут по умолчанию

Проверяем доступность VPN сервера.
Для этого открываем терминал на клиенте и запускаем пинг на сервер. В нашем случае это 10.1.1.1

Если пинг есть, то клиент подключился к серверу.
Настройка OpenVPN клиента linux
Для настройки клиента в linux системе необходимо для начала установить openvpn пакет, если его нет.
apt update apt install openvpn
Теперь ложим наши сертификаты в директорию /etc/openvpn/client
Создаем в этой же папке конфиг для клиента client.conf. Между тегов вставляем содержимое наших сертификатов.
client tls-client dev tun proto tcp ### Mikrotik uses TCP only remote 192.168.87.32 ### or IP address port 1194 ### If you use defult port resolv-retry infinite nobind persist-key persist-tun askpass /etc/openvpn/client/user.conf auth-user-pass /etc/openvpn/client/auth.conf auth SHA1 verb 3 cipher AES-256-CBC ;route 192.168.1.0 255.255.255.0
Так же создаём файл auth.conf и пишем в него наш логин/пароль который создавали на роутере во вкладке Secrets.
И ещё один файл user.conf, в котором будет содержатся наш пароль заданый при экспорте ключей.
Теперь пробуем запустить наш OpenVPN клиент.
systemctl start openvpn-client@client
И сразу смотрим статус нашего сервиса на наличие ошибок.
systemctl status openvpn-client@client
Если ошибок нет, пробуем пинговать 10.1.1.1
Настройка OpenVPN клиента Windows
Конфиг файл делаем немного другой.
client1.ovpn
client tls-client dev tun proto tcp #### Mikrotik uses TCP only remote 192.168.87.32 ### or IP address port 1194 ####If you use defult port resolv-retry infinite nobind persist-key persist-tun auth-user-pass auth SHA1 verb 3 cipher AES-256-CBC
Настройка OpenVPN клиента Android
Для настройки на телефоне, сначала скачиваем и ставим офф. OpenVPN клиент, потом берём конфиг как для Windows и в клиенте импортируем. Дальше запускаем.
Open VPN сервер на Mikrotik
По началу может показаться, что это что-то трудное, затянутое и вообще ненужное. На самом деле, ovpn очень удобный и что мне нравится его довольно трудно заблокировать.
Так-с, для начала небольшой алгоритм процесса, чтобы было понимание, что и зачем.
- Настройка времени. Мы будет использовать SSL-сертификаты, а они очень чувствительны к времени;
- Выпускаем три сертификата: корневой, для сервера open vpn, для клиентов open vpn;
- Создаём отдельную подсеть для VPN подключений (отдельный адрес и отдельный пул);
- Настраиваем профиль работы сервера;
- Настраиваем FireWall для работы нашего open vpn сервера;
- Создаём пользователей для подключения;
Настройка времени
Для начала нам нужно настроить время. Это очень важный шаг, который нельзя пропускать, иначе рисуем получить проблемы с SSL-сертификатами.
Переходим в System -> Clock

Автоматическая синхронизация с ntp-серверами
Неплохо бы настроить NTP-клиент на Mikrotik. Это избавляет нас от ошибок и время будет автоматически синхронизироваться. Для этого переходим System -> SNTP и пропишем сервера.

- Первым я указываю гугловские time.google.com
- Вторичным ntp1.stratum2.ru
Нажимаем кнопку Apply и всё. На этом шаге мы закончили работу.
Выпуск сертификатов
Есть различные варианты выпуска сертификатов. Например, easy-rsa. Но у нас есть штатный механизм. Может, он не такой и удобный, как другие, но в рамках этой записи мы далеко уходить не будем и рассмотрим штатный функционал.
Подробная информация о том, как работают сертификаты в Mikrotik можно найти в документации.
Корневой сертификат
Начинаем с выпуска корневого сертификата. Переходим в System -> Certificates и нажимаем на “+”.

Красным выделено — обязательные поля;
Синим выделено — необязательные поля;
Корневой сертификат обозначается CA, так его и назовём, чтобы всё было ясно.
Days Valid это количество дней, которые наш корневой сертификат является валидным. Я обычно оставляю 5 или 10 лет. Тут на ваше усмотрение. Но надо учитывать, что если он просрочиваться, а серверный сертификат или клиентский ещё будут в актуальном состояние, то вся цепочка ломается и придется всё перевыпускать.
Далее на этой же странице переходим на вкладку Key Usage, проставляем галки около key-cert-sign, crl-sign.

Нажимаем кнопку Apply и дальше нажимаем кнопку Sign.

В параметре CA CRL Host можно указать локальный ip адрес, но лучше указывать 127.0.0.1. Нажимаем кнопку Start и ждём пока процесс закончится.

Переходим обратно в System -> Certificate и проверяем, чтобы был флаг KLAT.

На этом мы закончили работу с корневым сертификатом.
Серверный сертификат
Теперь нам нужно выпустить закрытый сертификат для работы сервера. Переходим в System -> Certificate, нажимаем плюсик и заполняем поля.

По обязательности заполнения параметров тут точно также, как в корневом.
Имя указываем, что это сертификат нашего сервера. Обязательно обратите внимание на Days Valid. Его тоже можно выпускать на более долгий срок. Но я оставляю обычно год. Далее переходим на вкладку Key Usage и ставим галочки рядом с digital signature, key encipherment и tls server.

Нажимаем кнопочку Apply и подписываем через кнопку Sign

В параметре CA указываем наш корневой сертификат и нажимаем Start. После удачного выпуска наш сертификат получает флаг KI.

Клиентский сертификат
Ну и остался последний сертификат. Клиентский. Тут надо понимать, кому мы его выписываем. Его можно выписать один вообще на всех, на каждого пользователя нашим VPN, на филиал и так далее. От этого надо учитывать количество дней. Я выпишу один для примера, оставляя его на год. Открываем System -> Certificate, нажимаем наш любимый “+”.

Параметры Name и Common Name заполняем понятным образом. Это может быть название филиала, название клиента, фио и так далее. Переходим на вкладку Key Usage выбираем tls-client.

Нажимаем Apply, дальше Sign и выбираем наш CA. Он также, как и сервер, должен получить флаг KI.

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

Далее выбираем тип. Я использую PEM.

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

Имя задаем понятное, чтобы потом не запутаться, если вы выпускаете больше одного сертификата для клиентов. Я использую тип PEM, мне он больше нравится. И тут обязательно указываем Export Passphrase, без пароля не экспортируется закрытая часть и наш ключ нельзя будет использовать в конфигурирование клиентов.
После того, как нажали Export, открываем вкладку File. И видим 3 наших файлика. Это CA-сертификат, открытая часть клиентского сертификата и закрытая часть. Выделяем их. Правой кнопкой Downloads и качаем к себе, они нам пригодятся дальше.

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

Задаём понятное название и указываем нужное количество IP-адресов в подсети, которую мы отдаём для подключение клиентов к нашему OpenVPN серверу. У меня это будет подсеть 10.12.0.0, в ней я выделяю 10.12.0.10-10.12.0.100.
Профиль Open VPN сервера
Переходим PPP -> Profiles, нажимаем на плюсик и задаём параметры.

- Указываем название, чтобы было нам понятно, для чего этот профиль используется;
- Задаём локальный адрес для подключений;
- Выбираем наш пул адресов;
- Указываем наш Bridge
- Указываем DNS, WINS-сервера
Нажимаем кнопку Apply и едем дальше. Переходим на вкладку Interface, нажимаем OVPN Server
- Нажимаем галку Enabled, тем самым запускаем сам сервер;
- Указываем порт на котором будет работать, я маскируюсь под https трафик;
- Дальше указываем профиль, который мы недавно создали;
- Указываем наш сертификат сервера;
- Ставим галочку Requre Client Certificate, обязательно требуем сертификаты;
Нажимаем кнопку Apply и едем дальше.
Настройка FireWall
Переходим IP -> FireWall и добавляем новое правило. Которое будет разрешать tcp соединение по 443 порту на наш порт с интернетом. Ну или тот порт, который мы указываем в настройках ovpn сервера.

Создаём пользователей
Переходим на PPP -> Secrets и нажимаем на плюсик. Добавляем нового пользователя.

Указываем имя подключения, пароль и тип VPN, к которому может этот юзер подключаться. Всё остальное, без надобности, можно не трогать.
Итог
И так, мы настроили Open VPN сервер на Mikrotik. Теперь необходимо настроить клиентскую часть.
