Техническая задача: организовать 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, и вы должны увидеть, что байтики бегут по тунелю в обе стороны:

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