Openvpn server mikrotik windows
Сегодня мы рассмотрим довольно изъезженную тему про поднятие OpenVPN сервера на Mikrotik. Но в отличие от множества мануалов, которые можно найти в сети мы будем настраивать именно TUN (в терминологии Mikrotik — IP), а не TAP (Ethernet) сервер, причем таким образом, чтобы к нему могли подключаться как Windows клиенты, так и клиенты на Android. Большинство мануалов в сети, например, этот предполагают поднятие OpenVPN сервера в Mode: Ethernet. Однако при таком варианте настройки Windows клиенты будут подключаться к нему без проблем, а вот при попытке подключения с Android ничего не получится, т.к. два распространенные клиента под Android — OpenVPN Connect и OpenVPN for Android не умеют работать с TAP-интерфейсом.
Вообщем, наша цель — создать такой сервер, чтобы мы без проблем коннектились к нему и из под Windows, и из под Android и не испытывали при этом никаких проблем. Предполагается что вы уже знакомы с генерацией сертификатов для OpenVPN-сервера и можете сгенерировать их либо в самом Mikrotik’е, либо с использованием OpenSSL. Последний вариант, кстати, хорошо расписан в этой статье. Поэтому здесь мы подробно не будем останавливаться на этом.
Настраиваем OpenVPN следующим образом:
Теперь давайте разберемся . у нас используется tun интерфейс, при этом должна использоваться маска подсети /30 (почему так — описывать здесь не буду, почитайте мануалы по OpenVPN) . Что же такое маска /30 (255.255.255.252), чтобы было нагляднее — давайте я приведу вам пример нескольких подсетей с такой маской, включая адреса хостов:
Сеть 1:
Сеть: | 172.16.0.0/30 | ||
Кол-во хостов: | 4 | ||
Базовый адрес сети: | 172.16.0.0 | ||
Широковещательный адрес сети: | 172.16.0.3 | ||
Первый адрес хоста: | 172.16.0.1 | ||
Последний адрес хоста: | 172.16.0.2 | ||
Маска сети: | 255.255.255.252 |
Сеть: | 172.16.0.4/30 | ||
Кол-во хостов: | 4 | ||
Базовый адрес сети: | 172.16.0.4 | ||
Широковещательный адрес сети: | 172.16.0.7 | ||
Первый адрес хоста: | 172.16.0.5 | ||
Последний адрес хоста: | 172.16.0.6 | ||
Маска сети: | 255.255.255.252 |
Т.о. мы получаем что при использовании tun-адаптера local и remote address должны быть из одной подсети /30, так, для клиента android01 мы прописали local address 172.16.0.1, а remote address 172.16.0.2, для android02 — 172.16.0.5 и 172.16.0.6 соответственно. Теперь напишем клиентский конфиг:
Обратите внимание, здесь в auth-user-pass задается имя файла с логином и паролем auth.cfg (файл состоит из двух строк, на первой логин, на второй пароль), redirect-gateway def1 — нужна для переопределения основного шлюза, т.е. чтобы при подключении к OpenVPN-серверу весь траффик шел через него, и последняя строка tls-cipher задает используемый тип шифрования. Без нее мы получим проблему с TLS failed при соединении, которая подробно описана вот здесь (вообще на форуме Mikrotik’a очень много тем про ошибку TLS при подключении, но решения так нигде и не приведено, по-крайней мере сходу оно не находится, причем как утверждают там же на ранних версиях RouterOS все работало, а вот после обновления версии прошивки почему-то перестало).
Как видно, все работает. Под Windows, с использованием OpenVPN 2.3.8 x86_64-w64-mingw32 все также отлично подключается:
Поднимаем OpenVPN сервер на Mikrotik
В некоторых случаях требуется получить доступ например из дома в локальную сеть на работе, это довольно просто можно сделать с помощью OpenVPN. Я опишу каким образом можно это реализовать с помощью микротика, хотя заранее оговорюсь, реализация OpenVPN на этой железке оставляет желать лучшего.
Во-первых: полноценного ethernet туннеля OpenVPN микротик сделать не в состоянии, потому что отсутствует напрочь возможность выдавать IP адреса OVPN клиентам по DHCP, все адреса выдаёт только сам микротик, как его не крути и с чем вокруг него не прыгай;
Во-вторых: не поддерживается сжатие заголовков;
В-третьих: работает только по tcp, в то время как предпочитаемый для OpenVPN — udp.
и если я правильно понимаю, даже на железках с аппаратным ускорением шифрования, опенвпн всё равно будет работать в софтовом режиме, т.е. возможность аппаратного ускорения не задействуется.
Всё это вместе взятое немного раздражает, но с этим, как я считаю, можно смирится, потому что такая реализация имеет ряд плюсов:
- Безопасность, опенвпн с реализацией авторизации по сертификату очень надёжный канал.
- В отличии от ipsec у нас практически нет никаких проблем с nat.
- Возможность настроить клиента для подключения по безопасному каналу практически с любого устройства.
- Относительная простота настройки, в микротике опенвпн поднимается практически в два щелчка, если сравнивать настройку через конфиг в других железках или ОС.
Итак, настройку я условно разделю на две части, это настройка сервера (на железке) и настройка клиента (windows).
Настройка 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 и выбираем сертификат микротика, маску по желанию можно поменять.
Осталось совсем немного, нужно создать пользователя, переходим в раздел PPP — Secrets, вводим имя пользователя, пароль, указываем сервис и профиль.
Поскольку мы используем сертификаты, надо что бы время на клиенте и на сервере совпадало, поэтому настраиваем sntp клиента, что бы микротик мог синхронизировать время, делается это в разделе System — SNTP Client. Я указал локальный SNTP сервер, вы можете использовать любой публичный сервер в интернете (например ntp3.stratum2.ru и 0.europe.pool.ntp.org) или указать свой внутренний.
Осталось настроить разрешающее правило фаервола, переходим в раздел IP — Firewall вкладка Filter Rules.
Здесь надо указать In. Interface — интерфейс по которому к Вам приходит интернет, остальное как на скриншоте.
Созданное правило должно находится выше запрещающих правил.
На этом настройка сервера завершена, переходим к настройке клиента.
Настройка клиента OpenVPN Windows для микротика
Обновите прошивку!
И проверьте что бы в сертификатах на микротике был импортирован ca.crt!
После установки нам необходимо будет переходим в каталог с установленным 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 — пароль, которые мы задавали в PPP-Secrets на микротике
На этом настройка клиента завершена, запускаем OpenVPN GUI и он начинает подключение
при успешном подключении в трее появится сообщение
Как и прежде свои вопросы и пожелания вы можете оставлять в комментариях ниже.
Большое спасибо за ваши статьи! Скажите пожалуйста возможно ли где-то в Mikrotik сделать настройку, которая бы запрещала добавление маршрутов? Чтобы маршрут дописанный в файле *.ovpn не работал.
да, через фаервол или через ip route rules, думаю лучше через фаервол.
Добрый день. Подскажите пожалуйста. настроил микротик openvpn сервером и компьютер с подключением. Первое подклчение проходит. Вижу авторизацию на микротике, но потом клиент сам отключается. Захожу в службы не могу подключить «службу openvpn» пишет что «была запущена и затем остановлена» Может кто сталкивался,(пробовал и С учетной записью NT AUTHORITYLocalService и NetworkService ).
Еще вопрос когда все работает не могу подключиться к серверу по RDP за микротиком. Правила фаервола отключил временно, роуты вроде бы мне не нужны. Еще попробую второй микротик клиентом подрубить. Чтобы увидеть комы за микротиком(сервер openvpn) нужно ли прописывать роуты или еще что-нибудь.Спасибо. А так все делал по инструкции все работает,
может быть, хз честно говоря на свежеустановленной форточке работает нормально.
если не можете подключиться по рдп то возможно кривой нат запилили, ну вариантов много с микротиком на самом деле.
если будет подключать микротик как клиента, да маршруты придётся прописывать, но на серверной части маршруты только скриптом можно прописать, потому что ip у клиента постоянно меняется.
Спасибо(при настройке все учел вроде, и с разных компьютеров пробовал клиента openvpn поднять все одинаково отключают службу). Почему выбрал openvpn- потому что у меня микротик находится за роутером, на котором я пробросил порт 1194 и у меня работает какое-то время. PPTP мне не подходило (роутер не поддерживает, да и внеш стат IP для pptp)/
Подскажите пожалуйста может мне попробовать поднять на mikrotike IPSec или l2tp тунели?
У меня только особенность микротик находится за роутером, у меня только возможность пробросить порт. Не знаю, достаточно ли этим протоколам проброс порта.
в сообщениях посмотрите на что жалуется Просмотр событий — Журналы Windows — приложения
http://i.imgur.com/i5vsTEk.png
Айписек через нат с динамическим адресом? )) оно то может и заработает,, но порекомендовать такое никак не могу, опен впн насколько я понимаю работает практически везде, в отличии от всего остального, пожалуй только какой-нибудь directacces будет лучше, но это отнюдь не дешёвый вариант.
ну неет уж) какой динамический IP у сервера.. клиент с динамическим IP. события гляну. сделал по другому немного, потому что горит, отпишусь позже как
Спасибо, очень подробная статья, но не получилось…
Сделал стенд, Mikrotik (192.168.10.103 — внешний для теста) подключил к свитчу и попробовал подключиться c клиента 192.168.10.2
Не удается подключится, вот что пишет:
…
Thu Aug 07 23:20:11 2014 MANAGEMENT: >STATE:1407432011,WAIT.
Thu Aug 07 23:20:11 2014 MANAGEMENT: >STATE:1407432011,AUTH.
Thu Aug 07 23:20:11 2014 TLS: Initial packet from [AF_INET]192.168.10.103:1194, sid=1aefb5d0 6e4813b4
Thu Aug 07 23:20:11 2014 VERIFY OK: depth=1, C=RU, ST=//////////////////
Thu Aug 07 23:20:11 2014 VERIFY OK: nsCertType=SERVER
Thu Aug 07 23:20:11 2014 VERIFY OK: depth=0, C=RU, ST=//////////////////
Thu Aug 07 23:20:12 2014 Connection reset, restarting [0]
Thu Aug 07 23:20:12 2014 SIGUSR1[soft,connection-reset] received, process restarting
Thu Aug 07 23:20:12 2014 MANAGEMENT: >STATE:1407432012,RECONNECTING,connection-reset,,
Thu Aug 07 23:20:12 2014 Restart pause, 5 second(s)
На стороне Mikrotik пишет:
TCP connection established from 192.168.10.2
,ovpn-0>: dialing…
,ovpn-0>: using encoding -AES-256-CBC/SHA
и так по кругу. Подскажите что может быть?
из того что вы написали ошибок не вижу, попробуйте лог ovpn включить, может там что интересное будет
/system logging add topics=ovpn action=memory
но если и в этом случае ничего нового не увидите, то возможно стоит сменить прошивку.
Нет, ничего нового в логах Mikrotik не появилось. Прошивка последняя 5.26. Может быть из-за того что где-то на уровне создания сертификата напутал?
дата время совпадает на микротике и на сервере? перезагружать микротик пробовали? )
Перезагрузка это первое что сделал.
А как проверить время? SNTP Client уже был настроен, время на микротике актуальное. И опять же не понятно что значит на микротике и на сервере? Ведь микротик и выступает в роли сервера.
да верно ) на микротике и на клиенте время должно совпадать, ну хотя бы +/- день, хотя в этом случае вроде другая ошибка.
для 5.26 инструкция подходит
дальше, если смотреть ваш лог у вас ST=////// так и написано? Вы поля в сертификате вообще не заполняли?
Не вижу в логе упоминания про логин-пасс.
Нет конечно, там дальше идут все поля, просто я делал не тестовый сертификат, а так сказать рабочий уже, с реальными данными, поэтому и убрал с виду…
Вот про логин/пароль тоже вопрос, дай думаю проверю, меняю пароль для пользователя на микротике — ничего не меняется…
у меня в логе строчка есть
WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
у вас её не вижу, возможно в конфиге вы не указали auth.cfg, хотя у меня в инструкции оно указано.
дальше не вижу тип шифрования в логе, у меня выглядит как
Data Channel Encrypt: Cipher ‘AES-256-CBC’ initialized with 256 bit key
да это всё на скрине видно, и опять таки в конфиге есть.
Всё верно вы говорите, упустил я её когда копировал, стояла в одну строку с комментарием. Добавил — всё заработало! Большое спасибо.
Осталась одна проблема пинг не проходит до машины во внутренней сети, т.е. пинг до 172.21.108.1 идет, а вот до локалки 192.168.0.X нет, хотя строчку добавил
route 192.168.0.0 255.255.255.0 172.21.108.1
в логах тоже вроде бы нормально
Fri Aug 08 22:33:48 2014 Notified TAP-Windows driver to set a DHCP IP/netmask of 172.21.108.14/255.255.255.0 on interface
Fri Aug 08 22:33:48 2014 Successful ARP Flush on interface [18]
Fri Aug 08 22:33:50 2014 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Fri Aug 08 22:33:50 2014 MANAGEMENT: >STATE:1407515630,ADD_ROUTES.
Fri Aug 08 22:33:50 2014 C:WINDOWSsystem32route.exe ADD 192.168.0.0 MASK 255.255.255.0 172.21.108.1
Fri Aug 08 22:33:50 2014 env_block: add PATH=C:WindowsSystem32;C:WINDOWS;C:WINDOWSSystem32Wbem
Fri Aug 08 22:33:50 2014 Initialization Sequence Completed
Fri Aug 08 22:33:50 2014 MANAGEMENT: >STATE:1407515630,CONNECTED,SUCCESS,172.21.108.14,192.168.10.103
после того как подключились сделайте в cmd — route print выложите сюда, видно будет в чём может быть проблема.
и ещё вопрос, с микротика ж 192.168.0.x у вас пингуется? и на машине с адресом 192.168.0.х микротик шлюзом по умолчанию выставлен?
Да, машина что за микротиком, получает от него IP через DHCP и он для неё шлюзом прописан, проверил пинг с микротика до неё не идет.
Видимо надо для начала на стороне микротика разбираться с маршрутами.
на микротике маршрут сам добавится как только первый клиент подключится через ovpn. Но может быть например проблема с фаерволом, хотя в конфигурации по дефолту ничего не должно мешать.
Да, маршрут добавился, но странный с моей точки зрения, Dst.address мой (который получил клиент на windows), а вот gateway Pref. Source 172.21.108.1. Такое чувство что нужно еще как-то в локальный бридж это запихнуть…
никаких бриджей не надо, если с микротика пингуется всё, то проблема врядли в маршрутизации, тут либо нат, либо фаервол, либо проблема с маршрутами где угодно кроме микротика
В общем всё равно не пойму в чем дело, локальный адрес mikrotika пингуется, а дальше локалка нет. Как уже писал выше с самого микротика тоже машина не пингуется, думаю в этом дело.
фаервол на машине мешает? если с микротика не пингуется, то сам микротик пингуется?
Добрый день. Столкнулся со следующей проблемой. Согласно статье настроил сервер на микротике, установил клиент (windows 2003 server) без каких-либо проблем.
Установил второй клиент (windows 7), добавил сертификаты. Подключение к серверу проходит, но с клиента не пингуется ни микротик (по сети openvpn) ни первый клиент vpn. лог клиента пишет следующее
Wed Aug 13 15:24:21 2014 Initialization Sequence Completed
Wed Aug 13 15:24:21 2014 MANAGEMENT: >STATE:1407932661,CONNECTED,SUCCESS,192.168.34.39,37.57.204.136
Wed Aug 13 15:25:47 2014 [Test-server] Inactivity timeout (—ping-restart), restarting
Wed Aug 13 15:25:47 2014 C:Windowssystem32route.exe DELETE 192.168.5.0 MASK 255.255.255.0 192.168.34.1
Wed Aug 13 15:25:47 2014 env_block: add PATH=C:WindowsSystem32;C:WINDOWS;C:WINDOWSSystem32Wbem
Wed Aug 13 15:25:47 2014 Closing TUN/TAP interface
После чего процесс openvpn.exe убирается из процессов только путем перезагрузки
лог микротика пишет
TCP connection established from **.**.**.**
:using encoding — AES-256-CBC/SHA1
client logged in. 192.168.34.39
connected
terminating… -peer disconnected
client logged out
disconnected
Создается впечатление, что более одного клиента сервер не принимает — попытка настроить на другом пк привела к таким же результатам.
Не могли бы подсказать, что это может быть?
у каждого клиента должен быть свой сертификат с уникальным CN и для каждого клиента надо создать свою уникальную пару логин-пароль на миkротике
Естественно под второго клиента так же генерировался свой сертификат, а на микротике заводилась пара логин-пароль (которая потом указывалась в auth.cfg). Плюс, я так понимаю, при отсутствии сертификатов или несовпадении пары логин-пароль клиент не получал бы адрес от микротика.
у меня микротик работает сейчас с 5ью клиентами, но я думаю это не предел, так что версия про то что сервер не принимает больше одного клиента не состоятельна.
Далее, сталкивался с тем что при авторизации по одному сертификату овпн выкидывает того кто зашёл первым и пускает второго, но это на винде было, как поведёт себя микротик не берусь гадать.
Не исключено правда что проблема в чём-то другом, например в фаерволе, гадать к сожалению на кофейной гуще не умею, а по той информации что Вы дали могу предположить только одинаковые сертификаты, вы кстати логин так и задавали ? Client?
Здравствуйте, Алексей.
Спасибо за статью, все предельно понятно НО
У меня та же проблема что и у Максима Паренко.
Файерволл выключен вообще, сертификаты созданы в соответствии с Вашей статьей.
Виндовый клиент присоединяется к МТ, но через минуту отключается, убирает роут и висит в состоянии завершения подключения, процесс openvpn.exe не убивается в диспетчере задач до перезагрузки.
Tue Aug 26 18:37:35 2014 SENT CONTROL [helix-srv]: ‘PUSH_REQUEST’ (status=1)
Tue Aug 26 18:37:40 2014 SENT CONTROL [helix-srv]: ‘PUSH_REQUEST’ (status=1)
Tue Aug 26 18:37:45 2014 SENT CONTROL [helix-srv]: ‘PUSH_REQUEST’ (status=1)
Tue Aug 26 18:37:45 2014 PUSH: Received control message: ‘PUSH_REPLY,ping 20,ping-restart 60,route-gateway 192.168.20.1,ifconfig 192.168.20.5 255.255.255.0’
Что значит вот это? Я так понимаю не едет пинг до сервера ОВПН
Какую версию клиента ОВПН Вы использовали на момент написания статьи?
Заранее спасибо за ответ.
Очень хочется разобраться, тк бьюсь с овпн уже с начала лета, и пока что безуспешно(
В режиме IP можно подключить только один виндовый клиент, а надо как минимум 3.
Я использовал последнюю стабильную версию. Завтра попробую ещё раз, посмотрю что может быть не так.
Большое спасибо. Жду ответа с нетерпением.
Добавляю.
———————-
Алексей, я разобрался в чем причина, но несколько криво.
Весь конфиг в Вашей статье в самом деле полностью работоспособен, проблема с самим клиентом овпн версии 2.3.4 — в режиме tap он успешно подключается к МТ, но намертво виснет тк не ходят пакеты и МТ закрывает соединение (Опция Keepalive Timeout в PPP->OVPN Server — пингует 60 секунд тоннель, если ответа нет то сбрасывает соединение).
При этом роуты добавляются и на стороне МТ и на стороне клиента. На время проверки я полностью отключал файерволлы на всех концах соединения, менял порт овпн на 443, результат один и тот же. В окне статуса клиента после сброса соединения микротиком висит строчка Ожидается завершение работы… процесс openvpn.exe намертво виснет и не удаляется диспетчером задач, из cmd, выгружается только при перезагрузке.
Ваш конфиг полностю работоспособен на версиях клиента 2.3.3 и 2.3.2 (ниже не проверял за ненадобностью)
Версия моего МТ с сервером 6.15, тк он «боевой» обновлять пока что не буду. На данный момент последняя версия прошивки 6.19 — на выходных попробую на тестовом МТ и отпишусь по результатам.
На вопрос зачем использовать последний клиент овпн? — в нем устранена недавняя дырка OpenSSL Heartbleed и он является на данный момент более безопасным, по крайней мере сами OvpnComm так заявляют =
О как! Полез смотреть прошивки МТ и ченджлоги:
What’s new in 6.16 (2014-Jul-17 13:12):
*) 802.11ac support added in wireless-fp package for QCA9880/9882 rev2 (-BR4A) chips;
*) ip cloud now allows to set which IP to use — detected (public) or local (private);
*) l2tp, pptp, pppoe — fixed possible packet corruption when encryption was enabled;
*) ovpn — fixed ethernet mode;
*) certificates — use SHA256 for fingerprinting;
4я строчка в чендже — возможно, это то что надо.
=((( после обновления все равно последний клиент зависает(
Да, проблема явно в 234 версии.
Судя по тому что 233 собрана 14 апреля (OpenVPN 2.3.3 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Apr 14 2014)
она должна содержать фикс от heartbleed, так что просто используйте версию 233, а там глядишь и новая рабочая версия клиента под форточку выйдет;)
про маршруты не забываем, без маршрутизации никуа не знает куда пакеты слать
маршруты в конфиге на стороне клиента прописаны, в статье это есть 😉
Последняя версия клиента работает с микротиком стабильно openvpn-install-2.3.5-I602-x86_64.exe
спасибо, проверю если всё так внесу изменения в статью
Ребят, а подскажите как сделать так, чтобы имя пользователя и пароль не из файла брал, а запрашивал интерактивный ввод? Так же безопасней будет.. Пожалуйста..
логин-пароль вообще только для микротика нужен, у меня там 123 вбито, безопасность обеспечивается в первую очередь за счёт применения сертификата!
Ну а если у Вас с компа кто-то может стащить файл с логином и паролем, то поставить кейлогер в этом случае не должно быть проблемой.
Вы пишите, что пара — логин/пароль нужна только для микротика, но ведь мне в конфигурационном файле подключения приходится их указывать..
Вы уверены, что нельзя никак вызывать окно ввода логина и пароля для подключения?
Если бы я писал статью о том как поднять сервер openvpn на windows там бы 100% не было никакого логина и пароля, но на микротике так сделать нельзя, ему нужна пара логин-пароль, хотя в случае использования сертификатов это избыточно.
Но если для Вас это так важно можете вместо auth-user-pass auth.cfg попробовать auth-retry type interact
https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage — здесь все ключи собраны которые можно использовать.
Вряд ли актуально ещё, но можно просто строку auth-user-pass оставить пустой, не указывая файл.
Друзья, а я так понимаю что при такой схеме работы связи между клиентами не будет?
по дефолту как раз таки будет, если хотите что бы связи не было используйте правила фильтрации.
Делал вроде всё по вашей схеме, при подключении вылазит такая ошибка, не знаю куда копать:
TLS_ERROR: BIO read tls_read_plaintext error: error:14094413:SSL routines:SSL3_READ_BYTES:sslv3 alert unsupported certificate: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
TLS Error: TLS object -> incoming plaintext read error
TLS Error: TLS handshake failed
Fatal TLS error (check_tls_errors_co), restarting
Win 7 x64, клиент openvpn-install-2.3.2-I006-x86_64.exe
Создавал сертификаты на openvpn-install-2.3.6-I603-x86_64.exe
А клиент 2.3.2 из каких соображений против 2.3.6 используете?
так то об ошибке сертификата пишет лог, но я с подобными ошибками не сталкивался.
Да просто на машине другой сертификаты делал. Сейчас на 2.3.2 переделал сертификаты, та же ошибка 🙁
По инструкции сгенил 3 файла, ca.crt и server.crt и server.key. Их я закинул на Микротик. Их же нужно использовать в папке у клиента и положить их в config вместе с файлами client.ovpn и auth.cfg ?
Судя по ошибке ssl v3 не поддерживается роутером…
нет не их же
для двух точек сервер-клиент надо создать 3 crt файла ca, server, client. Вроде вполне себе подробно процесс описал, нигде не писал что в папку клиенту надо положить сертификат микротика.
1 Спасибо за оперативные ответы. Методом тыка это выяснил 🙂 Другой вопрос, теперь мне просто генерировать сертификаты для других клиентов с разными commonName, на микротике только пользователей новых добавляем и всё ?
2 У микротика ip 192.168.88.1, dhcp выдаёт с 10 по 20. vpn pool я сделал от 21 до 40. Но при соединении инет на стороне клиента отваливается. Не могу получить доступ к устройствам за микротиком.
1. да
2. Используйте другую подсеть, не 88,1, 89.1 например.
Спасибо, выручил. Всех благ вам !
Что нужно прописать чтоб из сети что за микротиком виделись клиенты OpenVPN ?
Сеть за микротиком 192.168.88.Х а Ovpn 172.21.108.X
Sat May 16 19:04:14 2015 TAP-Windows Driver Version 9.21
Sat May 16 19:04:14 2015 Notified TAP-Windows driver to set a DHCP IP/netmask of 172.21.108.14/255.255.255.0 on interface <1AB1DA40-BC19-4622-8CEA-B633999458D7>[DHCP-serv: 172.21.108.0, lease-time: 31536000]
Sat May 16 19:04:14 2015 Successful ARP Flush on interface [28] <1AB1DA40-BC19-4622-8CEA-B633999458D7>
Sat May 16 19:04:16 2015 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Sat May 16 19:04:16 2015 MANAGEMENT: >STATE:1431767056,ADD_ROUTES.
Sat May 16 19:04:16 2015 C:Windowssystem32route.exe ADD 192.168.1.0 MASK 255.255.255.0 172.21.108.1
Sat May 16 19:04:16 2015 env_block: add PATH=C:WindowsSystem32;C:WINDOWS;C:WINDOWSSystem32Wbem
Sat May 16 19:04:16 2015 Initialization Sequence Completed
Sat May 16 19:04:16 2015 MANAGEMENT: >STATE:1431767056,CONNECTED,SUCCESS,172.21.108.14,5.121.87.218
Нужен нормальный интернет на работе а не то что там сейчас есть, подключение идет нормально, после изменения пароля с сложного на простой, но интернет не работает, если есть мысли подскажите, пожалуйста.
Информация с подключения
Определенный для подключения DNS-суффикс:
Описание: TAP-Windows Adapter V9
Физический адрес: 00-FB-3A-C2-DD-55
DHCP включен: Да
Адрес IPv4: 172.21.108.14
Маска подсети IPv4: 255.255.255.0
Аренда получена: 16 мая 2015 г. 19:04:14
Аренда истекает: 15 мая 2016 г. 19:04:14
Шлюз по умолчанию IPv4:
DHCP-сервер IPv4: 172.21.108.0
DNS-сервер IPv4:
WINS-сервер IPv4 :
Служба NetBIOS через TCP/IP включена: Да
Лог выглядит нормально, ошибок не вижу. Микротик перезагружать не пробовали?
Да ниже был похожий лог, там человек не прописал в конфиге путь к файлу с логином-паролем, у Вас похоже тоже нет этой строчки.
Я добавил информации, какие нужно настройки в микротике посмотреть, сам он нормально настроен интернет во внутреннюю сеть раздает.
Вы хотите откуда-то через опенвпн подключиться к микротику и что бы потом через этот канал интернет пошёл, так?
Да, подключение устанавливается а интернета нет.
и не должно быть.
redirect-gateway в конфиг попробуйте добавить.
Спасибо огромное, клиент оказывается ковырять надо было а не микротик, понял свою ошибку)
Добрый день.
Thu May 28 14:10:23 2015 WARNING: —ping should normally be used with —ping-restart or —ping-exit
Thu May 28 14:10:23 2015 Socket Buffers: R=[65536->65536] S=[65536->65536]
Thu May 28 14:10:23 2015 Attempting to establish TCP connection with [AF_INET]95.172.49.145:1194 [nonblock]
Thu May 28 14:10:23 2015 MANAGEMENT: >STATE:1432811423,TCP_CONNECT.
Thu May 28 14:10:24 2015 TCP connection established with [AF_INET]95.172.49.145:1194
Thu May 28 14:10:24 2015 TCPv4_CLIENT link local: [undef]
Thu May 28 14:10:24 2015 TCPv4_CLIENT link remote: [AF_INET]95.172.49.145:1194
Thu May 28 14:10:24 2015 MANAGEMENT: >STATE:1432811424,WAIT.
Thu May 28 14:10:24 2015 MANAGEMENT: >STATE:1432811424,AUTH.
Thu May 28 14:10:24 2015 TLS: Initial packet from [AF_INET]95.172.49.145:1194, sid=0ee511af 1f024810
Thu May 28 14:10:24 2015 WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
Thu May 28 14:10:24 2015 VERIFY OK: depth=1, C=RU, ST=NN, L=NizhniyNovgorod, O=CMP, OU=changeme, CN=changeme, name=changeme, emailAddress=anred@r152.su
Thu May 28 14:10:24 2015 VERIFY OK: nsCertType=SERVER
Thu May 28 14:10:24 2015 VERIFY OK: depth=0, C=RU, ST=NN, L=NizhniyNovgorod, O=CMP, OU=changeme, CN=mikrotik, name=mikrotik, emailAddress=anred@r152.su
Thu May 28 14:10:25 2015 TLS_ERROR: BIO read tls_read_plaintext error: error:14094413:SSL routines:SSL3_READ_BYTES:sslv3 alert unsupported certificate: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
Thu May 28 14:10:25 2015 TLS Error: TLS object -> incoming plaintext read error
Thu May 28 14:10:25 2015 TLS Error: TLS handshake failed
Thu May 28 14:10:25 2015 Fatal TLS error (check_tls_errors_co), restarting
Thu May 28 14:10:25 2015 SIGUSR1[soft,tls-error] received, process restarting
Thu May 28 14:10:25 2015 MANAGEMENT: >STATE:1432811425,RECONNECTING,tls-error,,
Thu May 28 14:10:25 2015 Restart pause, 5 second(s)
Вот лог. не могу понять куда лезть. Поможите
Всё по ману следал. Но отшибает и всё.
после плясок с таймзоной и перенастройкой сертификатов начал выдавать
OpenVPN 2.3.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Mar 19 2015
library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Need hold release from management interface, waiting…
MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
MANAGEMENT: CMD ‘state on’
MANAGEMENT: CMD ‘log all on’
MANAGEMENT: CMD ‘hold off’
MANAGEMENT: CMD ‘hold release’
WARNING: —ping should normally be used with —ping-restart or —ping-exit
Socket Buffers: R=[65536->65536] S=[65536->65536]
Attempting to establish TCP connection with [AF_INET]95.172.49.145:1194 [nonblock]
MANAGEMENT: >STATE:1432812603,TCP_CONNECT.
TCP connection established with [AF_INET]95.172.49.145:1194
TCPv4_CLIENT link local: [undef]
TCPv4_CLIENT link remote: [AF_INET]95.172.49.145:1194
MANAGEMENT: >STATE:1432812604,WAIT.
MANAGEMENT: >STATE:1432812604,AUTH.
TLS: Initial packet from [AF_INET]95.172.49.145:1194, sid=b8764f5c 44162e9d
WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
VERIFY OK: depth=1, C=RU, ST=NN, L=NizhniyNovgorod, O=CMP, OU=changeme, CN=changeme, name=changeme, emailAddress=anred@r152.su
VERIFY OK: nsCertType=SERVER
VERIFY OK: depth=0, C=RU, ST=NN, L=NizhniyNovgorod, O=CMP, OU=changeme, CN=mikrotik, name=mikrotik, emailAddress=anred@r152.su
Connection reset, restarting [0]
SIGUSR1[soft,connection-reset] received, process restarting
MANAGEMENT: >STATE:1432812604,RECONNECTING,connection-reset,,
Restart pause, 5 second(s)
в последнем логе ошибок нет.
надо на микротике смотреть что не так. Возможно логин-пароль ) Возможно на микротике время неправильно выставлено, возможно сам микротик перезагрузить надо.
Спасибо.
У меня возникает побочный вопрос — использование сертификатов обязательно? Везде маны именно с сертификатами.
на опенвпн не пробовал по другому настраивать, но наверное можно )
просто если есть другой вариант, например с использованием фразы-пароля, то он менее безопасен.
Никак не могу добиться успеха((
OpenVPN 2.3.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Mar 19 2015
library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Need hold release from management interface, waiting…
MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
MANAGEMENT: CMD ‘state on’
MANAGEMENT: CMD ‘log all on’
MANAGEMENT: CMD ‘hold off’
MANAGEMENT: CMD ‘hold release’
WARNING: —ping should normally be used with —ping-restart or —ping-exit
Socket Buffers: R=[65536->65536] S=[65536->65536]
Attempting to establish TCP connection with [AF_INET]95.172.49.145:1194 [nonblock]
MANAGEMENT: >STATE:1432815294,TCP_CONNECT.
TCP connection established with [AF_INET]95.172.49.145:1194
TCPv4_CLIENT link local: [undef]
TCPv4_CLIENT link remote: [AF_INET]95.172.49.145:1194
MANAGEMENT: >STATE:1432815295,WAIT.
MANAGEMENT: >STATE:1432815295,AUTH.
TLS: Initial packet from [AF_INET]95.172.49.145:1194, sid=b093ff35 2e5bc4ec
WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
Connection reset, restarting [0]
SIGUSR1[soft,connection-reset] received, process restarting
MANAGEMENT: >STATE:1432815295,RECONNECTING,connection-reset,,
Restart pause, 5 second(s)
Тайм зона одинаковая. И у компа и у микротика. Винда 8. Сертификаты делал на 2,3,6.
микрот — ребутал.
На микроте в логе пишет:
TCP connection established from мой IP
Заработало. … пляски с бубном Перенастроил настройку ОVPN сервера.
5ть раз перезабил логин и пароль пользователя.
Thu Jun 25 14:15:55 2015 OpenVPN 2.3.7 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jun 8 2015
Thu Jun 25 14:15:55 2015 library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
Thu Jun 25 14:15:55 2015 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Thu Jun 25 14:15:55 2015 Need hold release from management interface, waiting…
Thu Jun 25 14:15:56 2015 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
Thu Jun 25 14:15:56 2015 MANAGEMENT: CMD ‘state on’
Thu Jun 25 14:15:56 2015 MANAGEMENT: CMD ‘log all on’
Thu Jun 25 14:15:56 2015 MANAGEMENT: CMD ‘hold off’
Thu Jun 25 14:15:56 2015 MANAGEMENT: CMD ‘hold release’
Thu Jun 25 14:15:56 2015 WARNING: —ping should normally be used with —ping-restart or —ping-exit
Thu Jun 25 14:15:56 2015 Socket Buffers: R=[8192->8192] S=[8192->8192]
Thu Jun 25 14:15:56 2015 Attempting to establish TCP connection with [AF_INET]83.239.204.74:1194 [nonblock]
Thu Jun 25 14:15:56 2015 MANAGEMENT: >STATE:1435230956,TCP_CONNECT.
Thu Jun 25 14:16:06 2015 TCP: connect to [AF_INET]***.***.***.***:1194 failed, will try again in 5 seconds: Ïîïûòêà îáúåäèíèòü äèñê ñ ïàïêîé íà îáúåäèíåííîì äèñêå.
Thu Jun 25 14:16:11 2015 MANAGEMENT: >STATE:1435230971,TCP_CONNECT.
в чем беда может быть? что странно, он подключается без проблем внутри сети
WIn 7 x64 клиент
не указали в конфиге строку с логином-паролем.
proto tcp-client
remote ***.***.***.***
dev tap
tls-client
ca ca.crt
cert ClientWork.crt
key ClientWork.key
ping 10
verb 3
ns-cert-type server
cipher AES-256-CBC
auth SHA1
pull
auth-user-pass auth.cfg
route-method exe
route-delay 2
route 192.168.20.0 255.255.254.0 192.168.42.1
тут же в папке лежит auth.cfg с логином и паролем, да и внутри сети ведь заходит нормально…
ну ещё как вариант что просто не открыт порт 1194
все по инструкции, в фаерволе все открыто, как ни прискорбно.
попробовал, если подключаться туда где нет опенвпна (ну или порт закрыт) то лог как у Вас получается.
Микротик перезагружали? разрешающее правило стоит выше запрещающих? Интерфейс правильно указан?
да, перезагружал, правило выше всех стоит, на первом месте, интерфейс верный, вот лог подключения на всякий случай, при подключении внутри сети…
Thu Jun 25 20:23:59 2015 OpenVPN 2.3.7 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jun 8 2015
Thu Jun 25 20:23:59 2015 library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
Thu Jun 25 20:23:59 2015 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Thu Jun 25 20:23:59 2015 Need hold release from management interface, waiting…
Thu Jun 25 20:23:59 2015 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
Thu Jun 25 20:23:59 2015 MANAGEMENT: CMD ‘state on’
Thu Jun 25 20:23:59 2015 MANAGEMENT: CMD ‘log all on’
Thu Jun 25 20:23:59 2015 MANAGEMENT: CMD ‘hold off’
Thu Jun 25 20:23:59 2015 MANAGEMENT: CMD ‘hold release’
Thu Jun 25 20:23:59 2015 WARNING: —ping should normally be used with —ping-restart or —ping-exit
Thu Jun 25 20:24:00 2015 Socket Buffers: R=[8192->8192] S=[8192->8192]
Thu Jun 25 20:24:00 2015 Attempting to establish TCP connection with [AF_INET]***,***,***,***:1194 [nonblock]
Thu Jun 25 20:24:00 2015 MANAGEMENT: >STATE:1435253040,TCP_CONNECT.
Thu Jun 25 20:24:01 2015 TCP connection established with [AF_INET]83.239.204.74:1194
Thu Jun 25 20:24:01 2015 TCPv4_CLIENT link local: [undef]
Thu Jun 25 20:24:01 2015 TCPv4_CLIENT link remote: [AF_INET]***,***,***,***:1194
Thu Jun 25 20:24:01 2015 MANAGEMENT: >STATE:1435253041,WAIT.
Thu Jun 25 20:24:01 2015 MANAGEMENT: >STATE:1435253041,AUTH.
Thu Jun 25 20:24:01 2015 TLS: Initial packet from [AF_INET]***,***,***,***:1194, sid=2bd4b4d7 fc6f61c5
Thu Jun 25 20:24:01 2015 WARNING: this configuration may cache passwords in memory — use the auth-nocache option to prevent this
Thu Jun 25 20:24:01 2015 VERIFY OK: depth=1, C=RU, ST=OLG, L=Olginka, O=CMP, OU=*****, CN=CA, name=ca, emailAddress=*************@gmail.com
Thu Jun 25 20:24:01 2015 VERIFY OK: nsCertType=SERVER
Thu Jun 25 20:24:01 2015 VERIFY OK: depth=0, C=RU, ST=OLG, L=Olginka, O=CMP, OU=*****, CN=Server, name=server, emailAddress=********@gmail.com
Thu Jun 25 20:24:02 2015 Data Channel Encrypt: Cipher ‘AES-256-CBC’ initialized with 256 bit key
Thu Jun 25 20:24:02 2015 Data Channel Encrypt: Using 160 bit message hash ‘SHA1’ for HMAC authentication
Thu Jun 25 20:24:02 2015 Data Channel Decrypt: Cipher ‘AES-256-CBC’ initialized with 256 bit key
Thu Jun 25 20:24:02 2015 Data Channel Decrypt: Using 160 bit message hash ‘SHA1’ for HMAC authentication
Thu Jun 25 20:24:02 2015 Control Channel: TLSv1, cipher TLSv1/SSLv3 AES256-SHA, 2048 bit RSA
Thu Jun 25 20:24:02 2015 [Server] Peer Connection Initiated with [AF_INET]***,***,***,***:1194
Thu Jun 25 20:24:03 2015 MANAGEMENT: >STATE:1435253043,GET_CONFIG.
Thu Jun 25 20:24:04 2015 SENT CONTROL [Server]: ‘PUSH_REQUEST’ (status=1)
Thu Jun 25 20:24:09 2015 SENT CONTROL [Server]: ‘PUSH_REQUEST’ (status=1)
Thu Jun 25 20:24:15 2015 SENT CONTROL [Server]: ‘PUSH_REQUEST’ (status=1)
Thu Jun 25 20:24:15 2015 PUSH: Received control message: ‘PUSH_REPLY,ping 20,ping-restart 60,route-gateway 192.168.42.1,ifconfig 192.168.42.20 255.255.255.0’
Thu Jun 25 20:24:15 2015 OPTIONS IMPORT: timers and/or timeouts modified
Thu Jun 25 20:24:15 2015 OPTIONS IMPORT: —ifconfig/up options modified
Thu Jun 25 20:24:15 2015 OPTIONS IMPORT: route-related options modified
Thu Jun 25 20:24:15 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Thu Jun 25 20:24:15 2015 MANAGEMENT: >STATE:1435253055,ASSIGN_IP,,192.168.42.20,
Thu Jun 25 20:24:15 2015 open_tun, tt->ipv6=0
Thu Jun 25 20:24:15 2015 TAP-WIN32 device [Подключение по локальной сети 2] opened: \.Global
Thu Jun 25 20:24:15 2015 TAP-Windows Driver Version 9.21
Thu Jun 25 20:24:15 2015 Notified TAP-Windows driver to set a DHCP IP/netmask of 192.168.42.20/255.255.255.0 on interface
Thu Jun 25 20:24:15 2015 Successful ARP Flush on interface [16]
Thu Jun 25 20:24:17 2015 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Thu Jun 25 20:24:17 2015 MANAGEMENT: >STATE:1435253057,ADD_ROUTES.
Thu Jun 25 20:24:17 2015 C:Windowssystem32route.exe ADD 192.168.20.0 MASK 255.255.254.0 192.168.42.1
Thu Jun 25 20:24:17 2015 env_block: add PATH=C:WindowsSystem32;C:WINDOWS;C:WINDOWSSystem32Wbem
Thu Jun 25 20:24:17 2015 Initialization Sequence Completed
Thu Jun 25 20:24:17 2015 MANAGEMENT: >STATE:1435253057,CONNECTED,SUCCESS,192.168.42.20,***,***,***,***
зачем мне лог внутри сети )
лучше скриншоты давайте микротика вашего )