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

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

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Данная статья является частью единого цикла статьей про 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:

Загрузка 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/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
Когда будете настраивать, не забудте включить NAT на openvpn интерфейсе, так же как у вас он настроен на основном.

Заключение

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

Напоминаю, что данная статья является частью единого цикла статьей про Mikrotik.

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

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

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

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

  1. Добрый день
    на прошивке микротика 7.1 beta 3 запустилось всё из коробки,
    просто в OVPN ставим шлюз по умолчанию а у dhcp client(а) lte смотрим чтобы дистанция была 2
    хотя, вроде, по умолчанию она тоже теперь 2 а не 1 как на прошлых версиях прошивки.

  2. Никита

    Всё сделали как у Вас в статье, но после ребута создаётся опять маршрут по умолчанию с через usb модем. И соответственно через впн не работает. Как сделать, чтобы этот маршрут не создавался?

    • Аноним

      разобрался, в настройках dhcp клиента от usb модема надо выставить distance 2 для маршрута по умолчанию

  3. Андрей

    Приветствую. Прошу сказать, какую максимальную скорость можно достичь при таком решении с этим mikrotik'ом?
    Например, если 4G-модем в ноуте, на speedtest.net показывает 40 Мб/сек на download и если всё сделать по вашей статье, то вытянет ли mikrotik все 40 Мб/сек ?

    • Тут вопрос только в том, вытянет ли именно эта модель роутера openvpn канал через tcp. Я не знаю точно, так как не проверял именно его. Я думаю, что да, так как другие модели микротов, но тоже бюджетные, у меня тянули каналы до 50-ти мегабит без проблем. Больше не проверял, так как не было таких внешних каналов на vpn.

  4. Валерий

    Я так понимаю, эта статья годится при необходимости поднятия шифрованного vpn-канала между двумя точками?
    Может посоветуете еще какие-то варианты для данной задачи?

    • А этот вариант чем плох? Подобную задачу можно решить с помощью практически любой реализации vpn. Например, с помощью openvpn.

      • Валерий

        Ну там чуть выше писали, что ovpn криво реализован на mikrotik, советовали EoIP.

  5. Андрей

    Добрый день
    микротик устанавливает соединение, получает 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

  6. Александр

    Тут больше не о экономии, а о "ускорении" отображении "тяжелых" страниц. Ответ ваш понятен. Спасибо! С MTU не пробовали поиграться? Если да то при работе через Yota провайдера какой оптимальный вариант?

    • Не пробовал. У меня yota работает нормально с дефолтными настройками модема и микротика. Все лето на ней проработал на этой же конфигурации, только без маскировки трафика в vpn.

  7. Александр

    Добрый день!
    Не пробовал при этой схеме еще добавить прокси с кешированием на USB флешку (для минимизации трафика передаваемого через VPN туннель)?

    • Ну нет, это уже слишком :) Последний раз я экономил трафик кэшированием, когда у меня был dial-up доступ в интернет с модемом. Сейчас можно так или иначе получить безлимитный интернет и не думать о трафике.

  8. Александр

    Привет!

    Сорри, подскажи пожалуйста, как именно добавить правило использовать vpn над pppoe в качестве шлюза? http://prntscr.com/faa1dw

    Спасибо большое заранее!

    • Наверняка не могу посоветовать, тут другое подключение, не как у меня, могут быть нюансы. Если возможно, то надо отказаться от получения шлюза по-умолчанию после подключения pppoe, затем создать маршрут по-умолчанию для этого соединения вручную, задать ему дистанс 2, потом сделать маршрут для openvpn, как у меня в статье и дать ему дистанс 1.

  9. Евгений

    Здравствуйте!

    А какой посоветуете сервер/сервис, чтобы через него по технологии OpenVpn весь траф прогонять? Скоро предстоит такая же задача...
    Критерии - чтобы скорость не резалась сильно, и торренты всякие качались, и цена не заоблачная...

    • Да любой подойдет, который предлагает технологию openvpn. Стоит копейки. У меня есть vps за 250р. в месяц, я его использую. Можно зарегистрировать сервер на Amazon S3, там на год дают самый дешевый vps.

  10. Владимир

    Добрый день. Извиняюсь за некропостинг, но может мне повезет с ответом =)
    Есть 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

  11. По мне так между микротиками поднимать openvpnтак это изврат, гораздо проще сделать EoIP и получить фактически единую сеть, а оттуда уже роути куда хочешь и с натом проблем нет.

    • Так у меня сервер vpn не микротик. А так конечно, микротик поддерживает openvpn через одно место. Если все устройства микротики, то в openvpn нет смысла.

  12. Максим

    А как сделать чтобы снаружи попадать на порты в локалке за mikrotik ,

  13. Андрей

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

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

  14. Андрей

    Заинтересовала статья. Точнее, способ борьбы с алчной жадностью сот.операторов.
    Одного не нашёл или просмотрел...
    Прошу показать/научить, как в этом микротике зафиксировать 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). Если не хотите заморачиваться, то ставьте фиксированный

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

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

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

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

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

    • Сам отвечу.

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

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

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

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

Ваш адрес email не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.