Mikrotik: Настройка IPsec & L2TP-сервера

Введение

Существует различное множество вариантов VPN, которые можно использовать для той или иной ситуации. В интернете также много статей по настройке, но когда берёшься за какой-то один вариант, возникает много вопросов, т.к. в разных источниках делают обычно по-разному. Особенно это касается всяких непонятных пунктов меню. А чтение официальной документации изначально сбивает с толку, если читаешь в первый раз и пока нет общего понимания, как работает технология. Также было и у меня, когда я столкнулся с необходимостью разобраться, как же всё-таки правильно настроить VPN-сервер на Mikrotik с шифрованием IPsec.

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

Обоснование выбора

Речь пойдет про L2TP, как уже понятно из названия статьи. L2TP изначально предоставляет услугу PPP (на канальном уровне модели OSI) с последующей инкапсуляцией, что позволяет работать поверх IP.

Выбор его обусловлен тем, что:

  • данный протокол поддерживается почти всеми популярными ОС из коробки (Win, Android, iOS), т.е. ничего не нужно дополнительно устанавливать, как в случае с OpenVPN;
  • L2TP можно применять, когда клиент имеет динамический IP-адрес (или находится NAT).

Если бы и сервер и клиент имели статические внешние IP-адреса, то вполне можно было бы использовать чистый IPsec или же IPIP, GRE и EoIP over IPsec. Но чаще всего только с одной стороны имеется белый IP-адрес (например, в одном офисе), А потому все удаленные клиенты могут свободно подключаться через L2TP, будь это пользователи или же удалённые офисы.

Казалось бы, всё хорошо и замечательно с L2TP, но есть и главный его недостаток – отсутствие шифрования. Поэтому для решения этой проблемы и используется IPsec, который работает на сетевом уровне модели OSI и позволяет установить сначала IPsec-соединение, которое будет защищённым, а уже потом внутри него устанавливать L2TP-соединение.

Из минусов такого решения является производительность железки, на которой будет IPsec. CPU маршрутизатора будет интенсивно использоваться для шифрования пакетов и в результате скорость значительно просядет. Но эта проблема также решаема, т.к. у Mikrotik есть модели устройств, которые поддерживают аппаратное шифрование. При выборе маршрутизатора Mikrotik стоит учесть этот момент и рассмотреть модель с поддержкой т.н. hardware acceleration.

Настройка Firewall

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

Для протоколов IKE, NAT-T и ipsec-esp:

/ip firewall
filter add chain=input protocol=17 dst-port=500,4500 action=accept #  IKE, NAT-T 
filter add chain=input protocol=50 action=accept # ipsec-esp

Для протокола L2TP, который работает только через IPsec:

/ip firewall
filter add chain=input protocol=17 dst-port=1701 ipsec-policy=in,ipsec action=accept

После главное не забыть поднять эти правила выше запрещающих правил цепочки input.

Настройка IPsec

Теперь закончив с вводной теорией пора переходить к практике и настроить IPsec на Mikrotik. В последних версиях прошивки RouterOS, настройка IPsec для L2TP ну очень простая, т.к. всё можно организовать на дефолтных настройках с минимальными изменениями. Путь воина – это как минимум понимать, что будет изменяться, зачем и почему, чтобы суметь отладить в случае необходимости.

Все дальнейшие действия настраиваются в меню IP -> IPsec.

Для настройки в основном будут использованы уже имеющиеся элементы default с некоторыми изменениями.

Пошагово процесс будет выглядеть так с некоторыми пояснениями:

  • Всё начинается с группы. Я буду использовать дефолтную, здесь без изменений:
  • После настраивается Profile – определяет набор параметров, которые будут использоваться для согласования IKE во время фазы 1. Эти параметры могут быть общими с другими одноранговыми конфигурациями:

Hash Algorithms я указал sha1, Encryption Algorithm – aes-128, DH Group – modp1024 и modp2048. Данный выбор обусловлен рекомендуемыми значениями из документации Mikrotik + нужно учитывать, что от выбранного алгоритма будет зависеть производительность, т.к. чем больше длина ключа, тем больше будет тратиться ресурсов CPU. Также с данными параметрами можно ещё поиграться в случае необходимости под каждую ситуацию.

Важным параметром тут является NAT Traversal – это протокол, который позволяет работать IPsec через NAT. IPSec использует протоколы сетевого уровня, которые NAT в свою очередь обработать не может. А потому для решения данной проблемы придумали протокол NAT-T (является расширением в IKE, а в IKEv2 его неотъемлемая часть). NAT-T дополнительно инкапсулирует пакеты IPsec в UDP-пакеты, которые NAT в дальнейшем отбрасывает.

Данное решение применимо только к протоколу ESP, т.к. протокол AH подписывает полный пакет, включая заголовок IP, который изменяется NAT, делая подпись AH недействительной.

  • Создается Peer – конфигурация для установки соединения между IKE-демонами, далее это соединение используется для согласования ключей и алгоритмов SA:

Ругань на This entry is unreacheble появляется в используемой мной RouterOS v6.44.3 , в последних версиях должно быть исправлено, на работоспособность не влияет.

Для пира указывается, имя и какой профиль использовать, а также важный параметр Send INITIAL_CONTACT, который должен быть выключен. Данный параметр указывает, следует ли отправлять пакет IKE “initial contact” или ждать удаленную сторону. Этот пакет должен инициировать удаление старых одноранговых SA для текущего адреса источника. Обычно клиенты являются инициаторами, и для этого параметра должно быть установлено значение no. Исходный контакт не отправляется, если для ikev1 включен modecfg или xauth.

А вот параметр Passive включен. Если же пассивный режим отключен, одноранговый узел будет пытаться установить не только фазу 1, но и фазу 2 автоматически, если политики настроены или созданы во время фазы 1.

  • Потом настраивается Identities – параметры конфигурации, специфичные для удаленного узла :

Выбирается созданный ранее Peer, auth метод – ключ, в поле Secret данный ключ вводится. Группа выбрана та, которая была создана в самом начале. Параметр generate-policy=port-strict (принимать порт от клиента) – рекомендуемое значение согласно оф. документации.

В ранних прошивках RouterOS данной вкладки не было, а часть её функционала настраивалась в предыдущем вкладке Peers. Это к сведению, чтобы не путаться.

  • После настраиваются дефолтные Proposals – алгоритмы шифрования для SA. Данный пункт немного похож на Profiles – главное не запутаться.

Здесь указывается имя и используемые алгоритмы – описаны в документации Mikrotik, я выбрал рекомендуемые для своей железки.

  • И на последнем этапе конфигурации IPsec настраивается Policy – используется для определения того, должны ли параметры безопасности применяться к пакету:

Важна галочка Template и указанная группа default, а также указанный протокол UDP и адреса: источника и назначения.

Основное в разделе Action раздела Policy:

Под данную политику будет попадать весь трафик туннеля L2TP, который будет настроен на использование IPsec, а потому в поле Action установлено значение encrypt – то есть будет выполнено шифрование на основе Proposial, в котором указаны выбранные алгоритмы.

На данном этапе настройка IPsec закончена и можно переходить к конфигурации L2TP.

Настройка L2TP

В данной настройке будет минимум шагов, т.к. особых сложностей нет.

Создаётся пул адресов для VPN-клиентов в меню IP-Pool:

Создается PPP-профиль с дефолтными настройками, указывается только локальный адрес и удаленные адреса из созданного ранее пула:

В разделе PPP-Secrets создается пользователь для созданного выше profile.

И в том же разделе PPP включается L2TP-сервер:

Здесь, собственно, активируется сам сервер и указывается, что требуется использование IPsec с нужным секретом, который был задан при настройке IPsec Identities. Используется mschap2 для авторизации через L2TP. Значение required использовано для того, чтобы убедиться, что принимаются только L2TP-соединения, инкапсулированные в IPsec. Хотя на практике у меня с этим параметром получилось установить соединение с Linux-клиента без IPsec – уж не знаю, где ошибка и что не так, но для верности запретил такие подключения без шифрования ещё на уровне firewall в начале статьи.

На этом всё, настройка IPsec и L2TP-сервера на Mikrotik завершена и можно переходить к настройке клиента.

Настройка клиента под Windows

Для наглядности в рамках статьи я настрою клиента на Windows 10, чтобы проверить корректность проделанной работы.

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

А потом в стандартной панели управления изменить настройки безопасности, указав использование обязательного шифрования и разрешить протокол mschap2, который был указан для использования в настройках L2TP-сервера на Mikrotik:

После этого подключение из-под винды корректно устанавливается.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *