Mikrotik L2TP/IPSec за NAT: ipsec,error failed to pre-process ph2 packet

  • Tutorial
При использовании Mikrotik за NAT (в частности за всякими USB GSM модемами) в режиме клиента L2TP/IPSec, у некоторых операторов в определенных режимах, получал проблему с ошибкой ipsec,error failed to pre-process ph2 packet.
Но с появлением RoS 6.38 появилась возможность справиться с ошибкой.

Итак, ошибка появляется в обычной конфигурации клиента L2TP как на картинке:


Основная проблема в том, что политика IPSec, применяемая в такой настройке, прибита гвозьдями и использует ike1. Ike1 в свою очередь, в реализации RoS, имеет проблему при прохождении NAT без проброса портов и как отягчающие обстоятельство: множественные туннели с l2tp тоже не проходят из-а одного NAT (а количество клиентов на модеме огромное).
Решить проблему можно при использование IKE2 (а для кучи клиентов за одним NAT нужно отказаться от авторизации PSK в пользу RSA Signature), который невозможно настроить из меню выше, но можно сделать трюк: заходим в меню IP -> IPSec


Копируем динамически создаваемый пир, и меняем в нем настройки как показано ниже:


А именно меняем Exchange Mode на IKE2, в закладке Encryption настраиваем необходимые параметры шифрования.

Осталось отключить в настройках L2TP/IPSec использование IPSec.

Вот собственно и все, соединение поднимается, шифрование работает.
Поделиться публикацией

Комментарии 54

    –3
    Поставил минус за то, что в статье нет разбора проблемы на сетевом уровне, или хотя бы ссылки на такой обзор.
      +2
      Учел ваше замечание, и дал небольшое разьяснение про причину ошибки. Кто сталкивался с ней, перечитал десяток тредов на форуме разработчиков, где чистого решения нет, хотя идея была.
      0
      Кстати, кто скажет они починили баг, когда нельзя было поднять больше 1 соединение по l2tp из одной локальной сети за NAT?
        +1
        По сути нет, так как проблема в реализации ike1. Если извернуться с ike2, как в этой статье, то должно работать.
          0
          А можно выложить более подробно с конфигами?
          И в такой связки есть подключение с ios и android?

            0
            У меня в качестве сервера Linux + strongswan, а mikrotik как клиент. Может кто еще поделится? Сервер на mikrotik пока еще не планировали, может в лаборатоном окружении сделаю.
              0
              Просто в небольшой офис ставится mikrotik и ставить еще linux для l2tp как-то ненужно.
              Openvpn конечно спасает, но вот это вечная генерация ключей на разные организации и отсутствие бесплатного PKI для всего этого, делает печальным котиком.
                0
                Думаю это вам сильно поможет: easy-rsa
                Не отменяет генерацию сертификатов, но позволяет немного автоматизировать процесс.
                  0
                  Нет, ну я не полный извините дятел. Но easy-rsa не очень удобен, особенно когда у вас несколько разных организаций и люди далеки от этого, а иногда надо.
                  Да много вопросов по безопасности сразу, поэтому вариант с l2tp самый оптимальный.
                    0
                    А как вы представляете работу с PKI. Чего вам не хвмтает в easy-rsa?
                      0
                      Мне хватает всего, а вот людям нужен простой gui.
                      Писать GUI скрипты к скриптам, что-то как то совсем overkill.
                        0
                        В OpenVPN PKI меня немного смущает такоя концепция — для того чтобы отключить пользователя нужно создать сущность (запись в списке отзыва), а не удалить (логин/пароль из базы/конфига).

                        Т.о. админ перед увольнением может создать себе сколько угодно сертификатов невнося их в реестр выданных.
                          0
                          Это нормально для PKI с CRL.
                          Админа увольняют так-же как и нанимают нового юриста: первая задача — уволить предидущего юриста так, чтобы он не подал на компанию в суд.
                    0
                    PKI есть прямо в ROS — хорошая статья на эту тему https://habrahabr.ru/post/269679/
                      0
                      Да я знаю, только он у них периодически с обновлениями начинает вставать в позу.
                      И вообще с PKI для SOHO вообще как-то грустно или разворачивать хрен знает чего или вон, скрипты есть и не выпендривайся.
                0
                Нашел в записях по изменениям

                >added support unique policy generation which will allow multiple peers behind the same NAT (cli only)

                Но честно говоря, я не понял как это использовать :/
                  0
                  А потом тут:

                  One thing here caught my attention: «ROS 7 will remove the restriction for having more than one L2TP/IPSEC user behind the same NATed network».
                  My understanding is that the router on the client side (road warrior) side of the equation is the one that cannot distinguish the traffic, not the server side router. Therefore, nothing can be done on the server side to remedy the situation.

                  https://support.microsoft.com/en-us/help/2028625/only-one-of-the-clients-that-are-behind-the-same-nat-device-can-create-l2tp-vpn-connections-to-a-vpn-server-that-is-running-windows-server-2008-r2

                  В общем пока будем использовать недо openvpn :/
                  Или использовать только ios и android.

                  >Mikrotik — No it will not work. We will not focus on l2tp/ipsec since mostly all vendors are switching to ike2 and l2tp/ipsec becomes deprecated.
                    0
                    Это они зря так.
                    Я так и не решил вопрос с OSPF при использовании совместно с IPSec Tun (пускай и IKE2). Как анонсировать маршруты? Поэтому варианты туннелей приходится оставлять. Особенно, когда работаешь из-за динамического NAT (тут вариации GRE/IP Tun не прокатыают).
                      0
                      Ждем ROS7, они там перейдут на новое ядро linux с новыми плюшками патчами итд.
                0
                У нас Микротик стоит за НАТ и выступает в качестве сервера VPN — так вот несколько подключений l2tp спокойно поднимаются одновременно клиентами за еще одним НАТ.
                  +1
                  Тут проблема немного иная.
                  Если несколько клиентов из-за одного и того-же NAT идут к одному и тому-же серверу (mikrotik), тогда и были проблемы. Были исправления к ike1, которые исправляли эту проблему, но не на всех ситуациях оно работало, была большая зависимость от клиента (при использовании xauth вообще не было проблемы).
                    0
                    Мы кажется тестировали такой кейс — расшарил инет с телефона и подключил два компа к нему — да, первое соединение отваливалось при подключении второго клиента. Но у нас такой кейс пока в реальности маловероятен, несмотря на 300 сотрудников, VPN ом пользуются немного сотрудников и крайне маловероятно, что два сотрудника из дома с одного НАТа пойдут в VPN на работу :)
                    Но есть вероятность объединения офисов — но тогда проще поднять один туннель между офисами, чтобы клиентами не пришлось поднимать каждому VPN
                      0
                      >, VPN ом пользуются немного сотрудников и крайне маловероятно, что два сотрудника из дома с одного НАТа пойдут в VPN на работу :)

                      Может быть два устройства у одного сотрудника.
                        0
                        Или из одной гостиницы несколько людей домой/на работу коннектятся.
                          0
                          Пофиксили :)

                          *) l2tp — added support for multiple L2TP tunnels (not to be confused with sessions) between same endpoints (required in some LNS configurations);
                            0
                            Праздник) спасибо.
                              0
                              LNS configurations — это где?
                              0
                              У кого получилось настроить? Обновился на ROS 3.9.1 из описания которой строчка выше. Не работает, проверял на разшареном со смартфона интернете, при подключении 2-го клиента, 1-го выбрасывает. Все как раньше.
                                0
                                Попробую протестировать у себя.
                                  0
                                  А авторизация случаем не PSK?
                                  Проблема нескольких клиентов за одним NAT у меня разрешилась после применения RSA Signature авторизации. Все клиенты сидять за usb gsm модемами, ранее на ike1 psk вообще не соединялись, ike2 решил проблему с ph2, а отказ от PSK — вышибание клиентов.
                                    0
                                    У нас авторизация Radius — уволился сотрудник — учетку в домене заблочили — все, сразу потерял доступ ко всем ресурсам компании — почта на гугле, VPN, локальные какие-нить серваки, доступ на WiFi и прочее.
                                      0

                                      С radius не пробовал пока.

                                      0
                                      Да, авторизация PSK.
                                0
                                Пока такое крайне маловероятно у нас :)
                        0
                        Смысл статьи одной строчкой: если вас не устраивает генерация параметров IPSec автоматически — задайте их руками. Идея бесспорно здравая, но на статью не тянет имхо.

                        Ну и по мелочи. IKEv2 появился в ROS в 6.38. Почему Вы ссылаетесь именно на 6.38.1?
                          +1
                          • На офф. форуме масса тредов с криками о помощи, ответа готового нет, есть намеки. Статейка в помощь страждущим, проблема + решение. Поэтому и флаг: tutorial.
                          • По первым упоминаниям в changelog
                          .
                            +1
                            По первым упоминаниям в changelog


                            По первым упоминаниям в changelog чего? IKEv2?

                            What's new in 6.38 (2016-Dec-30 11:33):

                            !) ipsec — added IKEv2 support;

                              +1
                              Проглядел, спасибо.
                          0
                          У меня l2tp без IPsec. MPPE128 stateless encoding используется. Есть варианты из одной серой NAT зоны подключиться нескольким клиентам?
                            0
                            Я бы порекомендовал отказаться от mppe, в виду его низкой стойкости.
                            Не понятно, что значит к нескольким клиентам? Один клиент за NAT без проблем устанавливает несколько соединений с другими серверами.
                              0
                              Стойкость некритична. Роутер1-провайдер-провайдер-роутер 2. В середине этой цепочки я как-то в не ожидаю атаки. Лень настраивать было) посмотрю. Насчет клиентов наоборот. У роутера белый IP, а клиенты сидят в одной серой сети с одним внешним адресом.
                                0
                                Перехват трафика по середине вполне возможен, так что я бы не пренебригал этим.
                                Вторая описанная вами ситуация имела место при использовании ike1, сейчас там было много исправлений, и сработает ли он корректно — не знаю. Вот ike2 должен работать, однако тут сложности с настройками пира будут, тут уже политика для локального адреса задается, я такую конфигурацию еще не пробовал.
                                  0
                                  Убедили) буду настраивать.
                                    0
                                    Обратите внимание, если куча клиентов из-за одного NAT идут к одному серверу, то стоит сменить авторизацию с PSK на RSA Signature.
                                      0
                                      Проверю, благодарю.
                            –1
                            Минус за небрежно сделанные скриншоты.
                              0
                              Пользуясь случаем спрошу:
                              А в чём смысл общего секрета в IPSec — как это увеличивает безопасность, ведь при увольнении сотрудника его придётся менять и рассылать заново всем, причём уже не через защищённый канал связи…
                                –1
                                Легкость настройки и поддержки в малых инсталляциях. Криптостойкойсть не на много хуже сертификатов.
                                  0
                                  Так если у каждого пользователя свой логин/пароль, зачем ещё общий? Ведь «знают двое — знает и свинья»?
                                  Какой профит-то? Кроме дополнительных проблем с вводом ещё одного пароля?
                                    –1
                                    Могу предположить, что соль/перец в шифровании. Не больше, не меньше.
                                    Сам спеки не смотрел.
                                      0
                                      PSK — Работает 1 в 1 как на домашнем WiFi, при желании, и на домашнем WiFi можно замутить WPA2-EAP/TLS, но это не удобно для домашнего использования. Для L2TP/IPSec это тоже имеет место быть, IPSec PSK защищает канал для L2TP от тупой долбежки, и дает приемлемый уровень шифрования (по сути тот-же, так как PSK нужен на первичной стадии, дальше уже сеансовые ключи будут уникальные). «Утечка» PSK не приводит к мгновенной дыре в безопасности, так как нужно еще на L2TP авторизоваться, но позволяет послушать чужой трафик (если перехватить обмен сеансовыми ключами).
                                        –1
                                        Ну в общем да, для аутентификации удаленной стороны. Можно или ключ слово или сертификат.
                                        WPA2/EAP/TLS можно использовать просто имя и пароль, мне лично дома удобнее так.
                                        Правда надо поднять Radius или Tacacs+ сервер.
                                        Правда я и ethernet шифрую :)
                                0
                                Вышло обновление до Release 6.39.1
                                https://mikrotik.com/download/changelogs/current-release-tree
                                Список серьерзный и про ipsec и l2tp и ikev2

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое