Техническая задача: организовать 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. Добавить:
![](https://habrastorage.org/storage2/c43/480/c85/c43480c8579154f13ac4e276cd6c473c.jpg)
2. В разделе IP-IPSec-Proposals в дефолтном правиле ОБЯЗАТЕЛЬНО сменить SHA1 на MD5!
3. IP-IPSec-Peers. Добавить:
![](https://habrastorage.org/storage2/c6e/355/56c/c6e35556ced894a90c74f11c7f0aeb2a.jpg)
После этого, если циска уже настроена, то должна поднятся сессия:
![](https://habrastorage.org/storage2/984/e88/710/984e88710ec5715332b7ac2337af8d56.jpg)
И автоматически сгенерируются политики:
![](https://habrastorage.org/storage2/c6a/b49/678/c6ab4967894ac0639d652948bbbd6484.jpg)
4. IP-Routes. Добавить:
![](https://habrastorage.org/storage2/f49/cee/2d4/f49cee2d4990f1d47c3c15de0f580cdb.jpg)
После этого можно заглянуть обратно в IP-IPSec, закладка Instaled SAs, и вы должны увидеть, что байтики бегут по тунелю в обе стороны:
![](https://habrastorage.org/storage2/ad2/74c/373/ad274c373058c11814ad943ce476ebaf.jpg)
Надеюсь этот материал сэкономит кому-нибудь время и нервы.