Mikrotik + IPSec + Cisco = Мир, Дружба, Жвачка

    Техническая задача: организовать ipip-тоннель между офисами, с шифрованием ipsec, при помощи Mikrotik RB450G и Cisco 2821.


    Ньюансы

    • последняя версия софта на микроте (5.20)
    • тип тоннеля на циске IPIP
    • тип трансформы «transport», вместо «tunnel»

    Исходные данные

    • Cisco 2821 (OS v12.4)
    • 2. Mikrotik RB450G
    • 3. Реальные внешние IP на обоих устройствах
    • 4. Адрес циски: 77.77.77.226. Подсеть со стороны циски: 10.192.0.0/22
    • 5. Адрес микротика: 88.88.88.2. Подсеть со стороны микротика: 192.168.88.0/24

    Предыстория

    Столкнулся по работе с необходимостью замены серверов в наших филиалах, на что-нибудь более надёжное, аппаратное.
    Связь у нас с центральным офисом осуществляется через тонели с шифрованием ipsec. В центральном офисе у нас, собственно всё на кошкообразных построено, а в большинстве филиалов стоят обычные сервера под FreeBSD, которые цепляются тонелями, с помощью racoon.
    Встала задача, в связи с устареванием, выходом из строя самих серверов, начать устанавливать простые, недорогие аппаратные решения.

    Братья по-разуму, коллеги и форумы натолкнули меня на изделия Mikrotik, и сразу же я направил к ним письмо следующего содержания:

    Добрый день. Подскажите, если не трудно подходящию модель микротика, для следующих целей: nat-роутер, поддержка ipsec-тунелей с несколькими цисками 28хх, нагрузка до 100мбит, поддержка ospf. Желательно, но не обязательно "POE" Заранее спасибо.
    

    Ответ пришёл неожиданно, очень быстро, в течении одного дня:
    Здравствуйте, Владимир
    Спасибо за интерес к нашей компании и продукции Mikrotik.
    В зависимости от пропусной способности, можем предложить Вам
    - Маршрутизатор RB/MRTG (miniROUTERG) 4531  
    - Маршрутизатор RB1100AHx2 16915  
    
    Таблицы производительности по ссылкам:
    http://routerboard.com/RB450G
    http://routerboard.com/RB1100AHx2
    
    Пример настройки связки
    http://wiki.mikrotik.com/wiki/IPSec_VPN_with_Dynamic_Routing_/_Mikrotik_and_Cisco
    

    Я сразу остановил свой выбор на «RB450G». Заказали, привезли.
    Сразу скажу, по вышеуказанной ссылке настроить не удалось. Данные там устаревшие, некоторые параметры в версии 5.20 просто отсутствуют.
    Порылся по форумам, почитал статьи примерно такого содержания:
    betep.wpl.ru/2009/02/wiki-mikrotik.html
    netandyou.ru/17 — кстати интересная, но рассматривается пример ipsec в gre-тоннеле, а в моём случае тип тонеля ipip, и режим работы crypto ipsec transform-set на циске не «Tunnel», а «Transport». Впрочем тоже не получилось.
    Так же перерыл ещё кучу материалов на форумах, добился, чтобы проходило соединение, шифрование включалось, но ничего не работало, пакеты отказывались бегать по тоннелю, как я не старался их к этому принудить.
    Два потерянных дня и побудили меня написать на хабр, возможно кому-то эти строки помогут в работе.

    В итоге, всё оказалось банально и очень просто.

    Я акцентрировал своё внимание на настройках политик IPSec в микротике, и похоже это было ошибкой :)
    После вдумчивого изучения материала, который мне действительно помог:
    wiki.mikrotik.com/wiki/Manual:IP/IPsec#Transport_mode_2 — от сюда и ниже на пару-тройку страниц
    и
    wiki.mikrotik.com/wiki/Manual:Interface/IPIP — тут просто основы, но на-всякий случай.

    Я просто убрал все политики (к слову — они были правильно настроены, судя по динамическим, создавшимся позже), и просто установил галочку автогенерации политик. Что успешно и проделала циска с микротиком после соединения.

    Все настройки (консольные и аналогичные графические) привожу ниже.

    Cisco:


    ! Политика авторизации - хеш мд5 и шифрование 3des по парольному ключу (pre-share)
    crypto isakmp policy 20
     encr 3des
     hash md5
     authentication pre-share
    ! group2 означает, что в микротике надо установить dh-group=modp1024
     group 2
    
    ! Сам ключ
    crypto isakmp key MyPassWord address 88.88.88.2 no-xauth
    crypto isakmp keepalive 30
    ! Трансформ. Внимание! Используется transport, а не tunnel режим
    crypto ipsec transform-set transform-2 esp-3des esp-md5-hmac
     mode transport
    
    crypto dynamic-map dynmap 10
     set transform-set transform-2
     reverse-route
    
    crypto map vpnmap client configuration address respond
    crypto map vpnmap 5 ipsec-isakmp dynamic dynmap
    crypto map vpnmap 10 ipsec-isakmp
    ! криптомапа микротика
    crypto map vpnmap 93 ipsec-isakmp
     description Mikrotik_Local
    ! ip микротика
     set peer 88.88.88.2
     set security-association lifetime seconds 86400
     set transform-set transform-2
    ! pfs group2 означает, что в микротике надо установить dh-group=modp1024
     set pfs group2
    ! access-лист, разрешающий соединение
     match address 137
    ! Сам тоннель
    interface Tunnel93
     description tunnel_Mikrotik
     ip unnumbered GigabitEthernet0/1
    ! Цискин адрес
     tunnel source 77.77.77.226
    ! Адрес микрота
     tunnel destination 88.88.88.2
    ! тип тонеля ipip
     tunnel mode ipip
    ! Наружный интерфейс
    interface GigabitEthernet0/1
     description Internet
     ip address 77.77.77.226 255.255.255.224
     no ip redirects
     no ip unreachables
     no ip proxy-arp
     ip wccp web-cache redirect out
     ip virtual-reassembly
     ip route-cache policy
     no ip mroute-cache
     duplex auto
     speed auto
     no mop enabled
    ! ВКЛЮЧАЕМ ШИФРОВАНИЕ НА ИНТЕРФЕЙСЕ
     crypto map vpnmap
    ! Роутинг сети, находящейся за микротиком
    ip route 192.168.88.0 255.255.255.0 Tunnel93
    ! Разрешение на соединение тоннеля
    access-list 137 permit ip host 77.77.77.226 host 88.88.88.2
    


    Микротик:


    /interface ipip
    add disabled=no dscp=0 local-address=88.88.88.2 mtu=1260 name=ipip1 \
        remote-address=77.77.77.226
    add address=192.168.88.1/24 comment="default configuration" disabled=no \
        interface=ether2-master-local network=192.168.88.0
    add address=88.88.88.2/30 disabled=no interface=ether1-gateway network=\
        62.5.248.248
    add add-default-route=yes comment="default configuration" \
        default-route-distance=1 disabled=no interface=ether1-gateway \
        use-peer-dns=yes use-peer-ntp=yes
    /ip ipsec peer
    add address=77.77.77.226/32 auth-method=pre-shared-key dh-group=modp1024 \
        disabled=no dpd-interval=2m dpd-maximum-failures=5 enc-algorithm=3des \
        exchange-mode=main generate-policy=yes hash-algorithm=md5 lifebytes=0 \
        lifetime=1d my-id-user-fqdn="" nat-traversal=no port=500 proposal-check=\
        obey secret=MyPassWord send-initial-contact=yes
    /ip route
    add comment="Default routing" disabled=no distance=1 dst-address=0.0.0.0/0 \
        gateway=88.88.88.1 scope=30 target-scope=10
    add disabled=no distance=1 dst-address=10.192.0.0/22 gateway=ipip1 scope=30 \
        target-scope=10
    /ip firewall filter
    add action=accept chain=input comment="default configuration" disabled=no
    add action=accept chain=output disabled=no
    /system logging
    add action=memory disabled=no prefix="" topics=ipsec
    


    Если кто-то настраивает через микротиковский GUI «Winbox», аналогичная настройка:
    1. Интерфейсы-IP Tunnel. Добавить:

    2. В разделе IP-IPSec-Proposals в дефолтном правиле ОБЯЗАТЕЛЬНО сменить SHA1 на MD5!
    3. IP-IPSec-Peers. Добавить:

    После этого, если циска уже настроена, то должна поднятся сессия:

    И автоматически сгенерируются политики:

    4. IP-Routes. Добавить:

    После этого можно заглянуть обратно в IP-IPSec, закладка Instaled SAs, и вы должны увидеть, что байтики бегут по тунелю в обе стороны:


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

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

      +7
      Люто плюсую все топики про микротик, нужно больше адептов микротика!
        –2
        Если бы они открыли исходники, адептов было бы больше.
          +1
          На конференции я задал вопрос Сергею, мол вы используете открытый софт?
          Был дан ответ, что они все пишут сами.
          На вопрос, а как же ядро linux?
          Да используем linux.
          Без модификаций?
          Да без модификаций :)
          Очень тихим голосом и такими честными глазами!
            0
            Что-то я это пропустил, а потом он как-то затерялся быстро.
              0
              Сергей? Что за Сергей?
                0
                К сожелению фамилию не помню. Он отвечает за support microtik, или за его определенную часть. Он же открывал MUM.
                  0
                  А еще он ответил что он один из не многих может ответить на русское письмо на Support Mikrotik`a.
              +1
              У меня лично к микротикам куча претензий. У самого RB493G дома и проблемы есть. Например вот порты прыгают в режиме up-down, раз в час. Последнее время перестало, но что вызывало такие проблемы — непонятно. OpenVPN кастрированый косой по яйцам (несмотря на то что на форуме их уже года три просят хотя бы приделать UDP, они отмахиваются, мол слишком сложно). MetaRouter заработал только в 5.21, которой еще нет в релизе, и то только для mipsbe роутеров, с powerpc до сих пор непонятно. Причем проблему дебажил обычный юзер с форума, который через netboot залез во внутренности системы. Вчера их traffic generator запустил — так он сломался и ребутнул роутер. SNMP порой просто отказывается работать, через NAT он у меня так и не взлетел. BTW, чтобы обеспечить нормальную работу RB493G + 2xR52Hn мне пришлось сверлить дырки в корпусе (стороннем, в случае дефолтного он у меня перегревался даже без вайфая) и искать довольно редкий кулер на 24v, ибо дефолтные адаптеры на 12v не обеспечивают необходимой мощности для платы + wifi. С портами для кулеров та же задница — питание идет напрямую, поэтому если у тебя БП 48v- ищи такой кулер, 24 — такой, 12 — тут уже проще. USB порт оставили без питания, хотя решается одним чипом. И да, PoE у них не 802.3af, а очередная хрень с инжекторами. Люди уже хз сколько времени просят сделать SDK, но хрен бы там. Metarouter с openwrt частично решает проблему — но он нестабилен. Серьезные протоколы? И тут всплывает целый вагон по части несовместимости, хотя тут еще вопрос кто забил на спеки — циска или микротик. Так или иначе, проблем целый вагон, предлагаются адекватные решения, люди голосуют за фичи — но разрабам глубоко похрен, они пилят что считают нужным и хрен клали на мнение юзеров. Зачем тогда страница голосований за фичреквесты на их вики?
              Простите, наболело.
                0
                Немного запутался при написании пункта про порты для кулеров, уж простите. По части тех же серьезных протоколов — например стабильное нежелание приделать MSTP, который поддерживает даже мой старый linsys SRW224g4.
                  0
                  Да, да, проблем море. Но где настолько же удобные альтернативы за такие же деньги? Их нет.
                    +2
                    Вот вот, ничего лучше микротика, чтобы подключить маленький филиал на бюджете, нету.
                      0
                      PCengines ALIX
                      можно до трех портов 10/100 и две вайфайные карточки
                      0
                      Ну их надо то же понять. Их всего то 80 человек!
                      Сколько там из этих 80 програмистов? Хорошо если 10 :)

                      Вообще, за такие деньги — то что сделали они, это хорошо.
                      Используем для удаленных небольших (да и больших то же) офисов.
                      Очень просто сторонним админам написать, что и как делать.
                    0
                    Из конфигов и описания так и не понятно OSPF завёлся или нет? В своё время от него отказались из-за этого
                      0
                      +1 про ospf, тоже актуально
                        +1
                        Не, оспф на тоннеле я не настраивал в данном случае, извиняйте.
                        Про оспф скажу только, что стандартно он на микроте подымается хорошо (тестил пару лет назад) и в сети у меня и микроты и циски и серваки под фрёй (quagga-ospf) подружились нормально (проработали около месяца — потом убрал, т.к не требовалось — роутинг в той сети не меняется). Просто впервые микрот использовал для тоннелей, вот и решил написать сюда.
                        На тоннелях после плясок с бубнами поднимал ospf между циской и фрёй, в ближайшие несколько месяцев буду пробовать и на микротике.
                        А какие проблемы у микротов с оспф возникают?
                          0
                          никаких проблем. тупо ospf неработал через gre и ipip.
                            0
                            Cisco+микрот с RouterOS 6.4, проверил ospf в ipip-тунеле ipsec, пашет хорошо — сбоев не замечено.
                        0
                        О да! Скоро уже год, как пользуемся микротиками, и то ругаемся их на чем свет стоит, то хвалим, что все-таки достаточно много они могут за свою-то цену… Но все равно скоро будем переходить на другое оборудование.
                          0
                          Скажите, если на циске два WAN-а подключены (что для центральной точки довольно часто), то как сделать, чтобы туннель с микротика терминировался на второй WAN при падении первого? У циски можно в описании того же ipsec туннеля указать более одного peer-а, а на микротике?
                            0
                            Ага, как раз такая задача у меня для следующих тестов в ближайший 1-2 месяца, буду пробовать.
                            Если два провайдера и циска есть, то проще всего купить себе AS и блок адресов /24, оно стоит-то 500р в месяц, если не меньше, только регистрация первый раз в $500 получается. При падении одного канала IP циски перенесёт блока в живой канал, тунель соответственно перенесётся туда же.
                            А вот со стороны клиента… на каждого по AS'ке не купить :)
                            На фрибсд я делал как, на циске у меня AS и блок ИПов (в моей самой первой статье рассмотрено) и бгп. Я на фре поднял 2 канала, глядящих на циске и поднял ospf на quagg'е и циске. При падении канала у клиента (фрибсд) анонс локалки через оспф переносится во второй тонель (разграничил перенос приоритетами). На микротике думаю, в крайнем случае сделаю подобное, но меня напугали в каментах слова, что ospf не пашет на микроте в тонелях…
                            Вообщем буду пробовать, наверное след. пост будет как раз об этом.
                            0
                            AS у меня есть :) Только 500 — это Вы много заплатили, там дешевле получалось. Ну а сейчас с адресами плохо — в смысле, RIPE уже не LIR-ам не выдает, а ради такой задачи LIR-а городить — так что не совсем чтобы решение…

                            Поднять 2 туннеля — как раз думаю об этом, но у меня задача дружить не с IOS-девайсом, а с ASA, так что придется с RIP возиться, а не хотелось бы, с учетом, что клиентских девайсов много — на всех не наподнимаешься.

                            На Микротике есть скрипты, можно, наверное, перенастраивать и передергивать туннель при пропадании связи до первого пира, но как-то это не так изящно…
                              0
                              Господа и уважаемый автор, а кто побеждал Mikrotik +L2tp IPSec? IPIP это хорошо, но что поделать если есть уже настроенная боевая циска с L2tp IPSec?
                                0
                                Посмотрите, вроде бы у microtik были примеры на сайте. Ну или в форуме спросите.
                                0
                                Коллеги, подскажите, что можно придумать, для агрегации VPN клиентов, чтобы не городить гору туннелей.
                                Есть стэк из двух ASR 1002 (vpn-сервер), и целая гора (300+) микротиков в качестве VPN-клиентов.

                                Можно ли как-то агрегировать всех клиентов одним int tun? Что-то вроде DMVPN… но микротик не умеет ни NHRP ни mGRE… есть вариант собрать DMVPN HUB и подцепить к нему клиентов по обычному GRE, но придется рисовать 300+ статичкеских маршрутов на хабе, чего тоже не очень хочется.
                                  0
                                  К сожалению, нет :(
                                  Со статических маршрутов я перешёл на ospf, при большом количестве тунелей.
                                  Ну и по возможности (когда условия позволяют) стараюсь использовать openvpn. Там как раз всё в один тунель убирается: сервак openvpn — и к нему цепляются микроты, с любого доступного на микротике канала, с любого адреса (белого, серого). Этим опенвпн как раз очень удобен.
                                  Как реализовать подобное через цисковские решения с микротами — пока не придумалось :(
                                  Если у кого-то есть решение — может напишут…
                                    0
                                    Я решение нашел. Оно мне подходит. Полная динамика. Mikrotik + ASR + L2TP + IPSEC + EIGRP + OSPF и один статический маршрут в 0.0.0.0.0
                                    Тестирование завершено успешно, деплою в прод.
                                    Как запущу в прод — напишу статью по этой теме.
                                      0
                                      Оооо! Отлично, будем ждать :)

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

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