При использовании 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.

Вот собственно и все, соединение поднимается, шифрование работает.
Поделиться с друзьями
-->

Комментарии (43)


  1. AEP
    22.04.2017 21:48
    -3

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


    1. MagicGTS
      22.04.2017 23:19
      +2

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


  1. icCE
    22.04.2017 22:43

    Кстати, кто скажет они починили баг, когда нельзя было поднять больше 1 соединение по l2tp из одной локальной сети за NAT?


    1. MagicGTS
      22.04.2017 23:09
      +1

      По сути нет, так как проблема в реализации ike1. Если извернуться с ike2, как в этой статье, то должно работать.


      1. icCE
        24.04.2017 13:30

        А можно выложить более подробно с конфигами?
        И в такой связки есть подключение с ios и android?


        1. MagicGTS
          24.04.2017 14:14

          У меня в качестве сервера Linux + strongswan, а mikrotik как клиент. Может кто еще поделится? Сервер на mikrotik пока еще не планировали, может в лаборатоном окружении сделаю.


          1. icCE
            24.04.2017 15:25

            Просто в небольшой офис ставится mikrotik и ставить еще linux для l2tp как-то ненужно.
            Openvpn конечно спасает, но вот это вечная генерация ключей на разные организации и отсутствие бесплатного PKI для всего этого, делает печальным котиком.


            1. MagicGTS
              24.04.2017 16:03

              Думаю это вам сильно поможет: easy-rsa
              Не отменяет генерацию сертификатов, но позволяет немного автоматизировать процесс.


              1. icCE
                24.04.2017 17:57

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


                1. MagicGTS
                  24.04.2017 22:31

                  А как вы представляете работу с PKI. Чего вам не хвмтает в easy-rsa?


                  1. icCE
                    24.04.2017 22:40

                    Мне хватает всего, а вот людям нужен простой gui.
                    Писать GUI скрипты к скриптам, что-то как то совсем overkill.


                  1. mihmig
                    25.04.2017 10:24

                    В OpenVPN PKI меня немного смущает такоя концепция — для того чтобы отключить пользователя нужно создать сущность (запись в списке отзыва), а не удалить (логин/пароль из базы/конфига).

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


                    1. MagicGTS
                      25.04.2017 10:34

                      Это нормально для PKI с CRL.
                      Админа увольняют так-же как и нанимают нового юриста: первая задача — уволить предидущего юриста так, чтобы он не подал на компанию в суд.


            1. datsen
              24.04.2017 22:30

              PKI есть прямо в ROS — хорошая статья на эту тему https://habrahabr.ru/post/269679/


              1. icCE
                24.04.2017 22:41

                Да я знаю, только он у них периодически с обновлениями начинает вставать в позу.
                И вообще с PKI для SOHO вообще как-то грустно или разворачивать хрен знает чего или вон, скрипты есть и не выпендривайся.


      1. icCE
        24.04.2017 18:05

        Нашел в записях по изменениям

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

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


        1. icCE
          24.04.2017 18:07

          А потом тут:

          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.


          1. MagicGTS
            25.04.2017 09:44

            Это они зря так.
            Я так и не решил вопрос с OSPF при использовании совместно с IPSec Tun (пускай и IKE2). Как анонсировать маршруты? Поэтому варианты туннелей приходится оставлять. Особенно, когда работаешь из-за динамического NAT (тут вариации GRE/IP Tun не прокатыают).


            1. icCE
              25.04.2017 12:17

              Ждем ROS7, они там перейдут на новое ядро linux с новыми плюшками патчами итд.


    1. Daimos
      23.04.2017 11:09

      У нас Микротик стоит за НАТ и выступает в качестве сервера VPN — так вот несколько подключений l2tp спокойно поднимаются одновременно клиентами за еще одним НАТ.


      1. MagicGTS
        23.04.2017 11:22
        +1

        Тут проблема немного иная.
        Если несколько клиентов из-за одного и того-же NAT идут к одному и тому-же серверу (mikrotik), тогда и были проблемы. Были исправления к ike1, которые исправляли эту проблему, но не на всех ситуациях оно работало, была большая зависимость от клиента (при использовании xauth вообще не было проблемы).


        1. Daimos
          23.04.2017 11:32

          Мы кажется тестировали такой кейс — расшарил инет с телефона и подключил два компа к нему — да, первое соединение отваливалось при подключении второго клиента. Но у нас такой кейс пока в реальности маловероятен, несмотря на 300 сотрудников, VPN ом пользуются немного сотрудников и крайне маловероятно, что два сотрудника из дома с одного НАТа пойдут в VPN на работу :)
          Но есть вероятность объединения офисов — но тогда проще поднять один туннель между офисами, чтобы клиентами не пришлось поднимать каждому VPN


          1. icCE
            24.04.2017 13:31

            >, VPN ом пользуются немного сотрудников и крайне маловероятно, что два сотрудника из дома с одного НАТа пойдут в VPN на работу :)

            Может быть два устройства у одного сотрудника.


            1. Meklon
              24.04.2017 15:05

              Или из одной гостиницы несколько людей домой/на работу коннектятся.


            1. Daimos
              24.04.2017 16:01

              Пока такое крайне маловероятно у нас :)


  1. J_o_k_e_R
    22.04.2017 23:39

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

    Ну и по мелочи. IKEv2 появился в ROS в 6.38. Почему Вы ссылаетесь именно на 6.38.1?


    1. MagicGTS
      22.04.2017 23:55
      +1

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


      1. J_o_k_e_R
        23.04.2017 00:15
        +1

        По первым упоминаниям в changelog


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

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

        !) ipsec — added IKEv2 support;


        1. MagicGTS
          23.04.2017 07:43
          +1

          Проглядел, спасибо.


  1. Meklon
    23.04.2017 11:38

    У меня l2tp без IPsec. MPPE128 stateless encoding используется. Есть варианты из одной серой NAT зоны подключиться нескольким клиентам?


    1. MagicGTS
      23.04.2017 12:00

      Я бы порекомендовал отказаться от mppe, в виду его низкой стойкости.
      Не понятно, что значит к нескольким клиентам? Один клиент за NAT без проблем устанавливает несколько соединений с другими серверами.


      1. Meklon
        23.04.2017 12:37

        Стойкость некритична. Роутер1-провайдер-провайдер-роутер 2. В середине этой цепочки я как-то в не ожидаю атаки. Лень настраивать было) посмотрю. Насчет клиентов наоборот. У роутера белый IP, а клиенты сидят в одной серой сети с одним внешним адресом.


        1. MagicGTS
          23.04.2017 13:57

          Перехват трафика по середине вполне возможен, так что я бы не пренебригал этим.
          Вторая описанная вами ситуация имела место при использовании ike1, сейчас там было много исправлений, и сработает ли он корректно — не знаю. Вот ike2 должен работать, однако тут сложности с настройками пира будут, тут уже политика для локального адреса задается, я такую конфигурацию еще не пробовал.


          1. Meklon
            23.04.2017 14:41

            Убедили) буду настраивать.


            1. MagicGTS
              24.04.2017 12:24

              Обратите внимание, если куча клиентов из-за одного NAT идут к одному серверу, то стоит сменить авторизацию с PSK на RSA Signature.


              1. Meklon
                24.04.2017 15:05

                Проверю, благодарю.


  1. mihmig
    24.04.2017 16:52
    -1

    Минус за небрежно сделанные скриншоты.


  1. mihmig
    24.04.2017 16:54

    Пользуясь случаем спрошу:
    А в чём смысл общего секрета в IPSec — как это увеличивает безопасность, ведь при увольнении сотрудника его придётся менять и рассылать заново всем, причём уже не через защищённый канал связи…


    1. MagicGTS
      24.04.2017 17:09
      -1

      Легкость настройки и поддержки в малых инсталляциях. Криптостойкойсть не на много хуже сертификатов.


      1. mihmig
        25.04.2017 10:29

        Так если у каждого пользователя свой логин/пароль, зачем ещё общий? Ведь «знают двое — знает и свинья»?
        Какой профит-то? Кроме дополнительных проблем с вводом ещё одного пароля?


        1. icCE
          25.04.2017 12:18
          -1

          Могу предположить, что соль/перец в шифровании. Не больше, не меньше.
          Сам спеки не смотрел.


          1. MagicGTS
            25.04.2017 12:37

            PSK — Работает 1 в 1 как на домашнем WiFi, при желании, и на домашнем WiFi можно замутить WPA2-EAP/TLS, но это не удобно для домашнего использования. Для L2TP/IPSec это тоже имеет место быть, IPSec PSK защищает канал для L2TP от тупой долбежки, и дает приемлемый уровень шифрования (по сути тот-же, так как PSK нужен на первичной стадии, дальше уже сеансовые ключи будут уникальные). «Утечка» PSK не приводит к мгновенной дыре в безопасности, так как нужно еще на L2TP авторизоваться, но позволяет послушать чужой трафик (если перехватить обмен сеансовыми ключами).


            1. icCE
              25.04.2017 14:58
              -1

              Ну в общем да, для аутентификации удаленной стороны. Можно или ключ слово или сертификат.
              WPA2/EAP/TLS можно использовать просто имя и пароль, мне лично дома удобнее так.
              Правда надо поднять Radius или Tacacs+ сервер.
              Правда я и ethernet шифрую :)