Мне понадобилось использовать роутер mikrotik в качестве клиента openvpn с заменой шлюза по-умолчанию на сервер openvpn. Проще говоря мне нужно было скрыть весь трафик и направить его только через vpn сервер. В openvpn это реализуется очень просто, достаточно на сервере указать для конкретного пользователя параметр redirect-gateway def1. На клиенте под windows это без проблем работает. В микротике пришлось разбираться.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Содержание:
Данная статья является частью единого цикла статьей про Mikrotik.
Введение
Расскажу для чего мне это нужно. Есть оператор Yota с безлимитным интернетом за разумные деньги. У них есть разные тарифы в зависимости от устройства, в котором используется симка. Самый дешевый тариф для смартфона. Я купил обычный USB модем, разлочил его, чтобы он работал в сети Yota. Перепрошил специальной прошивкой, чтобы он стал похож на смартфон. Пишу очень просто, потому что не хочется на этом останавливаться. Это совсем другая тема. В интернете есть много информации на тему обхода блокировок yota. Подробнее об этом я рассказал отдельно в материале Настройка интернета в загородном доме — mikrotik + usb 4g lte модем + антенна MIMO для усиления сигнала + yota.
Мне нужно было замаскировать весь трафик локальной сети, которая будет пользоваться интеренетом через usb модем. Yota различными способами пытается бороться с подобной работой. Делается это через определние TTL пакетов и анализ ресурсов, к которым обращаются пользователи. TTL легко изменяется на конечных устройствах, либо на самом роутере. С анализом ресурсов я долгое время боролся редактируя файл hosts, но после установки windows 10 это перестало помогать. Винда постоянно куда-то лезла и идентифицировала себя при этом как компьютер, а не смартфон.
Я решил кардинально решить проблему и завернуть весь локальный трафик в шифрованный vpn туннель. Для этого настроил openvpn сервер и сделал конфигурацию для учетной записи с заменой шлюза по-умолчанию на openvpn сервер. Дальше нужно было настроить на miktotik openvpn клиент таким образом, чтобы он весь трафик заворачивал в vpn. Когда используешь windows клиент, ничего настраивать не надо. Указываешь на openvpn сервере настройку у клиента:
push "redirect-gateway def1 bypass-dhcp"
И все, при подключении все маршруты прописываются как надо и твой внешний ip при серфинге становится равен ip адресу openvpn сервера. Весь трафик идет в тоннель. На микротике это не работало, маршруты надо было писать вручную. Получилось у меня не сразу, расскажу обо всем по порядку.
Настройка openvpn клиента на mikrotik
Настраиваем стандартным образом подключение openvpn клиента к серверу с авторизацией по сертификату. Для этого берем сертификат и приватный ключ для openvpn клиента и копируем на микротик через стандартное средство просмотра файлов Files:
Потом идем в System -> Сertificates и имортируем по очереди сначала сертификат, а потом приватный ключ:
Обращаю внимание на символы KT слева от названий сертификатов. Они обязательно должны быть у вас. Если сертификат и приватный ключ не соответствуют друг другу, то одного символа не будет. В моем примере уже есть 2 сертификата только потому, что я экспериментировал с двумя. Вам достаточно будет одного.
Дальше идем настраивать параметры сервера. Открываем разздел PPP, нажимаем на плюс и выбираем OVPN Client:
На вкладке General можно ничего не указывать, использовать все по-умолчанию. На следующей вкладке Dial Out указываем адрес vpn сервера, порт, на котором он принимает входящие соединения и сертификат. Все остальное можно не трогать. В поле User можно писать все, что угодно.
Сохраняете подключение. Теперь клиент на микротике должен автоматически подключиться к openvpn серверу. Если этого не происходит, смотрите в чем проблема в логах на роутере или на сервере. На данном этапе все стандартно, должно заработать без проблем. Инструкций по этому вопросу в интернете море.
Замена шлюза по-умолчанию для маскировки всего трафика
Настройка на сервере для клиента, которая указывает заменять шлюз по-умолчанию, на микротике не работает. Если указать в настройках openvpn сервера галочку на параметре Add Default Route, то тоже ничего работать не будет. Просто не будет пускать в интернет. Хотя для меня это было не понятно. По идее, это как раз то, что нужно. Не могу сейччас привести скриншот маршрутов, коотрые будут прописаны, если установить эту галку. Я пишу статью, подключившись к роутеру удаленно, скрин сделать не могу, потеряю доступ.
Я могу привести только гарантированно работающий вариант. Сейчас расскажу смысл проделанного и приведу список маршрутов, которые добавил.
- Первым делом создаем маршрут до openvpn сервера с Distance 1.
- Маршуруту по-умолчанию, который обеспечивает доступ в интернет через usb модем, назначаем Distance 2.
- Создаем новый маршрут по-умолчанию с Distance 1, где в качестве шлюза указано openvpn подключение.
После этого вы будете иметь доступ в интернет через usb модем напрямую, если openvpn client будет отключен. После подключения vpn клиента к серверу, стандартный маршрут становится неактивным, а по-умолчанию становится новый маршрут со шлюзом в качестве vpn соединения. Весь ваш трафик будет замаскирован vpn соединением и пойдет через openvpn сервер.
0.0.0.0/0 | 192.168.8.1 | Стандартный маршрут по-умолчанию, когда не подключен openvpn |
0.0.0.0/0 | ovpn-out1 | Маршрут по-умолчанию через vpn сервер |
10.8.0.0/24 | 10.8.0.21 | Автоматически создаваемый маршрут для подссети vpn тоннелей |
10.8.0.21 | ovpn-out1 | То же самое, автоматически создаваемый маршрут |
94.142.141.246 | 192.168.8.1 | Маршрут к openvpn server через usb модем |
192.168.7.0/24 | bridge1 | Маршурт для локальной сети, создается автоматически |
192.168.8.0/24 | lte1 | Маршрут до usb модема, создается автоматически |
- 192.168.8.1 - адрес usb модема, 192.168.8.100 - адрес микротика на lte интерфейсе, к которому подключен модем
- 192.168.7.1 - адрес микротика в локальной сети
- 10.8.0.21 - адрес vpn тоннеля для данного клиента, адрес самого клиента при этом 10.8.0.22
- 94.142.141.246 - openvpn server
Заключение
С такими настройками мне удалось обеспечить интернетом весь загородный дом с помощью симки йоты для смартфона, usb модема, внешней антенны для усиления сигнала и роутера mikrotik. Ссылку на подробный рассказ о моей конфигурации я привел в начале статьи. Без антенны вообще без вариантов было, еле-еле ловил 3g. С антенной стал ловить 4g со скоростью до 5-ти мегабит, если вышка не забита. В час пик скорость все равно не очень, но хоть что-то. Дом далеко от вышек сотовых сетей, без антенны интернет не работает ни у одного оператора.
Напоминаю, что данная статья является частью единого цикла статьей про Mikrotik.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Поддержки тлс нет. игрушка..
https://forum.mikrotik.com/viewtopic.php?t=95304
Zerox, привет.
Подскажи. Есть схема дом-дача. Дома развернут виртуальный Mikrotik CHR. На даче Mikrotik hEX, выступающий в роли роутера.
Проблема в том, что не могу из дома увидеть камеры, находящиеся за hEX-ом.
На CHR развернут OVPN-сервер. На hEX-е развернул OVPN-клиент.
При подключении клиента с ПК и клиента hEX с дачи на сервере вижу подключения и адреса. Соединение вроде есть. Но пинг только односторонний работает (от сервера к клиенту hEX). Дальше за ним ничего не видит. И начинает сильно проседать интернет.
Проблема доступности хостов через vpn соединения это всегда вопрос настройки файрвола и маршрутов. Больше там не на что смотреть. Проверяйте на каждом узле эти два параметра. Где-то либо маршрута не хватает, либо файрвол блокирует пакеты.
Спасибо. Покопаю файрвол.
А чтобы сеть за клиентом видеть ничего шаманить не надо дополнительно?
Нет. Главное, чтобы маршруты были в обе стороны на всех клиентах.
Дело не в файрволе :(
Прочитал https://serveradmin.ru/bazovaya-nastrojka-firewall-v-mikrotik/. Заменил свои стандартные правила на твои - безрезультатно.
Напрягает, что когда дома подключаю с ПК ovpn-клиента, то в интерфейсе появляется "OVPN Server Binding", а когда поднимается клиент на даче на hEX-е, то такого интерфейса нет :(
спасибо за инструкцию!
а где бы посмотреть ошибки, если коннект не поднимается?
Какой именно коннект?
ovpn, который мы создали по инструкции
Добрый день! Отличная инструкция!
@Zerox а можно ли только часть клиентов пустить по овпн, когда на микротик n-ое количество клиентов?
Вряд ли. Даже теоретически не представляю, как это сделать на Mikrotik.
А какие проблемы? Просто маркировка маршрута. Аналогично тому, как при том же MultiWan.
В теории то да, но реализовывать как? Надо считать количество клиентов. Это всё можно реализовать через скрипты, но нужно хорошо в них разбираться. Думаю, я бы смог написать такой, но потратил бы много времени. Без постоянной практики скрипты под Микротик тяжело пишутся. Хотя иногда мне приходится это делать.
Видимо мы по разному поняли задачу. Как ее понял я: есть микротик, через который ходят в инет пользователи.
Часть из них нужно пустить через впн, часть напрямую. Проблемы не вижу. Создал адрес лист с адресами тех, кому нужно через впн. Для этого адрес листа маркируем траффик для отправки в впн канал, для остальных трафик оставляем по умолчанию в таблицу main.
Я так понял, что нужно пустить по ovpn часть клиентов, когда достигнуто какое-то число активных подключений. Если список статический, то конечно нет проблем. Но мне кажется, тут речь именно о динамическом списке идёт речь.
а как настроить на микротике клиента OpenVPN, если у меня есть файл настроек user.ovpn? Я пробовал создавать файлы сертификатов из кода этого файла( секции и . Также создал файл ключа (в файле .ovpn секция ). Там еще есть ключ 2048 bit OpenVPN static key - секция . Когда я импортирую эти сертификаты и ключ в микротик, то сообщает что ключ не совпадает с сертификатом. Может я что неправильно делаю. В общем можно ли таким путем на основании файла user.ovpn настроить микротик? Программа OpenVPN под windows и под Андроид с этим файлом работают нормально.
Можно, но не всегда. Mikrotik поддерживает ограниченный набор настроек openvpn. К примеру, если на сервере включено сжатие пакетов, или он работает по udp протоколу, то Микротик не сможет подключаться. Обычно для того, чтобы Микротик мог подключаться к openvpn серверу, его приходится настраивать строго определённым образом.
Настроил все - Mikrotik подключается к OpenVPN серверу на Ubuntu по UDP.
Если поставить галку Add Default Route, то трафик не идет вообще.
Если галку Add Default Route снять в настройках, то трафик идет, но не через VPN.
У меня нет LTE-модема, mikrotik получает белый IP от провайдера. Кто-то настраивал такую связку? Подскажите, "куда копать"? Ниже конфигурация OpenVPN сервера.
port 1194
proto udp
dev tun
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
verb 3
sndbuf 0
rcvbuf 0
persist-key
persist-tun
auth SHA512
cipher AES-256-CBC
client-to-client
https://skr.sh/sCGf3k2Z3dj
как такую ошибку лечить?
у меня 7 рос, овпн в режиме удп
client
nobind
dev tun
remote-cert-tls server
remote мой впс 3000 udp
-----BEGIN PRIVATE KEY----- ключ клиента
-----BEGIN CERTIFICATE----- серт клиента
-----BEGIN CERTIFICATE----- это корневой как я понял CA?
и тлс авторизация, как тогда мне с микротика подключиться?
key-direction 1
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
8d6dc0decd8d49a128795369ebdb5d14
75f124fa1c6c443abbb769c4eed5b14e
f8223df9ccde393d3b1a4dd498a41628
d5fcc06a607314d8a3219d93d5b70329
09d84ab7a75660e1d956fadc2488c912
ff81be52eb8c4dca8cbf833d5f68b5e4
6bd2e4fc0821140b7368287f732bb9b4
3fc637d2660642318f9153c23a8eb2b5
40fdfdcb84fb2f056022f09e4cbe9c1d
9fd7827e9d94b4bdfa9584d9ab0cec88
369689e2ae155bceb85114caca803aec
310ecac62d9be87054792f09a2991ef3
fce81675f5afad9750e6371c65132891
3eec4bef14e3a7a58ef4918679ea25d0
df7ab1f58fbccc3e03443ba0a576a50e
ef1d791bdc0351f8fb4b7b1909d3ffd0
-----END OpenVPN Static key V1-----
redirect-gateway def1
OpenVPN mikrotik не работает с UDP.
В 7-й версии RouterOS работает.
Добрый день
на прошивке микротика 7.1 beta 3 запустилось всё из коробки,
просто в OVPN ставим шлюз по умолчанию а у dhcp client(а) lte смотрим чтобы дистанция была 2
хотя, вроде, по умолчанию она тоже теперь 2 а не 1 как на прошлых версиях прошивки.
Всё сделали как у Вас в статье, но после ребута создаётся опять маршрут по умолчанию с через usb модем. И соответственно через впн не работает. Как сделать, чтобы этот маршрут не создавался?
разобрался, в настройках dhcp клиента от usb модема надо выставить distance 2 для маршрута по умолчанию
Приветствую. Прошу сказать, какую максимальную скорость можно достичь при таком решении с этим mikrotik'ом?
Например, если 4G-модем в ноуте, на speedtest.net показывает 40 Мб/сек на download и если всё сделать по вашей статье, то вытянет ли mikrotik все 40 Мб/сек ?
Тут вопрос только в том, вытянет ли именно эта модель роутера openvpn канал через tcp. Я не знаю точно, так как не проверял именно его. Я думаю, что да, так как другие модели микротов, но тоже бюджетные, у меня тянули каналы до 50-ти мегабит без проблем. Больше не проверял, так как не было таких внешних каналов на vpn.
Я так понимаю, эта статья годится при необходимости поднятия шифрованного vpn-канала между двумя точками?
Может посоветуете еще какие-то варианты для данной задачи?
А этот вариант чем плох? Подобную задачу можно решить с помощью практически любой реализации vpn. Например, с помощью openvpn.
Ну там чуть выше писали, что ovpn криво реализован на mikrotik, советовали EoIP.
Добрый день
микротик устанавливает соединение, получает ip адрес но маршрут почему-то для него не строит
10.8.0.0/24 10.8.0.21 Автоматически создаваемый маршрут для подссети vpn тоннелей
Через OpenVPN клиент под Windows работает нормально, куда можно посмотреть?
Посмотрел в Windows там шлюз не устанавливается https://s.mail.ru/4m4j/2YqKqFeG2
Не подскажите какие настройки надо прописать в server.conf чтобы он появился
ifconfig 10.8.0.1 255.255.255.0
push "route-gateway 10.8.0.1"
Не помогает
"Через OpenVPN клиент под Windows работает нормально, куда можно посмотреть?"
Вот сильно в этом сомневаюсь. Если бы так, микротик получил бы конфигурацию клиента и прописал у себя шлюзы для ВПН.
Попробуйте добавить маршрут для сервера:
route 10.8.0.1 255.255.255.0
Если не получится - забудьте на время о микротике и добейтесь чтобы с софтовым клиентом ваш ВПНсервер работал нормально.
И кстати, IP клиенту в клиентском файле у вас выдается?
ifconfig-push 10.8.0.5 255.255.255.0
Тут больше не о экономии, а о "ускорении" отображении "тяжелых" страниц. Ответ ваш понятен. Спасибо! С MTU не пробовали поиграться? Если да то при работе через Yota провайдера какой оптимальный вариант?
Не пробовал. У меня yota работает нормально с дефолтными настройками модема и микротика. Все лето на ней проработал на этой же конфигурации, только без маскировки трафика в vpn.
Добрый день!
Не пробовал при этой схеме еще добавить прокси с кешированием на USB флешку (для минимизации трафика передаваемого через VPN туннель)?
Ну нет, это уже слишком :) Последний раз я экономил трафик кэшированием, когда у меня был dial-up доступ в интернет с модемом. Сейчас можно так или иначе получить безлимитный интернет и не думать о трафике.
Привет!
Сорри, подскажи пожалуйста, как именно добавить правило использовать vpn над pppoe в качестве шлюза? http://prntscr.com/faa1dw
Спасибо большое заранее!
Наверняка не могу посоветовать, тут другое подключение, не как у меня, могут быть нюансы. Если возможно, то надо отказаться от получения шлюза по-умолчанию после подключения pppoe, затем создать маршрут по-умолчанию для этого соединения вручную, задать ему дистанс 2, потом сделать маршрут для openvpn, как у меня в статье и дать ему дистанс 1.
Спасибо, попробую
Здравствуйте!
А какой посоветуете сервер/сервис, чтобы через него по технологии OpenVpn весь траф прогонять? Скоро предстоит такая же задача...
Критерии - чтобы скорость не резалась сильно, и торренты всякие качались, и цена не заоблачная...
Да любой подойдет, который предлагает технологию openvpn. Стоит копейки. У меня есть vps за 250р. в месяц, я его использую. Можно зарегистрировать сервер на Amazon S3, там на год дают самый дешевый vps.
Добрый день. Извиняюсь за некропостинг, но может мне повезет с ответом =)
Есть 3 сети с микротиками, они соединены через vlan. На одном из микротиков есть белый ip и настроен openvpn. Клиент подключается по openvpn и видит только сеть на одном микротике.
192.168.1.0/24 (микротик с белым айпи), остальные 2 сети с микротиками на vlan: 192.168.0.0/24, 192.168.2.0/24
Сеть vlan 192.168.5.0/24.
Клиент подключается по 172.21.108.2.
Как сделать так, чтобы клиент видел все 3 сети? Понимаю, что нужно прописать маршруты, но уже каких только не прописывал, все равно не видит.
Маршруты где прописывал? Тут нужно явно прописать клиенту, что ходить в такие-то сети через vpn канал. Ну и доступ из vpn канала должен быть к этим сетям.
Проблему решило исправление маскарадинга и добавление сверху правила:
/ip firewall nat
add action=accept chain=srcnat comment=src_no_nat_lan dst-address=192.168.0.0/16 src-address=192.168.0.0/16
По мне так между микротиками поднимать openvpnтак это изврат, гораздо проще сделать EoIP и получить фактически единую сеть, а оттуда уже роути куда хочешь и с натом проблем нет.
Так у меня сервер vpn не микротик. А так конечно, микротик поддерживает openvpn через одно место. Если все устройства микротики, то в openvpn нет смысла.
А как сделать чтобы снаружи попадать на порты в локалке за mikrotik ,
Пробрасывать сначала на сервере vpn, а потом на самом микротике.
Сделано всё как здесь, кроме ovpn.
OPVN использую без сертификата для клиента. Соединение (на пример) с работы проходит, через модем не соединяет.
Может ли быть проблема в том что соединение устанавливается без сертификатов, и поэтому просто блочится со стороны оператора?
Т.е. правда ли что если использовать сертификаты, то оператор отличить трафик от открытия обычной https странички не сможет, соответственно пропустит соединение?
Может быть все, что угодно. Я наблюдал несколько раз ситуацию, когда через yota вообще не мог по openvpn подключаться. Причем длилось это несколько дней. Я думал, что вообще закрыли vpn соединения, но потом все опять работало. Так что наверняка не скажешь, в чем может быть причина.
Заинтересовала статья. Точнее, способ борьбы с алчной жадностью сот.операторов.
Одного не нашёл или просмотрел...
Прошу показать/научить, как в этом микротике зафиксировать ttl, чтоб при работе через 4G-модем, вставленном в микротик, сот.оператор не мог по разным значениям ttl определить, что инет расшаривается на разные устройства.
В модеме ttl, вроде, зафиксировал сейчас патчем с форума 4pda, нужно время для тестов.
Но в запасе хочется иметь способ фиксации ttl в самом микротике.
Может быть, даже раскошелюсь на него... Вынашиваю соединить через OpenVPN две локалки, одна на проводном безлимите, вторая - дом за городом на 4G.
Как в микротике зафиксировать ttl не знаю, не интересовался. У меня патч в модеме стоит.
IP->Firewall->Mangle. Создаешь правило в цепочке postrouting на Out Interface=(интерфейс модема, тот где нужно ttl установить). В Action выбираешь Change TTL. Ниже появится варианты зафиксить ттл на определенном числе 64(если модем как ppp-out интерфейс) или 65(если модем отображается как lte интерфейс).
Но я бы порекомендовал вместо фиксации выполнить инкремент на 1(если модем как ppp-out интерфейс) или 2(если можем отображается как lte интерфейс) -> тогда будет работать tracert(tracertroute). Если не хотите заморачиваться, то ставьте фиксированный
Спасибо. Полезная инфа, в будущем пригодится, возможно.
Если поставить антенну с хорошим коэффициентом усиления и боксом для модема, то скорость будет еще выше. В кабеле от антенны до модема, как правило, большие потери.
Еще вопрос.
Не могу понять в чем дело, предполагаю, что где-то в настройках.
Микротик поднял соединение, сам он пингует впн сервер и сеть за сервером, но компьютер, подключенный через микротик спосбен пинговать только адрес впн сервера, а все что за ним не отвечает.
Т.е. к примеру:
компьютер 1.2 адрес, микротик 1.1 адрес.
впн сервер 2.1 адрес а компьютер за впн сервером 2.2 адрес.
С микротика я без проблем пингую 2.1 и 2.2. С компьютера за микротиком я могу пинговать только 2.1. 2.2 мне уже не отвечает.
А на той стороне я что с впн сервера пингую микротик и компьютер за ним, что с компьютера за микротиком все без проблем.
Что я делаю не так?
Если я правильно понял, то нужно на микротике сделать NAT для vpn интерфейса, чтобы компьютеры в локальной сети микротика видели все, что за ним по vpn. По описанной тобой схеме получается, что NAT не настроен.
Сам отвечу.
Не плохо было бы прописать обратный маршрут на той машине, которую пингуешь...
А как машина 2.2 пинговала 1.2, если на ней не было маршрута?
Подскажите, Mikrotik так и не поддеерживает UDP и lzo?
Я так понимаю, если настраивать OpenVPN сервер на CentOS по вашему руководству, то надо отключать сжатие и ставить tcp?
К сожалению, да. Ни lzo, ни udp. Скорее всего никогда не будет. Не знаю, по какой причине. Из-за этого использовать микротик с openvpn не очень удобно. Приходится использовать tcp и отдельные туннели под него делать.