В некоторых случаях требуется получить доступ например из дома в локальную сеть на работе, это довольно просто можно сделать с помощью 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 для микротика
OpenSSL: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
Обновите прошивку!
И проверьте что бы в сертификатах на микротике был импортирован ca.crt!
При возникновении этой ошибки обновляем прошивку. Заново импортируем сертификаты в микротике(не надо их генерировать снова, просто удалить и снова добавить)
О том где загрузить и как установить OpenVPN клиент описано в статье по созданию сертификатов.
После установки нам необходимо будет переходим в каталог с установленным OpenVPN. Затем добавляем файл client.ovpn в каталог config следующего содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
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 вида
1 2 |
user 123 |
где user — имя пользователя, 123 — пароль, которые мы задавали в PPP-Secrets на микротике
На этом настройка клиента завершена, запускаем OpenVPN GUI и он начинает подключение
при успешном подключении в трее появится сообщение
Как и прежде свои вопросы и пожелания вы можете оставлять в комментариях ниже.