Обзорная статья на тему использования современных приватных тоннелей в роутерах популярной латвийской марки. Я расскажу о том, как настроить vpn сервер в mikrotik на базе таких технологий как l2tp, ipsec, openvpn, pptp, gre и eoip. Попутно кратко расскажу о том, что это за технологии, чем они отличаются, а так же проведу сравнение производительности микротика со всеми указанными тоннелями.
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке.
Данная статья является частью единого цикла статьей про Mikrotik.
Введение
Сразу хочу обратить внимание, что эта статья будет скорее обзорной, нежели передачей реального опыта, так как сам я чаще всего использую в качестве vpn сервера openvpn. Тем не менее с vpn в микротик тоже приходилось сталкиваться. Настраивал как pptp сервера для подключения удаленных клиентов, так и l2tp для объединения двух и более микротиков в общую приватную сеть. В основном по дефолту, не вникая в тонкости настроек.
Сегодня хочу рассмотреть этот вопрос более внимательно и посмотреть, что вообще предлагает микротик из коробки для настройки vpn соединений. Своими исследованиями я и хочу поделиться с вами, написав небольшой обзор на тему средств организации vpn сервера в mikrotik. А попутно хочу собрать отзывов и исправлений на тему написанного, чтобы укрепить свои знания. В комментариях к своим статьям я черпаю массу советов, за что благодарен всем писавшим полезные вещи. Так что замечания, дополнения и исправления категорически приветствуются.
Для тех, кто хочет хорошо разбираться в сетях, но пока по какой-то причине не умеет этого, рекомендую вот этот цикл статей — сети для самых маленьких. Так же, если вы не очень хорошо знакомы с микротиками, рекомендую мою статью на тему настройки микротика с нуля.
Хронология использования PPTP в операционных системах
Соединение pptp можно считать универсальным, поскольку его поддержку реализовано во многих операционных системах.
На начальных этапах, когда операционные системы в привычном понимании пользователя только формировались протокол смогла реализовать только одна компания Cisco.
На последующих этапах ] Microsoft[/anchor] и ее конкуренты смогли также полностью реализовать этот механизм.
Впервые в продуктах Microsoft он использовался в Windows 95 OSR2, а более поздних разработках были даже предусмотрены встроенные средства, предназначенные для настройки PPTP-серверов.
Стоит отметить, что поддержка PPTP в Linux была внедрена относительно недавно. Но современные версии ее все же поддерживают.
Что касается систем FreeBSD и Mac OS X, то в их архитектуру заложена поддержка данной технологии посредством встроенных PPTP-клиентов, которые в полном объеме позволяют прочувствовать все преимущества такого соединения.
рис. 3 – Место настройки PPTP в Linux
Варианты vpn сервера в микротике
С вариантами vpn сервера в микротике все сложно В том плане, что есть много реализаций vpn, которую не так просто выбрать, если не разбираешься детально в сетевых технологиях. Я не сильно в них разбираюсь, но как мне кажется, немного улавливаю суть. Постараюсь вам объяснить своими словами, в чем отличия.
Существуют 2 принципиально разных решения для организации соединений между двумя микротиками и внешними абонентами:
- Создание l2 туннеля типа site-to-site с помощью EOIP Tunnel. Самый простой и быстрый способ объединить два микротика. Если не будет использовано шифрование, то получатся самые быстрые vpn подключения. Необходимы выделенные белые ip адреса на обоих устройствах. Такие соединения используют для объединения офисов или филиалов по vpn. В общем случае не работает через NAT. Сюда так же добавлю GRE Tunnel, хотя он работает в l3 и использует маршрутизацию, но работает так же по принципу site-to-site.
- 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. Основные причины:
- Простота и удобство настройки.
- Надежное шифрование.
- Поддержка l2tp соединений практически всеми современными устройствами и системами. Нет необходимости ставить дополнительное программное обеспечение.
- Подходит как для объединения офисов, так и для удаленных сотрудников — site-to-site и client-to-site подключения.
Если вам нужно максимальное быстродействие без шифрования, то стройте соединения между сетями или офисами с помощью EOIP Tunnel — фирменной разработки компании Mikrotik.
Дальше я покажу, как настроить все описанные туннели, кроме SSTP и произведу замеры скорости для сравнения. Мой тестовый стенд из двух Mikrotik RB951G-2hnD будет иметь следующие настройки.
m-server | имя микротика, выступающего в роли сервера |
m-remote | имя микротика, выступающего в роли удаленного маршрутизатора |
192.168.13.1 | WAN ip адрес на m-server |
192.168.13.197 | WAN ip адрес на m-remote |
10.20.1.0/24 | локальная сеть за m-server |
10.30.1.0/24 | локальная сеть за m-remote |
10.10.5.1-10.10.5.100 | vpn сеть |
Приступим к настройке и тестированию vpn соединений в mikrotik.
Шифрование данных
В составе PPTP может использоваться (а может и не использовтаься) шифрование данных протоколом MPPE (Microsoft Point-to-Point Encryption). MPPE поддерживает 40, 56 и 128 битные ключи. Однако, далеко не все устройства, использующие PPTP умеют использовать шифрование. Многие старые модели модемов и домашних маршрутизаторов не поддерживают шифрование MPPE.
Стоит отметить, что при работе с VPNKI, для использования соединения с шифрованием вам необходимо в настройках соединения: — использовать авторизацию MS-CHAPv2 и указать что будет использоваться шифрование (MPPE) Для соединения без шифрования вам необходимо: — использовать авторизацию CHAP и указать, что шифрование использоваться не будет.
Настройка l2tp туннеля в mikrotik
Для начала настроим простой l2tp туннель без шифрования и замерим скорость. Для настройки l2tp vpn в mikrotik выполните следующую последовательность действий.
Идем в раздел IP -> Pool и добавляем пул ip адресов для vpn туннеля.
Создаем профиль для туннеля в PPP -> Profiles.
На остальных вкладках настройки дефолтные. Далее создаем пользователя в PPP -> Secrets.
Теперь запускаем l2tp сервер. Идем в PPP и жмем в кнопку L2TP Server.
Устанавливаем настройки для l2tp сервера. ipsec пока не включаем.
VPN сервер настроен. Теперь создадим для него постоянный интерфейс, чтобы на его основе создавать статические маршруты. Идем в Interfaces и создаем L2tp Server Binding.
Последний штрих. Создаем статический маршрут, с помощью которого абоненты локальной сети сервера смогут подключаться к абонентом локальной сети за удаленным роутером через vpn. Идем в IP -> Routes и добавляем маршрут.
Я не рассмотрел вопрос настройки firewall, так как не хочется раздувать и так объемную статью. Напрямую это не относится к указанной теме. Подробнее читайте о настройке фаервола отдельно по приведенной ссылке. Здесь же только укажу, что необходимо открыть на firewall для корректной настройки l2tp.
На сервере необходимо создать следующие правила для фаерволла, чтобы мы могли достучаться до нашего L2TP сервера. IP -> Firewall -> Filter Rules. Необходимо создать разрешающее правило в цепочке input для следующих портов и протоколов:
- Протокол: UDP
- Разрешаем порты: 1701,500,4500
- В качестве In.Interface указываем тот, через который происходит l2tp подключение.
Отдельно добавляем еще одно правило, разрешающее протокол ipsec-esc.
На сервере все готово. Идем настраивать l2pt клиент на удаленном микротике.
L2tp клиент
Здесь все достаточно просто. Идем в PPP и добавляем L2TP Client. Указываем настройки, которые задавали ранее на сервере.
Добавляем статический маршрут, чтобы клиенты этого роутера знали, куда обращаться к абонентам удаленной локальной сети за 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 соединения:
Средняя скорость 194 мбит/сек. Откровенно говоря, я не понял, почему такая низкая скорость. Мой тестовый стенд собран на двух роутерах микротиках и гигабитного микротик свитча между ними. Ожидал увидеть что-то в районе 500 мбит/сек. Напомню, что туннель пока без шифрования. При этом загрузка процессоров на роутерах была в районе 90-95%. То есть фактически потолок этих железок.
Попробуем теперь включить шифрование ipsec и замерить скорость с ним.
Настраиваем ipsec
С настройкой ipsec для l2tp я залип на некоторое время. В сети много инструкций, но все они устарели. Как оказалось, в последних версиях прошивок, запустить ipsec в дефолтных настройках не просто, а очень просто. Для этого надо всего лишь в свойствах l2tp сервера указать Use IPsec — yes и задать пароль.
Все необходимые настройки 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.
У меня получилось вот так — 26 мбит/сек в среднем. При этом загрузка процессора 100%. Не густо. Данные железки для шифрованных каналов пригодны очень слабо. В данных тестах они ничем, кроме непосредственно теста не нагружены. В реальных условиях скорость будет еще ниже.
С настройками vpn на базе l2tp + ipsec закончили. Продолжим настройку остальных vpn туннелей и сравним их скорость.
Настройка параметров для сетевых подключений VPN
Операционные системы семейства Windows имеют ряд отличительных особенностей. Но их всех объединяет возможность выполнить подключение и настройку VPN PPTP соединения. Вопрос лишь в том, какая именно версия ОС от компании Microsoft используется на конкретном компьютере или ноутбуке.
В связи с этим предлагается сразу несколько инструкций, актуальных для самых популярных версий ОС Windows. А именно:
- XP.
- Windows 7.
- Windows 8.
- Windows 10.
Для каждой из них существует свой порядок и особенности настройки конфигураций.
Настройка для Windows XP
Первой на очереди будет уже устаревшая, но всё ещё активно используемая юзерами со слабыми компьютерами операционная система в лице Windows XP.
Здесь для настройки PPTP VPN соединения необходимо:
- открыть панель управления, нажав кнопку «Пуск»;
- выбрать раздел «Сеть и подключения»;
- кликнуть на вариант «Создать подключение к сети» на своём рабочем столе;
- на выбор будут предложены 2 варианта;
- это подключение удалённого доступа, а также к виртуальной частной сети;
- нужно выбрать второй вариант и поставить напротив него галочку;
- далее следует указать любое понравившееся имя для подключения;
- параллельно откройте мой аккаунт, где должен быть список IP адресов для PPTP VPN сервисов, логин и пароль пользователя;
- прописать найденный IP адрес в строке создания подключения;
- добавить галочку напротив пункта с предложением создать ярлык подключения;
- затем кнопка «Готово».
Остаётся лишь нажать «Пуск», войти в раздел «Подключение» и выбрать новую созданную сеть.
При первом подключении обязательно потребуется указать логин и пароль, после чего можно сохранить введённые данные.
Если все операции были проделаны верно, подключение будет успешно завершено.
Настройка для Windows 7
Несмотря на прекращение поддержки, ОС Windows 7 продолжает пользоваться популярностью.
С самостоятельной настройкой PPTP на Windows 7 особых сложностей также возникнуть не должно. Инструкцию можно представить в таком виде:
- Через меню «Пуск», либо через сетевое подключение в нижнем правом углу откройте меню центра управления сетями.
- Здесь следует нажать на настройку нового подключения или сети.
- Среди предложенных вариантов ищите подключение к рабочему столу, а затем жмите «Далее».
- Теперь появится 2 варианта. Это прямой набор номера, либо использование имеющегося VPN подключения. Выбирать нужно первый вариант в списке, то есть своё подключение к сети Интернет.
- Теперь снова придётся зайти в «Мой аккаунт», где следует посмотреть на перечень PPTP VPN серверов, логин и пароль от VPN. Скопируйте их или перепишите себе.
- В следующем меню настроек потребуется как раз указать IP адрес, придумать название для подключения и поставить галочку напротив пункта «Не подключаться сейчас».
- Далее нужно указать логин и пароль для VPN. Чтобы повторно не вводить те же самые данные при каждом новом подключении, поставьте галочку на пункте «Запомнить пароль».
Всё, подключение создано, можно закрывать окно.
Далее кликните снова правой кнопкой мыши по значку сетевого подключения в нижней части экрана и посмотрите на перечень текущих подключений. Здесь должна появиться ранее созданная VPN сеть.
Кликните на кнопку «Подключение». В открывшемся окне жмите на «Свойства». Посмотрите, на каких пунктах в разделе «Параметры» стоят галочки. Их нужно поставить на первых двух строчках и убрать с последней, где написано «Включать домен входа».
Переходите в раздел «Безопасность». Тип VPN должен быть PPTP, а шифрование данных обязательное.
Остаётся лишь нажать «ОК» и в основном окне подключения нажать кнопку Подключение.
На этом настройка завершена. Можно смело пользоваться PPTP VPN на своём компьютере или ноутбуке с ОС Windows 7.
Настройка для Windows 8
Всё ещё актуальной и поддерживаемой остаётся операционная система Windows 8.
Здесь также может потребоваться настройка PPTP.
От пользователя ПК или ноутбука под управлением ОС Windows 8 потребуется:
- открыть «Сети», кликнув на значок сетевого подключения в нижней части экрана;
- выбрать пункт просмотра параметров подключения;
- далее кликнуть на значок плюс в разделе VPN, приступив тем самым к добавлению нового подключения;
- открыв «Мой аккаунт», скопировать логин и пароль от VPN, посмотреть список серверов PPTP.
При добавлении нового VPN подключения потребуется указать ряд данных. А именно:
- в качестве поставщика услуг указывается разработчик ОС, то есть Microsoft;
- имя подключения придумайте самостоятельно;
- вставьте или пропишите IP адрес используемого PPTP VPN сервера;
- для авторизации выбирайте имя пользователя в сочетании с паролем;
- далее само имя юзера, а также пароль;
- не забудьте поставить галочку, чтобы запомнить данные для входа;
- теперь на кнопку «Сохранить».
Далее снова нажмите на значок сетевого подключения, и в разделе «Сети» появится созданное на предыдущем этапе подключение. Здесь следует кликнуть на «Подключить».
Если статус отображается как «Подключено», вы всё сделали правильно.
Настройка для Windows 10
Теперь к вопросу настройки PPTP для Windows 10. Задача не самая сложная. В особенности, если уже есть опыт настройки на других версиях операционных систем.
Чтобы создать подключение типа PPTP для Windows 10, потребуется выполнить несколько последовательных процедур. А именно:
- кликнуть на значок уведомлений, расположенный в нижнем правом углу экрана компьютера или ноутбука;
- выбрать вариант с виртуальной сетью, то есть VPN;
- появится новое окно с параметрами, где нужно кликнуть на кнопку добавления подключения;
- в качестве поставщика услуг выбирайте Windows;
- имя подключения придумайте сами, какое заходите;
- укажите имеющийся адрес VPN сервера, посмотрев его в своём аккаунте;
- тип подключения будет PPTP;
- для входа лучше использовать логин и пароль;
- пароль придумайте достаточно сложный;
- поставьте галочку, чтобы запомнить внесённую информацию;
- сохраните изменения в настройках нового подключения.
Теперь, когда PPTP VPN создано, к нему следует подключиться, нажав соответствующую кнопку. На установку соединения может потребоваться некоторое время. Когда подключение завершится, окно с параметрами можно закрывать.
Настройка pptp сервера в mikrotik
Настройка pptp сервера не отличается принципиально от l2tp. Логика и последовательность действий та же самая. Сначала создаем pool адресов в IP -> Pool для vpn сети. Я буду использовать тот же пул, что мы создали ранее.
Далее создаем профиль для pptp туннеля в разделе PPP -> Profiles.
В этом профиле указаны дефолтные настройки шифрования, при которых оно отключено. Проверим сначала скорость vpn канала без них. Создаем нового пользователя для удаленного pptp подключения.
Включаем pptp сервер в разделе PPP.
Теперь создадим в Interface List PPTP Server Binding по аналогии с предыдущим разделом.
И в завершение добавляем статический маршрут до удаленной сети через pptp подключение.
Настройка pptp сервера закончена. На фаерволе нужно будет открыть для входящих подключений внешнего интерфейса следующие вещи:
- TCP port 1723
- GRE протокол
Отправляемся настраивать pptp клиент.
pptp клиент
Отправляемся на удаленный роутер и там настраивает подключение через pptp client. Идем, как обычно, в раздел PPP и добавляем PPTP Client. На вкладке General ничего не трогаем, а на Dial Out указываем адрес pptp сервера и имя пользователя для подключения.
Добавляем статический маршрут до удаленного офиса через vpn туннель.
Все готово. Активируем pptp подключение и пробуем пинговать адреса в локальной сети. Убедиться в том, что шифрование отключено можно в статуте pptp соединения на клиенте.
Проверим теперь скорость vpn соединения по pptp.
Те же самые 194 мбит/сек, что на нешифрованном l2tp при 100% загрузке процессора. Вообще, было немного странно увидеть абсолютно такие же цифры. Проводил тесты несколько раз, но везде был стабильно один и тот же результат. Без шифрования нет разницы по скорости между l2tp и pptp соединением.
Теперь включим шифрование в pptp на сервере и посмотрим на скорость. Для этого указываем в pptp профиле явно, чтобы использовалось шифрование. Идем в PPP -> Profiles и редактируем наш профиль.
Убедимся в статусе клиента, что шифрование работает.
Тестирую скорость vpn соединения по pptp с включенным шифрованием.
Получилось в среднем 71 мбит/сек. Неплохой результат в сравнении с шифрованием ipsec в l2tp. Как я и говорил ранее, pptp сервер хорошо подходит там, где шифрование либо совсем не нужно, либо допускается возможность, что зашифрованный трафик будет расшифрован. Но при этом он все равно закрыт шифрованием и каждый проходящий не сможет ничего увидеть. Нужно как минимум снять дампт трафика и каким-то образом подбирать ключ по словарю или перебором. Не знаю точно, как это реализуется на практике. Не изучал вопрос.
Перейдем теперь к openvpn серверу в микротик. Очень любопытно посмотреть на тесты скорости этого типа vpn соединений.
Структура
На рисунке 1 показано строение PPTP пакета. В целом — ничего особенного, в IP пакет инкапсулируется PPP кадр и GRE заголовок.
Рис. 1
Кратко о GRE. Это протокол туннелирования, который работает на 3 уровне модели OSI. Функция GRE — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP пакеты.
Туннелирование подразумевает три протокола:
- пассажир — инкапсулированный протокол (IP, CLNP, IPX, Apple Talk, DECnet Phase IV, XNS, VINES и Apollo);
- протокол инкапсуляции (GRE);
- транспортный протокол (IP).
Заголовок занимает 4 байта (рис. 2) и состоит из 2х частей:
1) 1-2 байты
— flags
:
— ChecksumPresent
– бит 0, если равен 1, то в заголовке GRE присутствует необязательное поле контрольной суммы – Checksumfield;
— Key Present
– бит 2, если равен 1, то в заголовке GRE присутствует необязательное поле, содержащее ключ – Key field;
— Sequence Number Present
– бит 3, если равен 1, то в заголовке GRE присутствует необязательное поле порядкового номера – SequenceNumberfield;
— Version Number
– биты 13–15. Данное поле обозначает версию реализации GRE. Значение 0 обычно используется для GRE. Point-To-Point протокол (PP2P) использует версию 1.
2) 3-4 байты.
Содержат тип протокола (ethertype) инкапсулированного пакета.
Рис. 2
Настройка openvpn server в микротик
В настройке openvpn сервера на mikrotik нет ничего сложного, кроме нюанса с сертификатами. Тому, кто с ними никогда не работал, может показаться все слишком замороченным. К тому же в самом микротике нет никаких средств для создания сертификатов сервера и клиента. Необходимо использовать сторонние утилиты. Если у вас есть linux машина, можете воспользоваться моей инструкцией по созданию сертификатов для openvpn на linux.
Если у вас нет linux машины, но вы все же настроены поднять vpn туннель с помощью openvpn в микротике, то давайте разбираться с настройкой дальше. Прежде всего нам понадобится дистрибутив openvpn для windows. Скачать его можно по ссылке — https://openvpn.net/community-downloads/. Нас будет интересовать Windows Installer.
Выполняем установку от имени администратора и указываем в процессе компонент под названием EasyRSA 2 Certificate Management Scripts.
Идем в директорию C:\Program Files\OpenVPN. Переносим оттуда папку easy-rsa куда-нибудь в другое место, чтобы не приходилось постоянно спотыкаться об UAC, который не даст спокойно работать в Program files. Я перенес в D:\tmp\easy-rsa. Переименовываем файл vars.bat.sample в vars.bat. Открываем его на редактирование и приводим примерно к следующему виду.
Для тех, кто не понял, это просто переменные, которые я указал под свои нужды. Там писать можно все, что угодно, не принципиально для нашей задачи. Можно вообще ничего не менять, а оставить как есть. Создаем в директории папку keys. Далее запускаем командную строку от администратора и перемещаемся в указанную директорию D:\tmp\easy-rsa.
Далее в командной строке пишем vars и жмем enter. Этим мы загрузим переменные из файла vars.bat, потом вводим clean-all. Дальше генерируем Root CA командой — build-ca.
Отвечаем на задаваемые вопросы и завершаем создание корневого сертификата. Он появится в папке D:\tmp\easy-rsa\keys. Дальше создаем сертификат openvpn сервера командой — build-key-server имя_сервера.
Теперь сгенерируем сертификат для клиента. У меня только один клиент в виде удаленного микротика. Вы создаете ровно столько, сколько вам нужно. Используем команду build-key имя_сертификата.
С созданием сертификатов закончили. Они у нас все лежат в директории keys. На микротик, который будет выступать в качестве openvpn сервера, нужно передать файлы:
- ca.crt
- ovpnserver.crt
- ovpnserver.key
Импортируем сертификаты из добавленных файлов. Идем в System -> Certificates и импортируем сначала ca.crt, потом ovpnserver.crt и ovpnserver.key.
Должно получиться примерно так. Теперь приступаем к настройке openvpn сервера в mikrotik. Создадим для него отдельный профиль в PPP -> Profiles.
Все настройки дефолтные. В качестве локального и удаленного адреса использую Ip Pool, который создал в самом начале настройки l2tp. Добавим удаленного пользователя для openvpn в PPP ->Secrets.
Идем в раздел PPP и жмем OVPN Server. Указываем настройки и загруженный ca сертификат.
Далее добавляем по аналогии с остальными vpn серверами OVPN Server Binding и статические маршруты.
На этом настройка 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 клиента. Идем в PPP и добавляем OVPN Client.
Добавляем статический маршрут для доступа к ресурсам удаленной сети за openvpn сервером.
Все готово. Можно подключаться и тестировать скорость vpn соединения через openvpn.
Получилось в среднем 24 мбит/сек при 100% загрузке процессора. Результат сопоставим с l2tp + ipsec. Немного удивил результат. Я думал, будет хуже, чем l2tp, а на деле то же самое. Мне лично вариант с openvpn в целом нравится больше, хотя из-за ограниченности настроек openvpn в микротике преимущества openvpn трудно реализовать. Напомню, что тестировал с шифрованием BF-128-CBC, то есть blowfish.
Вот результат с AES-128-CBC — 23 мбит/сек, примерно то же самое.
С клиент-серверными реализациями vpn сервера в mikrotik разобрались. Теперь просмотрим на скорость l2-vpn в виде eoip tunnel.
Обеспечение защиты соединения
Как отмечалось выше, данные передаются в форме шифрованного пакета.
Для его шифрования используются специальные средства, полный список которых можно просмотреть в настройках подключений.
Мы же выделим те которые характеризуются высокой степенью защищенности, в частности это:
- MSCHAP-v1;
- MSCHAP-v2;
- EAP-TLS;
- MPPE.
Чтобы обеспечить повышенный уровень защиты можно дополнительно использовать дозвоны — звонки ответа, реализованные программным путем.
Они позволяют удостовериться в том, был ли пакет данных передан полностью, и был ли поврежден в процессе пересылки.
А пока рассмотрим, чем выделяются представленные выше варианты.
Стоит отметить, что MSCHAP-v1 не отличается своей надежностью.
Для извлечения парольных хешей из него можно использовать специальные утилиты перехваченного обмена.
MSCHAP-v2 в этом смысле отличается от предшественника, но является уязвимым к словарным атакам на перехваченные пакеты данных, для чего также используются специальные программы, скорость обработки данных в которых может составить всего сутки на расшифровку.
Криптоаналитики могут расшифровать данные и из MPPE, который базируется на использовании потока RC4.
К примеру, расшифровать его можно используя метод подмены битов.
Впрочем, при желании такую уязвимость можно обнаружить, используя соответствующие методы, которые считают контрольные суммы.
Таким образом, становится понятно, что установленную на PPTP защиту можно обойти. И именно поэтому приходится использовать дополнительные средства безопасности.
рис. 5 – Упрощенная схема защищенного PPTP канала
Вам это может быть интересно:
Как войти в настройки роутера — TP-Link, D-Link, Asus, Zyxel Keenetic, Ростелеком
Как подключить роутер к роутеру через WiFi — 2 простых способа
Лучшие советы: Как усилить сигнал WiFi роутера
Настройка EOIP Tunnel + Ipsec
Настроим vpn сеть на базе EOIP в Mikrotik. Тут нужно понимать одно важное отличие от всех предыдущих настроек, которые мы делали ранее. EOIP туннель работает на уровне l2, то есть оба сегмента сети будут считать, что находятся в одной физической сети. Адресное пространство для обоих будет одно и то же. В моем примере это 10.20.1.0/24. DHCP сервер должен остаться только один для обоих сетей. В моем случае он останется на m-server.
Создаем EOIP туннель на m-server. Идем в Interface list -> EoIP Tunnel и добавляем новый.
Из настроек достаточно указать только удаленный адрес второго микротика. Новый EoIP интерфейс необходимо добавить в локальный бридж вместе с физическими интерфейсами.
Идем на удаленный микротик и там делаем все то же самое, только Remote Address указываем другой.
Этого достаточно, чтобы EoIP туннель сразу же заработал. Его состояние будет RS.
На втором микротике EoIP интерфейс так же нужно добавить в локальный бридж с остальными интерфейсами.
Проще всего проверить, что все в порядке, это запросить по dhcp на m-slave ip адрес для интерфейса bridge. Он должен получить ip адрес от dhcp сервера на m-server, при условии, что в сети больше нет других dhcp серверов. То же самое будет и с локальными машинами в сети за m-slave. Они будут получать ip адреса от dhcp сервера на m-server.
Проверим теперь быстродействие такого vpn туннеля на основе EoIP.
Показываю максимальный результат, который у меня получился — 836 мбит/сек. По какой-то причине в разных тестах скорость плавала в интервале между 600-850 мбит/сек. Для того, чтобы скорость изменилась, необходимо было отключить и заново включить EoIP интерфейс. Скорость впечатляет. При этом, процессор не загружен на 100%. То есть узкое место не он. Похоже я уперся в производительность сети. Напомню, что тут нет никакого шифрования и маршрутизации трафика. Прямой l2 канал между двумя микротиками через EoIP vpn.
Добавим в EoIP туннель шифрование Ipsec и посмотрим на скорость. Для этого меняем настройки каналов на обоих микротиках. Добавляем пароль Ipsec и локальные адреса, отключаем Fast Path.
Измеряем скорость соединения.
У меня получилась скорость vpn при использовании EoIP + Ipsec в среднем 27 мбит/сек. Скорость сопоставима с шифрованными туннелями L2tp и Openvpn. В этом плане никаких приятных сюрпризов не получилось. Шифрование очень тяжело дается этой железке. Можно сказать она для него не предназначена практически совсем.
Пример настройки параметров PPTP в OS MS WINDOWS 7
Чтобы понять все тонкости PPTP-соединения стоит попытаться самостоятельно провести настройки такого подключения.
Мы рассмотрим, как этот процесс происходит в системе Windows, в частности, в популярной седьмой ее версии. Сделать это несложно следуя нашим рекомендациям.
Изначально потребуется запустить Панель управления. Произвести это проще всего из меню Пуск.
В ней понадобится выбрать категорию Центр управления сетями.
Попасть туда можно и минуя описанную цепочку. В таком случае следует выбрать из контекстного меню, вызванного сетевому подключению, тот же пункт.
Найти его можно в области уведомлений, расположенной справа в нижней части экрана.
рис. 6 – Категории Панели управления
После запуска Центра управления можно будет вносить изменения в свойства сетевого адаптера.
С этой целью понадобится в левой области окна выбрать команду Изменение параметров сетевого адаптера.
Затем можно вызывать пункт Свойства из контекстного меню для имеющегося локального подключения.
Далее в открывшемся диалоге понадобится установить данные протокола TCP/IPv4, полученные от провайдера связи.
При этом большая часть провайдеров позволяет устанавливать адреса на рабочих станциях для DNS и IP серверов в автоматическом режиме.
После ввода данных их потребуется сохранить.
По завершении внесения изменений в настройки понадобится активизировать подключение.
С этой целью в основном окне Центра управления нужно выделить настроенное ранее подключение и вызвать для него меню правой кнопкой мыши.
В нем следует выбрать пункт Включить.
рис. 7 – Окно категории Центр управления сетями
GRE туннель + Ipsec в mikrotik, создание и настройка
Для настройки GRE туннеля в Mikrotik идем в раздел Interfaces -> GRE Tunnel и добавляем новый со следующими настройками:
Назначаем GRE туннелю ip адрес в IP -> Adresses.
Сразу же создаем статический маршрут для доступа к ресурсам удаленной сети.
Для организации vpn соединения через GRE tunnel то же самое проделываем на удаленном микротике, только меняем соответствующие адреса.
Создаем GRE Tunnel.
Назначаем ip адрес.
Добавляем маршрут в удаленную локальную сеть.
После этого маршрутизация трафика между локальными сетями должна заработать. Не забудьте на firewall разрешить gre протокол.
Проверим теперь скорость соединения по GRE туннелю.
У меня получилось 247 мбит/сек. Напомню, что это нешифрованный маршрутизируемый vpn туннель. Отличие от l2 туннеля EoIP примерно в 3 раза по скорости в меньшую сторону. Выводы делайте сами какие туннели использовать. Если не нужна маршрутизация, то однозначно EoIP.
Теперь проверим то же самое, только настроив в GRE шифрование Ipsec. Добавляем соответствующие настройки в GRE туннели на обоих микротиках.
Измеряю скорость GRE + Ipsec, алгоритм шифрования aes-128 cbc.
Получилось в среднем 29,7 мбит/сек, что примерно соответствует всем результатам с ipsec. Не удивительно, ведь алгоритм шифрования во всех случаях один и тот же. Но тем не менее, в GRE Tunnel скорость немного выше всех остальных участников. Из этого можно сделать вывод, что исключительно для l3 site-to-site подключений GRE Tunnel подходит в плане быстродействия лучше всего.
Как работает и процесс подключения
Работает следующим образом:
- PPTP организует PPP сессию. Используется протокол Generic Routing Incapsulation.
- Происходит еще одно соединение по порту 1723. Оно нужно для перехода и управления GRE.
- Используется протокол MPPE. Он защищает данные при передаче.
- Аутентификация клиентов происходит за счет MSCHAPv2, EAP—TLS.
- На другом конце провода информация извлекается из пакета IPX.
- Отправляется на обработку собственным протоколом системы.
Способы изменения IP адреса компьютера
Для получения переданных данных на человеческом уровне пользователь использует логин и пароль.
Важно! Во время отправки информации канал может быть взломан подбором логина и пароля. Но, когда происходит передача данных, взлом совершить невозможно!
Сравнение скорости L2tp, Pptp, EoIP, GRE и OpenVPN туннелей
Сведу все данные измерений в единую таблицу для наглядного и удобного анализа и сравнения скоростей всех упомянутых vpn соединений в Mikrotik.
VPN Туннель | Шифрование | Скорость (Мбит/c) |
l2tp | нет | 194 |
l2tp | IPsec AES-128 CBC | 26 |
pptp | нет | 194 |
pptp | MPPE128 | 71 |
openvpn | BF-128-CBC | 24 |
eoip | нет | 836 |
eoip | IPsec AES-128 CBC | 27 |
gre | нет | 247 |
gre | IPsec AES-128 CBC | 29,7 |
Приведенная таблица наглядно показывает разницу в различных методах шифрования. С помощью нее можно быстро оценить, к каким потерям производительности может привести шифрование. Сейчас все по-умолчанию все шифруют, но если разобраться, очень часто это не требуется. Можно пойти на некий компромис и использовать pptp сервер, который хоть и не обеспечивает 100% безопасное шифрование, но тем не менее скрывает трафик от просто любопытных глаз и имеет неплохое быстродействие. В любом случае трафик просто так не прочитать, надо целенаправленно приложить усилия для дешифровки. В некоторых случаях такой защиты будет достаточно.
Описание технологии
Спецификация впервые была представлена публике в июле 1999 года и разработана дочерней компанией Microsoft Ascend Communications (сегодня часть Alcatel-Lucent). PPTP не была принята и стандартизирована Целевой группой Internet Engineering. Протокол создается путем связи с одноранговым узлом по PPTP порту 1723. Это TCP-соединение затем применяется с целью инициирования и управления одноранговым узлом.
Формат пакета PPTP GRE не является стандартным, в том числе новое поле номера подтверждения, заменяющее типичное поле маршрутизации. Однако, как и в обычном соединении GRE, эти модифицированные GRE-пакеты напрямую инкапсулируются в IP-пакеты и рассматриваются как IP-номер 47 протокола. GRE-туннель используется для переноса PPP-пакетов. В реализации Microsoft туннелированный трафик PPP может быть аутентифицирован с помощью PAP, CHAP, MS-CHAP v1 / v2.
Онлайн курсы по Mikrotik
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте . Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.
Выводы и напутствие
Если подходить с полной ответственностью к оценке и давать развернутую характеристику можно отметить что PPTP соединение это весьма противоречивый способ передачи данных.
Он предназначен для безопасной передачи данных по сети, но при этом полную безопасность не обеспечивает.
Частично это связано с тем, что этот протокол несколько устарел (дата первичного внедрения – 1999 год).
Канал связи созданный при помощи такого соединения достаточно надежен, но для рядового пользователя сетей он неоправдан.
Для этой же цели в домашних условиях проще использовать анонимные прокси-серверы, анонимайзеры.
Они обеспечат не меньшую надежность и могут использоваться не постоянно, а периодически по мере необходимости.
Что касается коммерческих организаций, то для их коммуникаций построенные по такому принципу сети будут самым простым способом обеспечения сетевой безопасности.
Но, в то же время, можно использовать и другие более надежные средства.
рис. 8 – Пример корпоративной сети на базе PPTP
Подготовительные операции
Независимо от того, какой из вариантов VPN сервера вы предпочтете, доступ клиентов в Интернет будет реализован штатными средствами операционной системы. Для того, чтобы из внутренней сети открыть доступ в Интернет через внешний интерфейс сервера необходимо разрешить пересылку пакетов между интерфейсами (форвардинг пакетов), и настроить трансляцию адресов.
Для включения форвардинга пакетов откроем файл “/etc/sysctl.conf” и изменим значение параметра “net.ipv4.ip_forward” на 1.
Чтобы изменения применились без перезагрузки сервера, выполним команду
sudo sysctl -p /etc/sysctl.conf
Трансляция адресов настраивается средствами iptables. Предварительно уточним имя внешнего сетевого интерфейса, выполнив команду “ip link show”, оно понадобится на следующем шаге. В нашем случае имя интерфейса “ens3”.
Включаем трансляцию адресов на внешнем интерфейсе для всех узлов локальной сети.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Обратите внимание, что в команде необходимо указать реальное имя сетевого интерфейса. На вашем сервере оно может отличаться.
По умолчанию все созданные правила iptables сбрасываются после перезагрузки сервера, для того, чтобы этого избежать, воспользуемся утилитой “iptables-persistent” Устанавливаем пакет.
sudo apt install iptables-persistent
В процессе установки откроется окно конфигурации, в котором система предложит сохранить текущие правила iptables. Так как правила уже настроены, соглашаемся и дважды нажимаем “Yes”. Теперь, после перезагрузки сервера правила будут восстанавливаться автоматически.