Настройка MikroTik L2TP Server + IPSec

Роутер, он же бытовой маршрутизатор, может выступать в роли клиента VPN-тоннеля. Если провайдер использует этот протокол, то есть «VPN», выбирать надо роутер с поддержкой протоколов L2TP и PPTP, а лучше – russian L2TP/PPTP. Интересно, что в большинстве тестов на скорость работы оборудования, результаты которых публикуют в Интернете, исследуются подключения класса «PPPoE» либо «IPoE» (клиент DHCP). Если же говорить о протоколе PPTP, и тем более об L2TP, для которых нужна высокая производительность, провести тест роутеров

041015_0457_1.pngРоутер «режет» скорость VPN

Существуют программки, совместимые с Linux, которые позволяют узнать, как быстро исследуемой системой (процессором + ОС) выполняются математические команды и операции с памятью. Занимают эти программки несколько килобайт, так что использовать их можно на любом домашнем или офисном роутере. Дальше у нас приводятся результаты объективных тестов, а также советы по выбору оборудования, поддерживающего подключение L2TP/PPTP. Для начала, рассмотрим результаты тестирования, чтобы Вы сами могли решить, на какие модели устройств есть смысл обратить внимание, а какие лучше оставить абонентам PPPoE/IPoE.

Скорость выполнения арифметических команд

В тестировании, суть которого объясняется в следующем абзаце, участвовали устройства разных поколений:

  • Asus: RT-AC68U (1600MHz*), RT-AC56U (1000MHz*/800MHz), RT-AC66U (662MHz*/600MHz), RT-N66U (662MHz*), RT-N66U B1 (600MHz), RT-N14U (580MHz), RT-N65U (500MHz), RT-N56U (500MHz), RT-N15U (500MHz), RT-N16 (533MHz*/480MHz), RT-N10U (480MHz*/300MHz), WL-500gP V1 (300MHz*/264MHz), WL-500gP V2 (240MHz)
  • Netgear: WNR3500L V1 (453MHz), WNR3500L V2 (480MHz)
  • Zyxel: Keenetic первого семейства (384MHz), Keenetic II Giga (700MHz)
  • D-Link DIR-320 rev. A1 (240MHz)
  • TP-Link TL-MR3020 (400MHz).

Внутри скобок мы указываем тактовую частоту. Если есть звёздочка – использовался разгон. По результатам тестов производительности можно судить о том, насколько хорошо устройство будет справляться с шифрованием «VPN». Заметим, что операции над числами с плавающей точкой в реализации протокола VPN никогда не используются, хотя скорость выполнения этих операций мы подвергли исследованию тоже. О том, почему не все роутеры одинаково полезны, читайте дальше.

График с результатом тестирования

Нас интересовало, насколько быстро процессор роутера может вычислять последовательность цифр, составляющую запись числа «е» и числа «пи». В каждом из этих алгоритмов используется целочисленная арифметика и работа с памятью (RAM). Скорость записи и чтения из памяти была протестирована отдельно. Так же, как скорость работы арифметики с плавающей точкой. Итого, число разных программных тестов составило 4.

Программы позволяют определять только время решения задачи (в секундах). Так что, производительность нужно оценивать по принципу «меньше – лучше»:

041015_0457_2.pngДиаграмма скорости выполнения тестов

Заметим, что в некоторых случаях задача с плавающими числами решалась быстрее, чем за одну секунду. Иногда время выполнения теста было близким к нулю (на графике столбец не отображается). Всё это говорит о наличии аппаратного сопроцессора, что не так уж и важно, если речь идёт о скорости работы VPN-протокола.

Выводы, получаемые из графика

Если нужна скорость связи не более 50 Мбит/с, подойдёт практически любой роутер (здесь мы говорим только о производительности, а не о надёжности). Такой вывод можно сделать из отзывов пользователей, подключающихся к провайдеру через PPTP-соединение. Если говорить о протоколе L2TP, данную цифру (50 Мбит/с) нужно делить на 2. Как мы отмечали выше, данный протокол является самым «тяжёлым».

041015_0457_3.jpgСкорость маршрутизации «Keenetic Giga»

Рассматривая график из предыдущей главы, можно обратить внимание вот на что — большинство роутеров выполнили тест «Memory Bench» примерно за 2 секунды. Но для некоторых устройств, как легко заметить, время выполнения теста составило более 4-х секунд. Выводы можете сделать сами: медленная системная шина будет снижать скорость шифрования. По-другому не может быть.

Советы по выбору оборудования

Процессор любого роутера – это микросхема класса SoC, в составе которой, помимо центрального модуля и КЭШ, есть разные дополнительные блоки. Внутри микросхем Ralink, для которых, кстати, пишется лучшее программное обеспечение, модулей аппаратного шифрования нет. То есть, скорость работы VPN-соединения в данном случае будет пропорциональна общей производительности процессора. Роутеры Zyxel Keenetic II, Asus RT-N65U/RT-N56U и многие другие, как Вы уже догадались, построены на микросхеме SoC Ralink. В защиту этих микросхем можно сказать следующее: в их составе есть модуль, значительно ускоряющий маршрутизацию незашифрованных пакетов. А если тактовая частота будет достаточно высокой, процессор Ralink должен справляться с любым шифрованием.

041015_0457_4.jpgПродукция Ralink и Broadcom

Внутри роутеров Asus RT-N16U, N15U, N66U и AC66U, а также Netgear WNR3500L V1/V2 установлены чипсеты, выпускаемые компанией Broadcom. Всё программное обеспечение, предназначенное для таких микросхем, является закрытым, но альтернативные прошивки имеются. Только новые чипсеты Broadcom (Asus RT-N66U) имеют в своём составе блоки ускорения маршрутизации, взаимодействие с которыми реализовано в фирменных прошивках Asus. Ну а дополнительные аппаратные блоки, ускоряющие шифрование, присутствуют во всех микросхемах Broadcom. Таким образом, можно выбрать что-то одно: высокую скорость маршрутизации незашифрованных пакетов, обеспечиваемую микросхемой Ralink, либо наличие блоков шифрования.

Здесь говорилось только о скорости работы оборудования, но не о чём-либо ещё. Выбирая новый роутер, следует обратить внимание на общую надёжность устройства, а также на реальные возможности прошивки и т.п.

Кстати, многие провайдеры, кроме «Билайн» и ещё нескольких, используют протокол L2TP интересным способом – отключают шифрование VPN.

В общем, выбор оборудования нужно делать, исходя из действительных условий, в которых его планируют использовать. А по-настоящему универсальные решения (быстрые и надёжные), если и существуют, могут стоить совсем не дёшево.

L2TP «Билайн», настройка RT-Nxx

PR-12408_Mikrotik_750x394_blog_main_vk@2x.png

Ранее мы писали про установку и базовую настройку Mikrotik CHR на виртуальные серверы. В этой статье мы выполним настройку VPN-сервера на базе Cloud Hosted Router и подключим клиентские устройства к настроенному VPN.

При написании данной статьи использовался облачный сервер со следующими характеристиками:

  • 1 vCPU;
  • 512 МБ RAM;
  • 5 ГБ быстрый диск.

Операционной системой выбрана актуальная на момент написания статьи Stable-версия RouterOS: 6.47.6. Мы предполагаем, что читатель уже установил MikroTik CHR и провел первичную настройку.

Несмотря на то, что в статье описана настройка на Cloud Hosted Router, эта инструкция может использоваться и для физических маршрутизаторов с RouterOS.

Общие настройки

Создание пула IP-адресов

При подключении к VPN клиент «входит» в локальную сеть с VPN-сервером. Это требует серой подсети и списка доступных для клиента адресов, называемых пул. Создать пул можно следующей командой:

/ip pool add name=<название> ranges=

Мы выделили 253 адресов в подсети 172.24.0.0/24 и назвали ее vpn-pool.

/ip pool add name=vpn-pool ranges=172.24.0.1-172.24.0.253

Обратите внимание, что адрес 172.24.0.254 не входит в пул адресов, так как этот адрес будет принадлежать VPN-серверу и не должен быть выделен клиенту.

Создание PPP-профиля

«Связать» пул адресов для клиентов и адрес VPN-сервера можно с помощью PPP-профиля. Используем следующую команду:

/ppp profile add name=vpn-profile local-address=172.24.0.254 remote-address=vpn-pool use-mpls=no use-compression=yes use-encryption=yes only-one=no

Рассмотрим параметры команды:

  • name=vpn-profile — задаем имя профиля;
  • local-address=172.24.0.254 — задаем адрес VPN-сервера;
  • remote-address=vpn-pool — указываем использовать пул vpn-pool для выдачи адресов клиентам;
  • use-mpls=no — не используем MultiProtocol Label Switching;
  • use-compression=yes — включаем сжатие трафика;
  • use-encryption=yes — включаем шифрование;
  • only-one=no — разрешаем более одного одновременного подключения для пользователя.

Создать локальную сеть между VPN-сервером и VPN-клиентом — это половина проблемы. Далее необходимо разрешить клиенту выходить в интернет через VPN-подключение. Для этого необходимо настроить NAT. Сделать это можно следующей командой:

/ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade

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

Далее создаем пользователя. Сделать это можно следующей командой:

/ppp secret add name=<логин> password=<пароль> service=<тип сервера>

Параметр service определяет, какие сервисы доступны пользователю. Мы планируем использовать пользователя для демонстрации четырех протоколов VPN, поэтому установим значение any. Создаем пользователя vpn-user с паролем vpn-password с доступом к любому сервису:

/ppp secret add name=vpn-user password=vpn-password service=any

Пользователь создан. Однако, некоторые VPN-протоколы требуют сертификатов.

Генерация сертификатов сервера

Если вы планируете использовать OpenVPN или SSTP, то со стороны сервера требуются два сертификата: CA (Certification authority, Центр Сертификации) и серверный (server). Первый сертификат является «неоспоримым» и им можно подтверждать самоподписанные сертификаты, созданные для сервера и для клиентов.

Сперва выберем Common Name (CN) для центра сертификации. Здесь нет специфических требований, поэтому допустимо использовать любое имя. Мы используем имя хоста в качестве CN. В параметре ca-crl-host необходимо указать IP-адрес или домен VPN-сервера.

/certificate add name=ca-template common-name="MikroTik" days-valid=3650 key-usage=crl-sign,key-cert-sign  /certificate sign ca-template ca-crl-host=185.X.X.83 name="MikroTik"

Далее создаем сертификат для VPN-сервера и подписываем его только созданным CA-сертификатом. Обратите внимание, что CN для сертификата сервера должен быть строго доменом или IP-адресом.

/certificate add name=server-template common-name=185.X.X.83 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server /certificate sign server-template ca="MikroTik" name="server@MikroTik"

Для протокола SSTP значение поля CN является критичным. Если CN является IP-адресом, то VPN-клиенту нужно подключаться именно по IP-адресу. При подключении по домену произойдет ошибка.

Сертификат CA необходимо экспортировать, чтобы клиент доверял сертификату сервера. Файл:

/certificate export-certificate "MikroTik" export-passphrase=""

После экспорта на вкладке Files в веб-интерфейсе можно будет скачать файл cert_export_MikroTik.crt. Сохраните его, он потребуется далее.

Настройка VPN-сервера

Мы рассмотрим четыре протокола для организации VPN:

  • PPTP;
  • L2TP/IPsec;
  • OpenVPN;
  • SSTP.

Каждый из протоколов обладает своими плюсами и минусами. Рассмотрим протоколы поближе.

PPTP

Начнем с самого легкого в настройке протокола Point-to-Point Tunneling Protocol (PPTP). Данный протокол не требует большого количества вычислительных ресурсов и поддерживается «из коробки» множеством операционных систем. Среди минусов — наличие серьезных уязвимостей в протоколах аутентификации.

Запустить VPN-сервер можно в одну команду:

/interface pptp-server server set enabled=yes default-profile=vpn-profile authentication=mschap2

В качестве клиента возьмем смартфон под управлением ОС Android 8.0.0.

1_PPTP_1-1525x1356.jpg
Добавление VPN и подключение средствами ОС Android

Подключение по PPTP не требует дополнительного программного обеспечения и не доставляет проблем. Однако, если хочется чуть больше безопасности, то следует посмотреть в сторону протоколов L2TP/IPsec.

L2TP/IPSec

Как и PPTP, протоколы L2TP/IPsec поддерживаются большим количеством операционных систем. Более того, используемый в IPsec алгоритм шифрования AES на данный момент не имеет серьезных уязвимостей, что гарантирует относительную безопасность и конфиденциальность при использовании L2TP/IPsec.

Настройка L2TP/IPsec VPN-сервера похожа на настройку PPTP-сервера:

/interface l2tp-server server set enabled=yes default-profile=vpn-profile authentication=mschap2 use-ipsec=required ipsec-secret=super-secret

Обратите внимание на параметр ipsec-secret. Этот параметр — общий ключ IPsec. Так как мы используем аутентификацию по паре логин/пароль без сертификата, то в настройках клиента необходимо выбирать L2TP/IPsec PSK или L2TP/IPsec с общим ключом.

2_L2TP-IPsec_1-1525x1356.jpg
Выбор L2TP/IPsec PSK и ввод ipsec-secret

Хотя L2TP/IPsec является хорошим компромиссом, стоит оценить и OpenVPN.

OpenVPN

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

Включаем OpenVPN-сервер с указанием серверного сертификата, который сгенерировали ранее:

/interface ovpn-server server set auth=sha1 certificate="server@MikroTik" cipher=aes128,aes192,aes256 default-profile=vpn-profile enabled=yes require-client-certificate=yes

Создаем шаблон клиентского сертификата:

/certificate add name=client-template common-name="client" days-valid=3650 key-usage=tls-client

Генерируем сертификат для пользователя vpn-user на основе шаблона:

/certificate add name=client-vpn-user copy-from=client-template common-name="vpn-user@MikroTik" /certificate sign client-vpn-user ca="MikroTik" name="vpn-user@MikroTik"

Экспортируем сертификат и ключ. Обратите внимание, что пароль во время экспортирования указан пароль super-secret-password, который необходимо будет ввести при импорте в VPN-клиенте.

/certificate export-certificate "vpn-user@MikroTik" export-passphrase="super-secret-password"

В веб-интерфейсе на вкладке Files можно найти следующие файлы:

  • cert_export_vpn-user@MikroTik.crt;
  • cert_export_vpn-user@MikroTik.key.

Скачиваем указанные файлы и составляем конфигурационный файл ovpn:

client dev tun proto tcp-client remote  1194 nobind persist-key persist-tun cipher AES-128-CBC auth SHA1 pull verb 2 mute 3   auth-user-pass   # Добавляем эту строчку, чтобы отправлять все запросы через VPN redirect-gateway def1   <ca> # Вставляем содержимое cert_export_MikroTik.crt </ca><cert> # Вставляем содержимое cert_export_vpn-user@MikroTik.crt </cert><key> # Вставляем содержимое cert_export_vpn-user@MikroTik.key </key>

Передаем ovpn-файл на смартфон и импортируем его через OpenVPN Connector.

3_ovpn_1-1525x904.jpg
Импортирование профиля ovpn

В качестве Private Key Password используем пароль, указанный при экспортировании. Данные пользователя для подключения остались неизменными.

SSTP

SSTP — это проприетарный протокол от Microsoft, обладающий достоинствами OpenVPN. Данный протокол поддерживается ОС Microsoft Windows, начиная с Vista SP1, а на других ОС требует установки дополнительного ПО.

Для запуска сервера достаточно выполнить одну команду:

/interface sstp-server server set enabled=yes certificate=server@MikroTik default-profile=vpn-profile

Так как данный протокол поддерживается Windows, то проверим работу сервера на Windows 10. В первую очередь необходимо установить центр сертификации. Скачиваем cert_export_MikroTik.crt и открываем двойным кликом.

4_import_ca.png
Импорт сертификатов

Откроется окно, которое предупреждает, что нет доверия к этому центру сертификации. Это исправляется установкой сертификата. При установке выбираем хранилище «локальный компьютер» и на следующем шаге помещаем сертификат в «доверенные корневые центры сертификации». Теперь можно приступить к настройке VPN-подключения.

5_sstp_setup.png
Настройка SSTP VPN на Windows 10

Открываем Параметры Windows — Сеть и Интернет — VPN и добавляем VPN-подключение, вводим имя или адрес сервера как было указано в сертификате сервера и вводим свои логин-пароль. VPN-подключение установлено.

Заключение

Мы рассмотрели настройку VPN-серверов на четырех разных протоколах. Надеемся, что эта инструкция поможет вам создать собственный виртуальный маршрутизатор на базе Mikrotik CHR.

Мы записали свой подкаст. Ещё перед тем как ввязываться, прекрасно понимали, что эту тему сложно назвать трендовой. Некоторые вообще считают, что она уже ближе к Клабхаусу. Но мы ставили цель не похайпить, а решить вполне конкретную задачу — победить уныние онлайна.

bef47627c1290b5b2737a11673f59148.png

DevDay

2ГИС проводит митапы под названием DevDay с 2012 года. За это время собирались примерно 50 раз, чтобы обсудить как жёстко-хардкорные темы, так и продуктово-теоретические. Формат обычный для митапов — два-три интересных спикера, крутое общение, весёлое афтепати. Всё было очень круто и часто нам даже приходилось многим отказывать, так как банально не могли вместить всех желающих в большом конференц-зале офиса.

99852ffee6693ed4d2dad326bbcac1ba.jpeg
стабильно аншлаг

Что не так с онлайном

С приходом карантина лавочку пришлось свернуть и перейти в онлайн. В таком формате провели два митапа: говорили о C++ и про то, в чём заключается работа продакта.

Неоспоримый плюс онлайна — можно позвать спикера из любой локации. Так, находясь в Новосибе, нам удалось пообщаться с Андреем Аксёновым и Александрой Кулачиковой из Москвы.

Но есть и очевидный минус — мы не смогли повторить энергетику офлайна. Всё-таки «разговаривать с телевизором» между делами по дому и просмотром инстаграма — это не то же самое, что вырваться на встречу с близкими по духу людьми и полностью погрузиться в тему. Спикеры это чувствовали и говорили, что эмоций не хватает.

Посмотрели, кто как решает эту задачу, и поняли, что для нас самое правильное — искать другой формат и ждать возможности встречаться в офлайне.

Так и появился DevDay-подкаст. Формат подкастов позволяет не подстраиваться по времени и постоянно смотреть в экран, а запускать фоном в удобное время. Да и со спикерами удобнее договариваться о времени записи. Отдельно отмечу, что диалог всегда интереснее монолога.

DevDay-подкаст

Первые выпуски писали на коленке. Обычный рекордер, наушники от Айфона. Прежде чем заказывать красивые ретромикрофоны и обмазываться звукопоглощающими панелями, хотелось проверить гипотезу «а смогу ли я говорить связно хотя бы 20 минут?». Получилось не сильно связно, но приемлемо. Особенно если верить в себя, что постепенно получится лучше. Да и с интересными гостями пока везёт.

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

d199142ceaeb5dcd00472198d2d7e182.JPG
микрофоны в кадре, звукача не видно

Кстати, о гостях и темах. Так или иначе они связаны с 2ГИС, компаниями экосистемы и их деятельностью. То есть примерно 100500 тем из разных сфер IT и бизнеса. 

О чём первые пять выпусков

5. Школа 21

6340cfa25c1796c1cd15942980f6d4e3.png

Беседа с Иваном Чубченко, директором «Школы 21» в Новосибирске. Обсудили:

  • чем «Школа 21» отличается от «Школы 42» и «Школ» в Казани и Москве;

  • при чём тут 2ГИС и Сбер;

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

  • в чём особенности обучения без учителей;

  • что не так с современной системой образования и где во всём этом место «Школы».

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

4. О красоте и разнообразии карт

03f6a17638cfc62ae6453788513792a7.png

Как стать дизайнером, который рисует карты, и чем сегодняшние карты отличаются от карт прошлого и будущего.

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

3.  Возвращенцы

17ec5577dc2f88c923c52bb7a78430a5.png

Болтаем с ребятами, которые уходили из 2ГИС, а потом вернулись. Обсудили IT, зарплаты, компании и реализацию детских мечт. И главное — почему сотрудники уходят даже из самых хороших компаний

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

2. Из разработчика в продакты

827190d76f62136f206db98e67b30603.png

Вадим Смирнов, менеджер продукта в 2ГИС.

О чём говорили:

  • когда стоит идти в продакты,

  • мешает ли опыт разработчика управлять продуктом,

  • успел ли Вадим разочароваться в новой профессии или только идёт к этому.

Apple-подкасты / Google-подкасты / Я.Подкасты / Youtube / SoundCloud

1. Про общение

e3e9d24b026143555e7343b7f34ece54.png

Максим Берёзкин, крайний за продукты 2ГИС

  • Зачем 2ГИС тратит ресурсы на информирование команд о фичах, метриках и деньгах. 

  • Что такое «Доставили», R&D Talks и продуктовый саммарайзинг 

  • Нужно ли рассказывать в R&D о деньгах и продуктовых метриках 

  • Какой эффект от всего этого.

Apple-подкасты / Google-подкасты / Я.Подкасты / YouTube / SoundCloud

Планы

В следующем выпуске хочется поговорить с Ильёй Таратухиным. Немного о нашем офисе в Петербурге, но больше о том, как руководитель команды фронтенд-инфраструктуры решился вернуться в 2ГИС в роли руководителя офиса разработки ПО.

Если же говорить о более долгих планах, то хочется продолжать — находить интересные темы и спикеров. А ещё уже хочется свою микростудию с теми самыми панелями и микрофонами.

Если вам интересно более подробно узнать о 2ГИС и компаниях экосистемы, процессах и кейсах — пишите в комменты, в личку или в Телеграм. Выберем самое интересное и запишем выпуск.

И, конечно же, ставьте лайк, нажимайте колокольчик, расскажите друзьям, делитесь мнениями — что заходит, что не заходит, куда качать тему и с кем.

ссылка на оригинал статьи https://habr.com/ru/company/2gis/blog/559372/

Используемые источники:

  • https://27sysday.ru/interesno/test
  • https://selectel.ru/blog/vpn-on-mikrotik-chr/
  • https://savepearlharbor.com/

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации