Home » Mikrotik » Настройка vpn (l2tp+Ipsec, openvpn и др.) сервера в микротике

Настройка vpn (l2tp+Ipsec, openvpn и др.) сервера в микротике

Обзорная статья на тему использования современных приватных тоннелей в роутерах популярной латвийской марки. Я расскажу о том, как настроить vpn сервер в mikrotik на базе таких технологий как l2tp, ipsec, openvpn, pptp, gre и eoip. Попутно кратко расскажу о том, что это за технологии, чем они отличаются, а так же проведу сравнение производительности микротика со всеми указанными тоннелями.

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

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

Введение

Сразу хочу обратить внимание, что эта статья будет скорее обзорной, нежели передачей реального опыта, так как сам я чаще всего использую в качестве vpn сервера openvpn. Тем не менее с vpn в микротик тоже приходилось сталкиваться. Настраивал как pptp сервера для подключения удаленных клиентов, так и l2tp для объединения двух и более микротиков в общую приватную сеть. В основном по дефолту, не вникая в тонкости настроек.

Сегодня хочу рассмотреть этот вопрос более внимательно и посмотреть, что вообще предлагает микротик из коробки для настройки vpn соединений. Своими исследованиями я и хочу поделиться с вами, написав небольшой обзор на тему средств организации vpn сервера в mikrotik. А попутно хочу собрать отзывов и исправлений на тему написанного, чтобы укрепить свои знания. В комментариях к своим статьям я черпаю массу советов, за что благодарен всем писавшим полезные вещи. Так что замечания, дополнения и исправления категорически приветствуются.

Для тех, кто хочет хорошо разбираться в сетях, но пока по какой-то причине не умеет этого, рекомендую вот этот цикл статей — сети для самых маленьких.

Варианты vpn сервера в микротике

С вариантами vpn сервера в микротике все сложно :) В том плане, что есть много реализаций vpn, которую не так просто выбрать, если не разбираешься детально в сетевых технологиях. Я не сильно в них разбираюсь, но как мне кажется, немного улавливаю суть. Постараюсь вам объяснить своими словами, в чем отличия.

Существуют 2 принципиально разных решения для организации соединений между двумя микротиками и внешними абонентами:

  1. Создание l2 туннеля типа site-to-site с помощью EOIP Tunnel. Самый простой и быстрый способ объединить два микротика. Если не будет использовано шифрование, то получатся  самые быстрые vpn подключения. Необходимы выделенные белые ip адреса на обоих устройствах. Такие соединения используют для объединения офисов или филиалов по vpn. В общем случае не работает через NAT. Сюда так же добавлю GRE Tunnel, хотя он работает в l3 и использует маршрутизацию, но работает так же по принципу site-to-site.
  2. VPN соединения уровня l3 на технологии Клиент-Сервер, типа PPTP, L2TP, SSTP, OpenVPN. Такие соединения используются как для объединения офисов, так и для подключения удаленных сотрудников. Достаточно только одного белого ip адреса на стороне сервера для создания vpn соединений. Работает через NAT.

Расскажу немного подробнее о каждом из типов vpn соединений отдельно.

  • GRE Tunnel — использует простой протокол gre для построения базового незащищенного site-to-site VPN. Разработан компанией CISCO. Позволяет инкапсулировать пакеты различного типа внутри ip туннелей. Простыми словами вот что он делает. Берет ваши данные со всеми заголовками, упаковывает в пакет, передает по интернету  на другой конец, где этот пакет обратно разбирается на исходные данные. Для конечных пользователей сети все это выглядит, как-будто они общаются через локальную сеть.
  • EOIP Tunnel — Ethernet over IP — это проприетарный протокол MikroTik RouterOS, который создает туннель Ethernet между двумя маршрутизаторами поверх IP-соединения. Для передачи данных использует GRE протокол. Принципиальное отличие eoip tunnnel в том, что он работает в l2 и передает напрямую фреймы, тогда как gre tunnel оперирует пакетами и использует маршрутизацию. Надеюсь правильно объяснил и не соврал. Для чего mikrotik решили создать свою реализацию туннеля через gre протокол, не знаю. Возможно, похожих решений просто нет, вот они и придумали свою реализацию.
  • PPTP — туннельный протокол типа точка-точка (Point-to-Point Tunneling Protocol). Для работы использует GRE протокол, поддерживает шифрование. В свое время pptp обрел большую популярность из-за того, что его из коробки поддерживала Windows начиная с версии 95. На сегодняшний день pptp использовать не рекомендуется, так как он очень легко взламывается. Из дампа трафика за короткое время (несколько часов) достается ключ шифрования и расшифровывается весь трафик. Возможно, с этим как-то можно бороться, используя разные протоколы шифрования, но я не разбирался подробно с этой темой. Для себя решил, что pptp можно использовать как самое простое решение там, где нет повышенных требований к безопасности и расшифровка трафика, если таковая и случится, не принесет никаких проблем. PPTP поддерживает из коробки не только Windows но и Android, что очень удобно. Настраивается очень просто.
  • L2TP — Layer 2 Tunneling Protocol. Несмотря на то, что в названии указано l2, реально в ip сети он работает на сеансовом уровне, то есть l3. Использует в работе udp порт 1701. Может работать не только в IP сетях. Из коробки, как и pptp, поддерживает аутентификацию пользователей. Сам по себе не обеспечивает шифрование. Для шифрования трафика может использовать ipsec, который считается очень безопасным и не имеет серьезных уязвимостей. В настоящее время поддерживается практически всеми устройствами и системами из коробки, как и pptp. Настраивать не сильно сложнее. В общем случае, для организации vpn рекомендую использовать именно этот тип шифрованного тоннеля.
  • OpenVPN — это очень популярная реализация шифрованных соединений. Главное достоинство — гибкость настроек. К примеру, очень крутая возможность openvnp — пушить маршруты напрямую клиенту при подключении. Я долгое время использовал openvpn серверы. Когда первый раз понадобилось передать клиенту pptp маршрут, никак не мог понять, как это настроить. Оказалось, что никак, он это просто не умеет. Пришлось настраивать сторонними инструментами. К сожалению, по непонятным причинам, в mikrotik openvpn не поддерживает протокол udp, что очень сужает возможности использования этого vpn сервера. По tcp он работает гораздо медленнее, чем по udp. Так же не работает сжатие заголовков пакетов. Так что в общем случае использовать openvpn сервер в микротик не имеет смысла, если только он не нужен вам по каким-то конкретным причинам.
  • SSTP — Протокол безопасного туннелирования сокетов (Secure Socket Tunneling Protocol) – был представлен Microsoft в Windows Vista SP1. Основной плюс в том, что он интегрирован в Windows, может использовать 443 порт, что иногда помогает обходить фаерволы. Считается очень безопасным, использует SSL 3.0. Из минусов, насколько я знаю, в микротике очень требователен к ресурсам процессора. На слабеньких железках будет выдавать самую низкую скорость по сравнению со всеми остальными соединениями по vpn. По этой причине я его не буду рассматривать в своем обзоре совсем.

Из всего написанного можно сделать такой вывод. В общем случае лучше всего в микротике использовать vpn на базе l2tp + ipsec. Основные причины:

  1. Простота и удобство настройки.
  2. Надежное шифрование.
  3. Поддержка l2tp соединений практически всеми современными устройствами и системами. Нет необходимости ставить дополнительное программное обеспечение.
  4. Подходит как для объединения офисов, так и для удаленных сотрудников — site-to-site и client-to-site подключения.

Если вам нужно максимальное быстродействие без шифрования, то стройте соединения между сетями или офисами с помощью EOIP Tunnel — фирменной разработки компании Mikrotik.

Дальше я покажу, как настроить все описанные туннели, кроме SSTP и произведу замеры скорости для сравнения. Мой тестовый стенд из двух Mikrotik RB951G-2hnD будет иметь следующие настройки.

m-serverимя микротика, выступающего в роли сервера
m-remoteимя микротика, выступающего в роли удаленного маршрутизатора
192.168.13.1WAN ip адрес на m-server
192.168.13.197WAN ip адрес на m-remote
10.20.1.0/24локальная сеть за m-server
10.30.1.0/24локальная сеть за m-remote
10.10.5.1-10.10.5.100vpn сеть

Приступим к настройке и тестированию vpn соединений в mikrotik.

Настройка l2tp туннеля в mikrotik

Для начала настроим простой l2tp туннель без шифрования и замерим скорость. Для настройки l2tp vpn в mikrotik выполните следующую последовательность действий.

Идем в раздел IP -> Pool и добавляем пул ip адресов для vpn туннеля.

Настройка ip пула для l2tp туннеля

Создаем профиль для туннеля в PPP -> Profiles.

l2tp профиль с настройками

На остальных вкладках настройки дефолтные. Далее создаем пользователя в PPP -> Secrets.

Добавление пользователя l2tp

Теперь запускаем l2tp сервер. Идем в PPP и жмем в кнопку L2TP Server.

Настройка l2tp сервера

Устанавливаем настройки для l2tp сервера. ipsec пока не включаем.

Запуск l2tp server

VPN сервер настроен. Теперь создадим для него постоянный интерфейс, чтобы на его основе создавать статические маршруты. Идем в Interfaces и создаем L2tp Server Binding.

L2tp Server Binding

Последний штрих. Создаем статический маршрут, с помощью которого абоненты локальной сети сервера смогут подключаться к абонентом локальной сети за удаленным роутером через vpn. Идем в IP -> Routes и добавляем маршрут.

Статический маршрут для сети за vpn

Я не рассмотрел вопрос настройки firewall, так как не хочется раздувать и так объемную статью. Напрямую это не относится к указанной теме. Подробнее читайте о настройке фаервола отдельно по приведенной ссылке. Здесь же только укажу, что необходимо открыть на firewall для корректной настройки l2tp.

На сервере необходимо создать следующие правила для фаерволла, чтобы мы могли достучаться до нашего L2TP сервера. IP -> Firewall -> Filter Rules. Необходимо создать разрешающее правило в цепочке input для следующих портов и протоколов:

  • Протокол: UDP
  • Разрешаем порты: 1701,500,4500
  • В качестве In.Interface указываем тот, через который происходит l2tp подключение.

Отдельно добавляем еще одно правило, разрешающее протокол ipsec-esc.

На сервере все готово. Идем настраивать l2pt клиент на удаленном микротике.

L2tp клиент

Здесь все достаточно просто. Идем в PPP и добавляем L2TP Client. Указываем настройки, которые задавали ранее на сервере.

Настройка l2tp client в Mikrotik

Добавляем статический маршрут, чтобы клиенты этого роутера знали, куда обращаться к абонентам удаленной локальной сети за vpn.

Маршрут из vpn в локальную сеть

На этом все. Мы настроили l2tp на удаленном микротике и таким образом объединили 2 локальных сети с помощью vpn. В списке ip адресов при активном l2tp соединении на сервере и клиенте вы должны увидеть ip адреса из заданного на сервере диапазона для vpn сети — 10.10.5.1-10.10.5.100. Теперь можно пропинговать с обоих сетей противоположные.

У меня для теста к обоим микротикам подключены ноутбуки. Сейчас я измерю скорость соединения с помощью iperf3. За роутером m-remote на ноутбуке 10.30.1.254 запускаю сервер, а на 10.20.1.3 агента. Запускаем тест скорости vpn соединения:

Тестирование скорости через l2tp vpn без шифрования

Средняя скорость 194 мбит/сек. Откровенно говоря, я не понял, почему такая низкая скорость. Мой тестовый стенд собран на двух роутерах микротиках и гигабитного микротик свитча между ними. Ожидал увидеть что-то в районе 500 мбит/сек. Напомню, что туннель пока без шифрования. При этом загрузка процессоров на роутерах была в районе 90-95%. То есть фактически потолок этих железок.

Попробуем теперь включить шифрование ipsec и замерить скорость с ним.

Настраиваем ipsec

С настройкой ipsec для l2tp я залип на некоторое время. В сети много инструкций, но все они устарели. Как оказалось, в последних версиях прошивок, запустить ipsec в дефолтных настройках не просто, а очень просто. Для этого надо всего лишь в свойствах l2tp сервера указать Use IPsec — yes и задать пароль.

Настройка l2tp + ipsec

Все необходимые настройки ipsec будут созданы автоматически. На агенте сделать то же самое — включить ipsec шифрование и указать пароль.

Настройка ipsec на клиенте

После подключения l2tp клиента увидите в логе похожие строки:

19:17:00 l2tp,ppp,info l2tp-out1: initializing... 
19:17:00 l2tp,ppp,info l2tp-out1: connecting... 
19:17:03 ipsec,info initiate new phase 1 (Identity Protection): 192.168.13.197[500]<=>192.168.13.1[500] 
19:17:04 ipsec,info ISAKMP-SA established 192.168.13.197[500]-192.168.13.1[500] spi:407844c0ceb5d2ab:46ce7ffb25495efd 
19:17:07 l2tp,ppp,info l2tp-out1: authenticated 
19:17:07 l2tp,ppp,info l2tp-out1: connected

Для того, чтобы убедиться, что шифрование ipsec работает, можно зайти в раздел IP -> Ipsec -> Installed SAs и посмотреть на счетчик зашифрованных пакетов. Если он растет, значит все в порядке, трафик шифруется.

Статистика шифрованного трафика

Там же в разделе Remote Peers можно посмотреть список удаленных клиентов, для которых работает ipsec шифрование, посмотреть используемые алгоритмы. Все дефолтные настройки ipsec живут в этом разделе. Вы можете посмотреть их, изменить или добавить новые профили. По-умолчанию используется алгоритм авторизации sha1 и шифрование AES. Можете изменить эти параметры, если разбираетесь в теме. Я умничать не буду, тему шифрования не копал. Какие алгоритмы максимально быстры и защищены — не знаю.

Проведем тесты скорость vpn соединения l2tp + ipsec.

Тестирование скорости vpn l2tp + ipsec на микротике

У меня получилось вот так — 26 мбит/сек в среднем. При этом загрузка процессора 100%. Не густо. Данные железки для шифрованных каналов пригодны очень слабо. В данных тестах они ничем, кроме непосредственно теста не нагружены. В реальных условиях скорость будет еще ниже.

С настройками vpn на базе l2tp + ipsec закончили. Продолжим настройку остальных vpn туннелей и сравним их скорость.

Настройка pptp сервера в mikrotik

Настройка pptp сервера не отличается принципиально от l2tp. Логика и последовательность действий та же самая. Сначала создаем pool адресов в IP -> Pool для vpn сети. Я буду использовать тот же пул, что мы создали ранее.

Далее создаем профиль для pptp туннеля в разделе PPP -> Profiles.

Профиль настроек для pptp сервера

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

Создание пользователя pptp

Включаем pptp сервер в разделе PPP.

Настройка pptp сервера

Теперь создадим в Interface List PPTP Server Binding по аналогии с предыдущим разделом.

Добавление PPTP Server Binding

И в завершение добавляем статический маршрут до удаленной сети через pptp подключение.

Добавление статического маршрута за pptp соединением

Настройка pptp сервера закончена. На фаерволе нужно будет открыть для входящих подключений внешнего интерфейса следующие вещи:

  • TCP port 1723
  • GRE протокол

Отправляемся настраивать pptp клиент.

pptp клиент

Отправляемся на удаленный роутер и там настраивает подключение через pptp client. Идем, как обычно, в раздел PPP и добавляем PPTP Client. На вкладке General ничего не трогаем, а на Dial Out указываем адрес pptp сервера и имя пользователя для подключения.

Настройка pptp клиент в микротике

Добавляем статический маршрут до удаленного офиса через vpn туннель.

Статический маршрут для pptp

Все готово. Активируем pptp подключение и пробуем пинговать адреса в локальной сети. Убедиться в том, что шифрование отключено можно в статуте pptp соединения на клиенте.

Статус шифрования

Проверим теперь скорость vpn соединения по pptp.

Тестирование скорости pptp vpn без шифрования

Те же самые 194 мбит/сек, что на нешифрованном l2tp при 100% загрузке процессора. Вообще, было немного странно увидеть абсолютно такие же цифры. Проводил тесты несколько раз, но везде был стабильно один и тот же результат. Без шифрования нет разницы по скорости между l2tp и pptp соединением.

Теперь включим шифрование в pptp на сервере и посмотрим на скорость. Для этого указываем в pptp профиле явно, чтобы использовалось шифрование. Идем в PPP -> Profiles и редактируем наш профиль.

Шифрование в pptp

Убедимся в статусе клиента, что шифрование работает.

Шифрование mppe128 в pptp server

Тестирую скорость vpn соединения по pptp с включенным шифрованием.

Проверка скорости через шифрованный pptp канал

Получилось в среднем 71 мбит/сек. Неплохой результат в сравнении с шифрованием ipsec в l2tp. Как я и говорил ранее, pptp сервер хорошо подходит там, где шифрование либо совсем не нужно, либо допускается возможность, что зашифрованный трафик будет расшифрован. Но при этом он все равно закрыт шифрованием и каждый проходящий не сможет ничего увидеть. Нужно как минимум снять дампт трафика и каким-то образом подбирать ключ по словарю или перебором. Не знаю точно, как это реализуется на практике. Не изучал вопрос.

Перейдем теперь к openvpn серверу в микротик. Очень любопытно посмотреть на тесты скорости этого типа vpn соединений.

Настройка openvpn server в микротик

В настройке openvpn сервера на mikrotik нет ничего сложного, кроме нюанса с сертификатами. Тому, кто с ними никогда не работал, может показаться все слишком замороченным. К тому же в самом микротике нет никаких средств для создания сертификатов сервера и клиента. Необходимо использовать сторонние утилиты. Если у вас есть linux машина, можете воспользоваться моей инструкцией по созданию сертификатов для openvpn на linux.

Если у вас нет linux машины, но вы все же настроены поднять vpn туннель с помощью openvpn в микротике, то давайте разбираться с настройкой дальше. Прежде всего нам понадобится дистрибутив openvpn для windows. Скачать его можно по ссылке — https://openvpn.net/community-downloads/. Нас будет интересовать Windows Installer.

Выполняем установку от имени администратора и указываем в процессе компонент под названием EasyRSA 2 Certificate Management Scripts.

Установка EasyRSA 2 Certificate Management Scripts на Windows

Идем в директорию C:\Program Files\OpenVPN. Переносим оттуда папку easy-rsa куда-нибудь в другое место, чтобы не приходилось постоянно спотыкаться об UAC, который не даст спокойно работать в Program files. Я перенес в D:\tmp\easy-rsa. Переименовываем файл vars.bat.sample в vars.bat. Открываем его на редактирование и приводим примерно к следующему виду.

Файл с переменными vars.bat

Для тех, кто не понял, это просто переменные, которые я указал под свои нужды. Там писать можно все, что угодно, не принципиально для нашей задачи. Можно вообще ничего не менять, а оставить как есть. Создаем в директории папку keys. Далее запускаем командную строку от администратора и перемещаемся в указанную директорию D:\tmp\easy-rsa.

Командная строка Windows

Далее в командной строке пишем vars и жмем enter. Этим мы загрузим переменные из файла vars.bat, потом вводим clean-all. Дальше генерируем Root CA командой — build-ca.

Генерация Root CA сертификата

Отвечаем на задаваемые вопросы и завершаем создание корневого сертификата. Он появится в папке D:\tmp\easy-rsa\keys. Дальше создаем сертификат openvpn сервера командой — build-key-server имя_сервера.

Генерация сертификата для openvpn сервера в mikrotik

Теперь сгенерируем сертификат для клиента. У меня только один клиент в виде удаленного микротика. Вы создаете ровно столько, сколько вам нужно. Используем команду build-key имя_сертификата.

Создание сертификата для openvpn клиента

С созданием сертификатов закончили. Они у нас все лежат в директории keys. На микротик, который будет выступать в качестве openvpn сервера, нужно передать файлы:

  • ca.crt
  • ovpnserver.crt
  • ovpnserver.key

Загрузка сертификатов в микротик

Импортируем сертификаты из добавленных файлов. Идем в System -> Certificates и импортируем сначала ca.crt, потом ovpnserver.crt и ovpnserver.key.

Импорт сертификатов для openvpn

Должно получиться примерно так. Теперь приступаем к настройке openvpn сервера в mikrotik. Создадим для него отдельный профиль в PPP -> Profiles.

Профиль openvpn настроек

Все настройки дефолтные. В качестве локального и удаленного адреса использую Ip Pool, который создал в самом начале настройки l2tp. Добавим удаленного пользователя для openvpn в PPP ->Secrets.

Создание openvpn пользователя

Идем в раздел PPP и жмем OVPN Server. Указываем настройки и загруженный ca сертификат.

Настройка openvpn в mikrotik

Далее добавляем по аналогии с остальными vpn серверами OVPN Server Binding и статические маршруты.

Добавление OVPN Server Binding

Статический маршрут для vpn

На этом настройка openvpn server в микротик завершена. По дефолту будет использоваться протокол шифрования BF-128-CBC. Его можно поменять в свойствах клиента, а список всех поддерживаемых шифров в свойствах vpn сервера.

Для работы указанной настройки openvpn сервера необходимо открыть входящий tcp порт 1194 на фаерволе. Теперь настроим openvpn клиент и протестируем скорость соединения через vpn на основе openvpn.

openvpn client

Для настройки openvpn client на mikrotik, туда нужна передать сертификаты, сгенерированные на предыдущем шаге. Конкретно вот эти файлы:

  • m-remote.crt
  • m-remote.key

Файлы сертификатов для клиента

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

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

Теперь настраивает openvpn клиента. Идем в PPP и добавляем OVPN Client.

Настройка openvpn client в микротике

Добавляем статический маршрут для доступа к ресурсам удаленной сети за openvpn сервером.

Статический маршрут через vpn соединение

Все готово. Можно подключаться и тестировать скорость vpn соединения через openvpn.

Тест скорости openvpn в mikrotik

Получилось в среднем 24 мбит/сек при 100% загрузке процессора. Результат сопоставим с l2tp + ipsec. Немного удивил результат. Я думал, будет хуже, чем l2tp, а на деле то же самое. Мне лично вариант с openvpn в целом нравится больше, хотя из-за ограниченности настроек openvpn в микротике преимущества openvpn трудно реализовать. Напомню, что тестировал с шифрованием BF-128-CBC, то есть blowfish.

Вот результат с AES-128-CBC — 23 мбит/сек, примерно то же самое.

Тест скорости AES-128-CBC шифрования в openvpn

С клиент-серверными реализациями vpn сервера в mikrotik разобрались. Теперь просмотрим на скорость l2-vpn в виде eoip tunnel.

Настройка EOIP Tunnel + Ipsec

Настроим vpn сеть на базе EOIP в Mikrotik. Тут нужно понимать одно важное отличие от всех предыдущих настроек, которые мы делали ранее. EOIP туннель работает на уровне l2, то есть оба сегмента сети будут считать, что находятся в одной физической сети. Адресное пространство для обоих будет одно и то же. В моем примере это 10.20.1.0/24. DHCP сервер должен остаться только один для обоих сетей. В моем случае он останется на m-server.

Создаем EOIP туннель на m-server. Идем в Interface list -> EoIP Tunnel и добавляем новый.

Настройка EoIP в микротик

Из настроек достаточно указать только удаленный адрес второго микротика. Новый EoIP интерфейс необходимо добавить в локальный бридж вместе с физическими интерфейсами.

Идем на удаленный микротик и там делаем все то же самое, только Remote Address указываем другой.

Второй eoip tunnel для связи офисов

Этого достаточно, чтобы EoIP туннель сразу же заработал. Его состояние будет RS.

Статус eoip vpn

На втором микротике EoIP интерфейс так же нужно добавить в локальный бридж с остальными интерфейсами.

Добавление eoip туннеля в локальный бридж

Проще всего проверить, что все в порядке, это запросить по dhcp на m-slave ip адрес для интерфейса bridge. Он должен получить ip адрес от dhcp сервера на m-server, при условии, что в сети больше нет других dhcp серверов. То же самое будет и с локальными машинами в сети за m-slave. Они будут получать ip адреса от dhcp сервера на m-server.

Проверим теперь быстродействие такого vpn туннеля на основе EoIP.

Тестирование нешифрованного eoip vpn в mikrotik

Показываю максимальный результат, который у меня получился — 836 мбит/сек. По какой-то причине в разных тестах скорость плавала в интервале между 600-850 мбит/сек. Для того, чтобы скорость изменилась, необходимо было отключить и заново включить EoIP интерфейс. Скорость впечатляет. При этом, процессор не загружен на 100%. То есть узкое место не он. Похоже я уперся в производительность сети. Напомню, что тут нет никакого шифрования и маршрутизации трафика. Прямой l2 канал между двумя микротиками через EoIP vpn.

Добавим в EoIP туннель шифрование Ipsec и посмотрим на скорость. Для этого меняем настройки каналов на обоих микротиках. Добавляем пароль Ipsec и локальные адреса, отключаем Fast Path.

Настройка eoip + ipsec

Измеряем скорость соединения.

Тест скорость eoio + ipsec в mikrotik

У меня получилась скорость vpn при использовании EoIP + Ipsec в среднем 27 мбит/сек. Скорость сопоставима с шифрованными туннелями L2tp и Openvpn. В этом плане никаких приятных сюрпризов не получилось. Шифрование очень тяжело дается этой железке. Можно сказать она для него не предназначена практически совсем.

GRE туннель + Ipsec в mikrotik, создание и настройка

Для настройки GRE туннеля в Mikrotik идем в раздел Interfaces -> GRE Tunnel и добавляем новый со следующими настройками:

Настройка GRE Tunnel

Назначаем GRE туннелю ip адрес в IP -> Adresses.

Назначаем адрес для gre соединения

Сразу же создаем статический маршрут для доступа к ресурсам удаленной сети.

Статический маршрут через gre

Для организации vpn соединения через GRE tunnel то же самое проделываем на удаленном микротике, только меняем соответствующие адреса.

Создаем GRE Tunnel.

Подключение второго микротика через gre

Назначаем ip адрес.

Локальный ip адрес для gre tunnel

Добавляем маршрут в удаленную локальную сеть.

Статический маршрут через vpn gre

После этого маршрутизация трафика между локальными сетями должна заработать. Не забудьте на firewall разрешить gre протокол.

Проверим теперь скорость соединения по GRE туннелю.

Тест скорости нешифрованного gre туннеля

У меня получилось 247 мбит/сек. Напомню, что это нешифрованный маршрутизируемый vpn туннель. Отличие от l2 туннеля EoIP примерно в 3 раза по скорости в меньшую сторону. Выводы делайте сами какие туннели использовать. Если не нужна маршрутизация, то однозначно EoIP.

Теперь проверим то же самое, только настроив в GRE шифрование Ipsec. Добавляем соответствующие настройки в GRE туннели на обоих микротиках.

Настройка GRE + Ipsec

Измеряю скорость GRE + Ipsec, алгоритм шифрования aes-128 cbc.

Тестирование скорости vpn канала на базе gre + ipsec

Получилось в среднем 29,7 мбит/сек, что примерно соответствует всем результатам с ipsec. Не удивительно, ведь алгоритм шифрования во всех случаях один и тот же. Но тем не менее, в GRE Tunnel скорость немного выше всех остальных участников. Из этого можно сделать вывод, что исключительно для l3 site-to-site подключений GRE Tunnel подходит в плане быстродействия лучше всего.

Сравнение скорости L2tp, Pptp, EoIP, GRE и OpenVPN туннелей

Сведу все данные измерений в единую таблицу для наглядного и удобного анализа и сравнения скоростей всех упомянутых vpn соединений в Mikrotik.

Сравнение скорости vpn каналов в mikrotik
VPN ТуннельШифрованиеСкорость (Мбит/c)
l2tpнет194
l2tpIPsec AES-128 CBC26
pptpнет194
pptpMPPE12871
openvpnBF-128-CBC24
eoipнет836
eoipIPsec AES-128 CBC27
greнет247
greIPsec AES-128 CBC29,7

Приведенная таблица наглядно показывает разницу в различных методах шифрования. С помощью нее можно быстро оценить, к каким потерям производительности может привести шифрование. Сейчас все по-умолчанию все шифруют, но если разобраться, очень часто это не требуется. Можно пойти на некий компромис и использовать pptp сервер, который хоть и не обеспечивает 100% безопасное шифрование, но тем не менее скрывает трафик от просто любопытных глаз и имеет неплохое быстродействие. В любом случае трафик просто так не прочитать, надо целенаправленно приложить усилия для дешифровки. В некоторых случаях такой защиты будет достаточно.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Изначально не планировал писать такую большую и подробную статью. Аппетит приходит во время еды. По мере того, как стал углубляться в тему, становилось все интереснее и интереснее попробовать разные варианты и сравнить их. В итоге я перебрал все известные vpn подключения в mikrotik. Не дошли руки только до SSTP, но я точно знаю, что он будет очень медленно работать на RB951G-2hnD и в целом на микротиках медленнее всех остальных решений. Не думаю, что его использование будет оправданно.

Статью писал несколько дней, мог что-то напутать, опечататься или ошибиться. Все замечания принимаю в комментариях. Надеюсь, мой материал исследование на тему настройки vpn соединений в микротиках был вам интересен и полезен. Единственное, о чем жалею, что не затронул тему настройки pptp, l2tp и openvpn подключений на клиентских устройствах сотрудников. Без них материал на тему настройки vpn получился не полноценным, ведь это важная часть работы vpn тоннелей. Их используют не только для объединения офисов, но и для подключения удаленных сотрудников.

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

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

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

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

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

53 комментария

  1. Аватар
    Александр

    Спасибо за информацию. У меня такой вопрос, есть необходимость периодически скидывать рабочие файлы (фотографии) для бекапа на компьютер тёщи. И у меня и у неё роутеры mikrotik hap lite. Если я буду использовать незашифрованное соединение EOIP чем я рискую?То есть кто посторонний может взломать мою локальную сеть или файлы которые будут передаваться будут видны посторонним лицам (что для меня не критично). Скорее всего вопрос глупый, но ответа в интернете я не нашел.

    • Zerox

      Да ничем не рискуете. Еще лет 10 назад почти весь трафик в интернете был не шифрованный и это никого особо не волновало. Никто не будет ваш трафик сидеть и анализировать, чтобы что-то там увидеть среди фотографий. Это хлопотно и затратно. Шифрование трафика среди обычных людей активно форсируют крупные корпорации, потому что им это выгодно. Не видно, какую инфу они сливают себе о вас.

      • Аватар
        Александр

        Спасибо за ответ. Как вы думаете, можно ли для создания туннеля использовать билайновскую серую сеть, а не интернет? Это не нарушает какие нибудь права, потому что, у них на сайте есть услуги для бизнеса по объединению офисов или компьютеров в vpn как я понял в серой сети до 10 гигабит?

        • Zerox

          Я не уверен, что через серую сеть можно связность настроить между клиентами. Там же нет прямых коннектов между ними. Думаю, ничего не получится.

  2. Аватар

    у «домашней» версии hAP ac² хардварная поддержка ipsec’а в тоннеле 100mb/s, когда с обоих сторон 100mb/s

  3. Аватар

    Добрый день.
    CCR1016.

    У меня вопрос про Ovpn. Задача такая, подключать удаленных сотрудников, а также мобильных. Всего 10 — 12 единиц.
    Какую длину сертификата порекомендуете? 1С, почта, файловый сервер.

    И не понимаю вопроса с клиентскими сертификатами, как их отзывать? Как Микротик будет понимать, что этот сертификат не действителен?

    • Zerox

      Я бы не советовал поднимать openvpn сервер на микротике. По-моему, он вообще не понимает список отозванных сертификатов. Не видел там настройку на эту тему. Лучше l2tp делать.

      • Аватар

        Ясно.
        А если поднять на другом ресурсе согласно этой статье-
        https://serveradmin.ru/nastroyka-openvpn-na-centos-7/
        и этот ресурс засунуть за Микротик?
        Есть какой-то мануал как это сделать, в смысле какие правила и т.д. прописать на маршрутизаторе?
        Или обязательно должен быть публичный IP на сервер Ovpn ?

        • Zerox

          Нет, не обязательно публичный ip, можно просто пробросить порт на openvpn сервер. Настроить по той статье можно. Работать будет. Это нормальное решение. Я бы даже сказал более правильное, когда все ресурсы расположены за пограничным маршрутизатором с firewall.

          Нужно будет просто аккуратно все маршруты настроить. У вас на openvpn сервере будет подсеть для vpn, к примеру, 10.0.0.0/24. Клиенты vpn будут подключаться и получать адрес из этой подсети. Ваши внутренние сервера, к примеру 1С или файловый сервер, должны знать, куда слать пакеты для этой подсети. У них шлюз по-умолчанию будет скорее всего микротик. Нужно будет на микротике сделать маршрут, что все пакеты 10.0.0.0/24 пересылать на адрес openvpn сервера.

          Если будут вопросы по этой теме, лучше их задавать в статье про openvpn сервер.

  4. Аватар

    Добрый день! Настроил на двух микротиках VPN l2tp + IpSec, соединение поднимается, пинги по сети туда/обратно идут, но вот зайти на ресурсы сети не получается. На компах отключал фаервол, антивирус — не помогает. Подскажите куда копать?

    • Zerox

      Если пинги между хостами есть, значит маршрутизация правильно настроена. Дальше смотрите настройки фаерволов везде, где ходят пакеты. Чудес не бывает. Если пинги есть, а сервисы не работают, дело в фаерволах.

  5. Аватар

    понаплодили vpn, теперь сиди, выбирай. И нет идеального. Ждём Wireguard в микротиках.

    • Zerox

      Да уж. Лучше бы сразу сделали нормально openvpn с udp и сжатием. Не понял, почему они так и не довели до ума решение. А сейчас, как по мне, проще всего использовать l2tp.

  6. Аватар

    Настроил на Микротик с прошивкой 6.45.3 VPN l2tp + ipsec для поднятия защищённого канала из Windows. Из Windows 7 (со всеми последними обновлениями) подключается на ура, из Windows 10 при попытке соединения зависает на статусе «Подключение к…» и находится в этом состоянии очень долго. В чём может быть проблема? И, главное, на какой стороне? Заранее благодарю за конструктивные ответы

    • Zerox

      С сетью все в порядке на компьютере с Windows 10? Я в том плане, что не заблокировано ли что-то на шлюзе для этого компьютера? Долгое подключение в первую очередь намекает на сетевые проблемы.

      • Аватар

        Нет, ничего не заблокировано. Брандмауэр вообще выключил на Win10, машина на Win10 выходит в сеть через обычный роутер типа DIR-300 или что-то вроде. Микротик новый, RB941-2nD, сразу обновлён до 6.45.3, сброшен в заводские настройки со стандартной конфигурацией и настроен через Quick как Home AP с PPPoE подключением, DHCP сервером, NAT и всё такое стандартное по порядку. NTP клиент и часовой пояс тоже настроены правильно. И уже потом сверху по пунктам сделал как Вы описали. Кстати, спасибо за современное описание, везде в Сети описываются старые прошивки, и там в части ipsec значительные отличия, в итоге толком не настроить

      • Аватар

        Решением проблемы стала правка реестра Windows 10:

        Windows Registry Editor Version 5.00

        [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent]
        «AssumeUDPEncapsulationContextOnSendRule»=dword:00000002

        После этого Windows 10 начала свободно работать как клиент l2tp + ipsec

    • Аватар

      Андрей, у меня такая хрень была. два дня мучался. А потом попробовал подключиться через Параметры>Сети>VPN. Там при выборе подключения есть «Подключить». Перестало отражаться вечное подключение. Стало ошибки сообщать. В итоге подключился.

  7. Аватар

    Добрый день, имею Mikrotik RB750Gr3, 6.45.2прошивка, настраиваю L2TP с IPSec по статье.
    Но получаю ошибку. Что не так? Перед этим тоже пробовал много разных статей использовать — всё к одному сводится

    (фото ошибки — http://www.imgzilla.ru/image.uploads/2019-08-01/original-eb2f28f42611c4cdea27b6371f456527.jpg)

  8. Аватар

    Zerox такой вопрос, если скажем есть такая схема

    1) микротик 3011 (белый айпи)
    2) локальной сети нет (будет только 1 хост, сервер терминалов)
    3) из разных точек будут коннектиться к VPN через l2tp.

    Какую схему с pool и адресами ты посоветуешь? заранее спс

    • Аватар

      update

      количество пользователей VPN будет около 20 (одновременно 3-5 пользователя макс)

    • Zerox

      Не понял вопрос. О какой схеме идет речь, если тут все пользователи в одну подсеть залезают?

      • Аватар

        Я имею ввиду делать ли отдельный пул отличный от подсети микротика и сервера для впн подключений. Или же выдавать айпи из той же подсети.

        • Zerox

          Выдавать адреса из той де подсети гораздо проще и удобнее, тем более, когда пользователей не много. Не нужно настраивать маршрутизацию. Так что если такой вариант подходит, то лучше так и сделать.

          • Аватар
            Николай

            Здравствуйте Zerox, попробовал настроить по вашей инструкции свой 3011, но потерпел неудачу, ваша инструкция 5ая или 6я по которой пытаюсь настроить, рабочий 2011 настроил без проблем с ходу но это было 6 обновлений назад, может что-то изменилось или я возможно что то делаю не так, можно ли как-то с вами связаться для решения этой проблемы?

  9. Аватар
    Валерий

    Можно ли настроить маршрутизацию vpn между микротиком и виндоус клиентом, чтобы связь была в обе стороны?

    • Zerox

      Конечно можно. С этим нет проблем.

      • Аватар
        Валерий

        А вот у меня почему-то возникли. Как правильно настроить маршрутизацию? С клиента я вижу сеть за микротиком, а вот из сети клиент не доступен. Создавал правило NAT, дабавлял разрешающие правила в файрволе в обе стороны. Маршут на микротике указал . Какие еще варианты?

        • Zerox

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

          Плюс, надо не забывать про фаерволы в обе стороны.

          • Аватар
            Валерий

            В общем, я пытался выполнить какую-то дичь)
            Схема такая. Юзер с ПК (IP1) подключается к локальной сети за микротиком, и получает IP2 сразу из этой же локалки. IP2 с микротика пинговался без проблем изначально. Я же пытался пинговать IP1, что, по всей видимости, изначально было ошибкой.

            • Zerox

              Да, все правильно. У вас в данном случае никакой маршрутизации нет. Клиент, подключившись по l2tp должен быть доступен сразу же по ip, который он получил из диапазона локалки, к которой подключился.

  10. Аватар

    где-то я накосячил с pptp… с виндовой машины соединение проходит, пингую айпишник внутренний микротика, но к ресурсам локальной сети пинг не доходит…

    • Zerox

      Это не обязательно проблема с pptp. Если на машине, которую вы пингуете, нет маршрутов то исходной машины, с которой идет пинг, то тоже не будет связи. Тут надо все проверять.

      • Аватар

        в другом мануале подсказку нашёл — proxy-arp надо было вкючить на внутреннем интерфейсе :)

  11. Аватар

    «Можно пойти на некий компромис и использовать pptp сервер» — так он же имеет серьезные уязвимости! Зачем его вообще использовать.

  12. Аватар

    Спасибо материал. В разделе GRE тунель + Ipsec в mikrotik, создание и настройка, если я правильно понял, то на втором маршрутизаторе, тесть m-remote мы должны прописать подсеть удаленной сети, то есть 10.20.1.0/24, а на скрине для второго маршрутизатора его же подсеть 10.30.1.0/24… или я что-то упустил?

    • Zerox

      Да, все верно, там должен быть адрес 10.20.1.0/24 — удаленная подсеть. Я ошибся, подправлю скрин.

  13. Аватар

    Для openvpn все сертификаты можно создавать на самом устройстве. И будет работать даже список отозванных сертификатов

  14. Аватар
    Валерий

    Если l2tp настраивать не между двумя микротиками, а только на одном в роли сервера, а подключаться просто с рабочих компьютеров, то не нужно создавать интерфейс l2tp-binding и настраивать маршрутизацию, я правильно понимаю? Нужно ли в таком случае клиентам впн выделять отдельное адресное пространство (pool)?

    • Zerox

      l2tp-binding в таком случае не нужен.

      В самом простом случае да, для юзеров не нужен пул с отдельной подсетью. Им можно выдавать адреса из локальной сети. Можно создать adress lists и там по одному перечислить несколько свободных ip адресов локальной сети, которые будут назначаться подключившимся пользователям по l2tp. Если адресов хватает на всех, то это предпочтительный вариант. Не нужно вообще никакую маршрутизацию настраивать. Юзер подключается по l2tp и сразу получает адрес из локальной сети.

  15. Аватар

    не надо указывать в качестве шлюза интерфейс при построении туннелей! указывай ip с той стороны!

  16. Аватар

    ИМХО автор чего-то в тестах накосячил. Не может EOIP имеющий кучу оверхеда, идущий поверх GRE быть быстрей этого самого GRE. Переделать :-D.

    • Zerox

      На скрине с замером скорости указана статистика интерфейса EOIP. Не знаю, что тут можно было напутать. Я разок затупил и пустил трафик напрямую, мимо туннелей, так это сразу было видно, так как статистика по туннелю была нулевая и скорость 950 мбит/сек.

  17. Аватар

    Даже MIKROTIK HEX ~3800 руб.

  18. Аватар

    Когда они уже добавят поддержку Wireguard… Крутой, быстрый и простой в настройке VPN. Не понимаю почему они его уже столько времени игнорят.
    Хотя по факту, OpenVPN они тоже хорошо игнорят и говорят что он кривой, и они не могут сделать нормальную его поддержку.
    При этом явно видно что они «боготворят» ipsec который по факту уже морально устарел. ИМХО.
    Не понимаю я этих Латвийцев.

    • Zerox

      Да уж, хотелось бы либо Wireguard, либо нормальный Openvpn. Сейчас такое изобилие, а что выбрать, не знаешь :)

  19. Аватар

    У вас обзор устройства всё в одном, что бы IPSec нормально работал нужно взять железку с его аппаратной поддержкой и будет счастье, например MIKROTIK HEX S 4,5 тыс.руб. у него аппаратное шифрование IPsec (470 Мбит/с).

    • Zerox

      Это да. Из чего была возможность собрать стенд, из того и собрал. Конечно, для шифрования нужно другое устройство. Я об этом и сказал в статье. Но спасибо за замечание. Я не знал, что в HEX S поддержка шифрования аппаратная.

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

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

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