Home » Mikrotik » Настройка openvpn client на mikrotik с заменой шлюза

Настройка openvpn client на mikrotik с заменой шлюза

Мне понадобилось использовать роутер mikrotik в качестве клиента openvpn с заменой шлюза по-умолчанию на сервер openvpn. Проще говоря мне нужно было скрыть весь трафик и направить его только через vpn сервер. В openvpn это реализуется очень просто, достаточно на сервере указать для конкретного пользователя параметр redirect-gateway def1. На клиенте под windows это без проблем работает. В микротике пришлось разбираться.

Введение

Расскажу для чего мне это нужно. Есть оператор 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:

Загрузка openvpn сертификата

Потом идем в System -> Сertificates и имортируем по очереди сначала сертификат, а потом приватный ключ:

Импорт клиентских сертификатов

Обращаю внимание на символы KT слева от названий сертификатов. Они обязательно должны быть у вас. Если сертификат и приватный ключ не соответствуют друг другу, то одного символа не будет. В моем примере уже есть 2 сертификата только потому, что я экспериментировал с двумя. Вам достаточно будет одного.

Дальше идем настраивать параметры сервера. Открываем разздел PPP, нажимаем на плюс и выбираем OVPN Client:

Добавление подключения к openvpn серверу

На вкладке General можно ничего не указывать, использовать все по-умолчанию. На следующей вкладке Dial Out указываем адрес vpn сервера, порт, на котором он принимает входящие соединения и сертификат. Все остальное можно не трогать. В поле User можно писать все, что угодно.

Настройка подключения openvpn client

Сохраняете подключение. Теперь клиент на микротике должен автоматически подключиться к openvpn серверу. Если этого не происходит, смотрите в чем проблема в логах на роутере или на сервере. На данном этапе все стандартно, должно заработать без проблем. Инструкций по этому вопросу в интернете море.

Замена шлюза по-умолчанию для маскировки всего трафика

Настройка на сервере для клиента, которая указывает заменять шлюз по-умолчанию, на микротике не работает. Если указать в настройках openvpn сервера галочку на параметре Add Default Route, то тоже ничего работать не будет. Просто не будет пускать в интернет. Хотя для меня это было не понятно. По идее, это как раз то, что нужно. Не могу сейччас привести скриншот маршрутов, коотрые будут прописаны, если установить эту галку. Я пишу статью, подключившись к роутеру удаленно, скрин сделать не могу, потеряю доступ.

Я могу привести только гарантированно работающий вариант. Сейчас расскажу смысл проделанного и приведу список маршрутов, которые добавил.

  1. Первым делом создаем маршрут до openvpn сервера с Distance 1.
  2. Маршуруту по-умолчанию, который обеспечивает доступ в интернет через usb модем, назначаем Distance 2.
  3. Создаем новый маршрут по-умолчанию с Distance 1, где в качестве шлюза указано openvpn подключение.

После этого вы будете иметь доступ в интернет через usb модем напрямую, если openvpn client будет отключен. После подключения vpn клиента к серверу, стандартный маршрут становится неактивным, а по-умолчанию становится новый маршрут со шлюзом в качестве vpn соединения. Весь ваш трафик будет замаскирован vpn соединением и пойдет через openvpn сервер.

Настройка маршрутов для vpn

Описание маршрутов
0.0.0.0/0192.168.8.1Стандартный маршрут по-умолчанию, когда не подключен openvpn
0.0.0.0/0ovpn-out1Маршрут по-умолчанию через vpn сервер
10.8.0.0/2410.8.0.21Автоматически создаваемый маршрут для подссети vpn тоннелей
10.8.0.21ovpn-out1То же самое, автоматически создаваемый маршрут
94.142.141.246192.168.8.1Маршрут к openvpn server через usb модем
192.168.7.0/24bridge1Маршурт для локальной сети, создается автоматически
192.168.8.0/24lte1Маршрут до 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
Когда будете настраивать, не забудте включить NAT на openvpn интерфейсе, так же как у вас он настроен на основном.

Заключение

С такими настройками мне удалось обеспечить интернетом весь загородный дом с помощью симки йоты для смартфона, usb модема, внешней антенны для усиления сигнала и роутера mikrotik. Ссылку на подробный рассказ о моей конфигурации я привел в начале статьи. Без антенны вообще без вариантов было, еле-еле ловил 3g. С антенной стал ловить 4g со скоростью до 5-ти мегабит, если вышка не забита. В час пик скорость все равно не очень, но хоть что-то. Дом далеко от вышек сотовых сетей, без антенны интернет не работает ни у одного оператора.

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте Курсы по ИТ. Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области.


Помогла статья? Есть возможность отблагодарить автора

11 комментариев

  1. Подскажите, Mikrotik так и не поддеерживает UDP и lzo?
    Я так понимаю, если настраивать OpenVPN сервер на CentOS по вашему руководству, то надо отключать сжатие и ставить tcp?

    • К сожалению, да. Ни lzo, ни udp. Скорее всего никогда не будет. Не знаю, по какой причине. Из-за этого использовать микротик с openvpn не очень удобно. Приходится использовать tcp и отдельные туннели под него делать.

  2. Еще вопрос.
    Не могу понять в чем дело, предполагаю, что где-то в настройках.
    Микротик поднял соединение, сам он пингует впн сервер и сеть за сервером, но компьютер, подключенный через микротик спосбен пинговать только адрес впн сервера, а все что за ним не отвечает.
    Т.е. к примеру:
    компьютер 1.2 адрес, микротик 1.1 адрес.
    впн сервер 2.1 адрес а компьютер за впн сервером 2.2 адрес.
    С микротика я без проблем пингую 2.1 и 2.2. С компьютера за микротиком я могу пинговать только 2.1. 2.2 мне уже не отвечает.
    А на той стороне я что с впн сервера пингую микротик и компьютер за ним, что с компьютера за микротиком все без проблем.

    Что я делаю не так?

    • Если я правильно понял, то нужно на микротике сделать NAT для vpn интерфейса, чтобы компьютеры в локальной сети микротика видели все, что за ним по vpn. По описанной тобой схеме получается, что NAT не настроен.

    • Сам отвечу.

      Не плохо было бы прописать обратный маршрут на той машине, которую пингуешь…

  3. Константин

    Если поставить антенну с хорошим коэффициентом усиления и боксом для модема, то скорость будет еще выше. В кабеле от антенны до модема, как правило, большие потери.

  4. Заинтересовала статья. Точнее, способ борьбы с алчной жадностью сот.операторов.
    Одного не нашёл или просмотрел…
    Прошу показать/научить, как в этом микротике зафиксировать ttl, чтоб при работе через 4G-модем, вставленном в микротик, сот.оператор не мог по разным значениям ttl определить, что инет расшаривается на разные устройства.
    В модеме ttl, вроде, зафиксировал сейчас патчем с форума 4pda, нужно время для тестов.
    Но в запасе хочется иметь способ фиксации ttl в самом микротике.
    Может быть, даже раскошелюсь на него… Вынашиваю соединить через OpenVPN две локалки, одна на проводном безлимите, вторая — дом за городом на 4G.

    • Как в микротике зафиксировать ttl не знаю, не интересовался. У меня патч в модеме стоит.

  5. Сделано всё как здесь, кроме ovpn.
    OPVN использую без сертификата для клиента. Соединение (на пример) с работы проходит, через модем не соединяет.
    Может ли быть проблема в том что соединение устанавливается без сертификатов, и поэтому просто блочится со стороны оператора?
    Т.е. правда ли что если использовать сертификаты, то оператор отличить трафик от открытия обычной https странички не сможет, соответственно пропустит соединение?

    • Может быть все, что угодно. Я наблюдал несколько раз ситуацию, когда через yota вообще не мог по openvpn подключаться. Причем длилось это несколько дней. Я думал, что вообще закрыли vpn соединения, но потом все опять работало. Так что наверняка не скажешь, в чем может быть причина.

Добавить комментарий

Ваш e-mail не будет опубликован.