Поднимаем OpenVPN сервер на Mikrotik

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

Во-первых: полноценного ethernet туннеля OpenVPN микротик сделать не в состоянии, потому что отсутствует напрочь возможность выдавать IP адреса OVPN клиентам по DHCP, все адреса выдаёт только сам микротик, как его не крути и с чем вокруг него не прыгай;
Во-вторых: не поддерживается сжатие заголовков;
В-третьих: работает только по tcp, в то время как предпочитаемый для OpenVPN — udp.
и если я правильно понимаю, даже на железках с аппаратным ускорением шифрования, опенвпн всё равно будет работать в софтовом режиме, т.е. возможность аппаратного ускорения не задействуется.

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

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

Итак, настройку я условно разделю на две части, это настройка сервера (на железке) и настройка клиента (windows).

Как настроить клиента для CentOS (Linux) читаем в этой статейке.

Настройка OpenVPN на Mikrotik (Сервер)

Подготовка

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

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

открываем WinBox на микротике, переходим в раздел Files и жмём на кнопку Paste

Получается примерно такая картинка

После этого сертификаты необходимо импортировать, для этого идём в раздел System — Certificates и жмём кнопку Import, я первым импортировал публичный сертификат CA

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

и закрытый ключ для него

должна получится примерно такая картинка, обращаем внимание что напротив сертификата микротика должно стоять KT

следующим шагом создаём пул IP адресов для наших OVPN клиентов IP — Pool, жмём кнопку +, я добавил диапазон 172.21.108.2-172.21.108.14, и назвал пул ovpn

следующим этапом создаём PPP профиль, соответственно заходим в раздел PPP вкладка Profiles добавляем профиль кнопкой +, вводим имя, локальный адрес микротика с которым будут работы нашим клиенты, должен лежать в подсети с созданным ранее пулом адресов и указываем пул, остальное оставляем без изменений

Включение

после этого настраиваем сам OpenVPN сервер, делается это в разделе PPP вкладка Interface, кнопка OVPN Server, ставим галку Enabled, mode выставляем ethernet, выбираем созданный ранее профиль, а также ставим галку Require Client Certificate и выбираем сертификат микротика, маску по желанию можно поменять. Снимаем галочку с md5, этот метод хэширования сейчас считается небезопасным.

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

Поскольку мы используем сертификаты, надо что бы время на клиенте и на сервере совпадало, поэтому настраиваем sntp клиента, что бы микротик мог синхронизировать время, делается это в разделе System — SNTP Client. Я указал локальный SNTP сервер, вы можете использовать любой публичный сервер в интернете (например ntp3.stratum2.ru и 0.europe.pool.ntp.org) или указать свой внутренний.

Осталось настроить разрешающее правило фаервола, переходим в раздел IP — Firewall вкладка Filter Rules.

Здесь надо указать In. Interface (или In. Interface list) — интерфейс по которому к Вам приходит интернет, остальное как на скриншоте.

Созданное правило должно находится выше запрещающих правил.

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

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

Не все версии RouterOS нормально работают с OpenVPN. Например версия RouterOS ниже 6.36 не работает с версиями OpenVPN выше 2.3.10. Поэтому не забывайте периодически обновлять RouterOS.

При получении ошибки:
OpenSSL: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca

Обновите прошивку!
И проверьте что бы в сертификатах на микротике был импортирован ca.crt!


OpenSSL: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
При возникновении этой ошибки обновляем прошивку. Заново импортируем сертификаты в микротике(не надо их генерировать снова, просто удалить и снова добавить)

Конфиг файл тестировался для OpenVPN 2.5.4, последнего на момент написания статьи и RouterOS 6.47.6

О том где загрузить и как установить OpenVPN клиент описано в статье по созданию сертификатов.

После установки нам необходимо будет переходим в каталог с установленным OpenVPN. Затем добавляем файл client.ovpn в каталог config следующего содержания:

proto tcp-client
# в этой строчке мы указываем адрес в интернете нашего микротика
remote 123.123.123.123
dev tap

nobind
persist-key

tls-client
#указываем имена публичного CA сертификата
ca ca.crt
# публичного сертификата клиента
cert client.crt
# и его закрытый ключ
key  client.key
#каждые 10 секунд проверять туннель, если нет ответа 120 секунд, переподключаться
keepalive 10 120
verb 3
cipher AES-256-CBC
auth SHA1
pull
#проверка сертификата сервера
#https://openvpn.net/index.php/open-source/documentation/howto.html#mitm
remote-cert-tls server
# эта строка задаёт файл с логином-паролем которые мы прописывали в PPP-Secrets на микротике
auth-user-pass auth.cfg
# в этой части мы задаём настройки сетей которые находятся за микротиком,
# в моём случае 192.168.1.0 с маской 255.255.255.0 это сеть,
# а 172.21.108.1 это адрес микротика который мы указывали в PPP профиле
route-method exe 
route-delay 2 
route 192.168.1.0 255.255.255.0 172.21.108.1

Так же копируем в эту папку публичные сертификаты CA и клиента, и закрытый ключ клиента. Создаём файл auth.cfg вида

user
123

где user — имя пользователя, 123 — пароль, которые мы задавали в PPP-Secrets на микротике

На этом настройка клиента завершена, запускаем OpenVPN GUI и он начинает подключение

Внимание! В Win7 с включённым UAC, а также на Win8 и Win8.1 не зависимо от того включён или выключен UAC запускаем OpenVPN GUI только в режиме Запускать от имени администратора! В противном случаем у Вас не добавятся маршруты или и вовсе не произойдёт подключения.

при успешном подключении в трее появится сообщение

Как и прежде свои вопросы и пожелания вы можете оставлять в комментариях ниже.

Алексей:
Related Post

This website uses cookies.