Делаем IPSEC туннель между Dlink DFL-260E и Mikrotik 450G
Всем привет! В этом посте я расскажу, как организовать безопасный ipsec-туннель между D-link DFL-260E (актуально для линейки устройств DFL: 210\260E\800\860E) и Mikrotik 450G. Будет много картинок и рабочий пример конфига. Так что, если у вас есть интерес к сабжу – велкам под кат.
Схема сети
Пусть у нас имеется две локальных сети, которые нужно объединить через IPsec туннель.
Сеть A (DFL – 192.168.0.1/24) и сеть B (Mikrotik – 192.168.1.1/24). Выглядит это все примерно так:
Также обращаю внимание, что у вас должно быть два публичных статических белых адреса для обоих маршрутизаторов. В принципе, если у вас в этой схеме будет два Mikrotik, то это не обязательно, т.к. в свежих версиях они поддерживают такую фишку, как IP Cloud, где в роли IPsec-endpoint может выступать не ip адрес, а символическое имя. Но у меня был DFL, поэтому статика.
Подготовка
Во время активного изучения сабжа на этих железках я узнал про несколько грабель. Первые из них состоят в том, что по-умолчанию DFL-260e (прошивка RU) не подерживает необходимые для IPSec алгоритмы шифрования (3Des, AES), а работает только с теми(NULL, DES), которые подвластны нашим чекистам. Полноценное шифрование доступно в общемировой (WW) прошивке. Так что первым делом обновляем прошивку стандартными средствами. На российском FTP D-Link вы их не найдете. Я нашел свежую прошивку на этом сайте. Качал версию 6310-DFL-260E_Ax_FW_v2.60.02.02-upgrade.img
После обновления роутер перезагрузится и вы увидите новый интерфейс. Настройки должны сохраниться Не скажу, что он стал симпатичнее, но менее топорный это точно.
DFL-210, DFL-800, DFL-1600. How to setup IPSec VPN connection with DI-80xHV
Настраиваем на нём доступ в интернет, работу LAN, DHCP, т.е. всё, как обычно. Единственный момент, у меня были какие-то грабли при предыдущей настройке, поэтому у меня вся сеть сидит не в LAN сегменте, а в DMZ. Знаю, что неправильно, граблей уже и не помню, поэтому держите в уме, что в сети А, DMZ – это по сути LAN.
Теперь займемся подготовкой Mikrotik. Там уже не просто прошивка, а вполне себе система пакетного менеджмента, поэтому обновляем пакеты в System -> Packages.
ПО обновили, доступ к интернету настроили с обоих концов, проверили пинги по публичным адресам из обеих подсетей. Тогда всё ок, можно начинать.
Настраиваем туннель со стороны DFL-260E
Первым делом создаём в адресной книги объекты удалённой сети (Network) и точки туннеля (Endpoint).
К чести D-link, он умеет работать с endpoint с динамическим IP адресом. Для этого надо перед IP прописать в виде dns:hostname.com
Дальше создаём в Objects -> Address book -> Keyring) PSK-key, по сути пароль от туннеля.
После этого определем алгоритмы шифрования IKE (Objects -> VPN objects -> IKE Algrithms)…
и алгоритмы шифрования IPSec (Objects -> VPN objects -> IPSec Algrithms).
Теперь у нас есть все данные, чтобы создавать сам туннель (Network -> VPN and tunnels -> IPSec).
После сохранения и применения настроек (Configuration -> Apply configuration) у вас среди маршрутов должны появиться автоматические маршруты созданные для туннеля.
Осталось добавить правила, чтобы трафик мог ходить по туннелю (Network -> Policies -> Firewalling). Я разрешил пинг везде, а для тоннелей создал отдельную папку с правилами.
Ок, применяем настройки и идём настраивать другой конец.
Настраиваем Mikrotik
Подклбчаемся по WinBox / WebFig к роутеру и идём в IP -> IPSec -> Policies. Добавляем туда новую политику для ipsec.
Теперь идём в IP->IPSec->Peers и добавляем DFL-ку.
Дальше добавляем сведения об используемых алгоритмах шифрования.
Теперь идём в Interfaces и добавляем IPIP-туннель.
Настройки применяются мгновенно, так что по идее после этого мы должны увидеть сертификаты поднятого туннеля со стороны Mikrotik…
И со стороны DFL (Status->Subsystems->IPSec)…
Дальше настраиваем Firewall. Столбец “In Interface” = ether1-gateway (интерфейс, торчащий в интернет).
Не забываем про NAT для новой сети (порядок правил важен, надо выше masquerade).
Это кусок дефолтовой конфигурации, я его не трогал.
Маршруты выставились так:
Теперь, чтобы трафик шел от Mikrotik в сторону DFL нужно добавить соответствующий маршрут. В графе Dst Address пишем сеть назначения (сеть DFL), в поле gateway указываем интерфейс туннеля, а в поле Pref.Source указываем адрес Mikrotik с этой стороны туннеля.
Если будете настраивать динамический конец туннеля (IPCloud), то оно в секции IP.
Если вы внесли изменения в тоннель и он упал
Немного о возможных ошибках в логах DFL:
1. statusmsg=«No proposal chosen» — не правильно выбраны методы шифрования
2. reason=«Invalid proposal» — то же, что и п.1
3. reason=«IKE_INVALID_COOKIE» — туннель уже был поднят, но после этого были внесены изменения в его настройки. Заходим на DFL «Status->IPsec->Habratest_cloud_IPsec->справа вверху страницы List all active IKE SAs» и удаляем устаревший IKE SA. Перезагружаем DFL
Заключение
Что мне понравилось в Microtik, так это продуманность. Да, есть грабли, но в общем чувствуется, что железка создана что называется админом для админа. Одно то, что в Firewall показывается в real-time режиме количество пакетов по каждому правилу чего стоит. Конечно лучше использовать железки одного вендора, но, как показала практика связать DFL и Mikrotik вполне реально. За рамками статьи остались вопросы бенчмаркинга туннелей, и переача трафика последовательно через несколько туннелей, но думаю в будущем я посвещу отдельную статью этим вопросам.
Дальше приведу пример конфига Microtik, а ссылки, вы, как всегда найдёте в конце статьи. Удачи, траварищи!
Конфигурация Microtik
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
[admin@MikroTik] > export # nov/11/2015 11:13:16 by RouterOS 6.33 # software id = INCX-QEFK # /interface ethernet set [ find default-name=ether1 ] name=ether1-gateway set [ find default-name=ether2 ] name=ether2-master-local set [ find default-name=ether3 ] master-port=ether2-master-local name=ether3-slave-local set [ find default-name=ether4 ] master-port=ether2-master-local name=ether4-slave-local set [ find default-name=ether5 ] master-port=ether2-master-local name=ether5-slave-local /interface ipip add allow-fast-path=no !keepalive local-address=192.168.1.1 name=ipip-tunnel1 remote-address=\ 192.168.0.1 /ip neighbor discovery set ether1-gateway discover=no /ip ipsec proposal set [ find default=yes ] enc-algorithms=aes-128-cbc pfs-group=none /ip pool add name=dhcp ranges=192.168.1.100-192.168.1.254 /ip dhcp-server add address-pool=dhcp disabled=no interface=ether2-master-local name=default /snmp community set [ find default=yes ] name=snmp_secured /system logging action add memory-lines=100 name=ipsec target=memory /ip address add address=192.168.1.1/24 comment="default configuration" interface=ether2-master-local \ network=192.168.1.0 add address=213.79.xx.92/29 comment=External-at-eth1 interface=ether1-gateway network=\ 213.79.xx.88 /ip cloud set ddns-enabled=yes /ip dhcp-client add comment="default configuration" dhcp-options=hostname,clientid disabled=no interface=\ ether1-gateway /ip dhcp-server network add address=192.168.1.0/24 comment="default configuration" gateway=192.168.1.1 netmask=24 /ip dns set allow-remote-requests=yes servers=62.117.122.49,212.45.2.5 /ip dns static add address=192.168.1.1 name=router /ip firewall filter add chain=forward comment="Allow PING forward from IPSEC tolan" dst-address=192.168.1.0/24 \ protocol=icmp src-address=192.168.0.0/24 add chain=output comment="Allow PING outbound" protocol=icmp add chain=input comment="Allow WinBox from external" dst-port=8291 protocol=tcp add chain=input comment="Allow WebFig from external" dst-port=80 protocol=tcp add chain=input comment="Allow snmp from external" dst-port=161 protocol=udp add chain=input comment="Allow IPSEC-esp" protocol=ipsec-esp add chain=input comment="Allow IKE" dst-port=500 protocol=udp add chain=input comment="Allow IPSEC-ah" disabled=yes protocol=ipsec-ah add chain=input comment="Allow UDP" protocol=tcp add chain=input comment="default configuration" protocol=icmp add chain=input comment="default configuration" connection-state=established,related add action=drop chain=input comment="default configuration" in-interface=ether1-gateway add action=fasttrack-connection chain=forward comment="default configuration" \ connection-state=established,related add chain=forward comment="default configuration" connection-state=established,related add action=drop chain=forward comment="default configuration" connection-state=invalid add action=drop chain=forward comment="default configuration" connection-nat-state=!dstnat \ connection-state=new in-interface=ether1-gateway /ip firewall nat add chain=srcnat comment="For IPSEC tunnel" dst-address=192.168.0.0/24 log=yes out-interface=\ ether1-gateway src-address=192.168.1.0/24 add action=masquerade chain=srcnat comment="default configuration" out-interface=\ ether1-gateway /ip ipsec peer add address=77.37.xx.78/32 enc-algorithm=aes-128 local-address=0.0.0.0 mode-config=\ request-only secret=SOMESECRET /ip ipsec policy set 0 disabled=yes add dst-address=192.168.0.0/24 sa-dst-address=77.37.xx.78 sa-src-address=213.79.xx.92 \ src-address=192.168.1.0/24 tunnel=yes /ip route add comment="Default route" distance=10 gateway=ether1-gateway add disabled=yes distance=1 dst-address=192.168.0.0/24 gateway=ipip-tunnel1 pref-src=\ 192.168.0.1 /ip service set telnet disabled=yes set ftp disabled=yes set ssh disabled=yes /snmp set contact=Andrey enabled=yes location=Home trap-version=2 /system clock set time-zone-name=Europe/Moscow /system logging add action=ipsec topics=ipsec /tool graphing interface add allow-address=192.168.0.0/24 interface=ipip-tunnel1 add allow-address=192.168.0.0/24 interface=ether1-gateway /tool graphing resource add allow-address=192.168.0.0/24 /tool mac-server set [ find default=yes ] disabled=yes add interface=ether2-master-local add interface=ether3-slave-local add interface=ether4-slave-local add interface=ether5-slave-local /tool mac-server mac-winbox set [ find default=yes ] disabled=yes add interface=ether2-master-local add interface=ether3-slave-local add interface=ether4-slave-local add interface=ether5-slave-local /tool romon port set [ find default=yes ] cost=100 forbid=no interface=all secrets="" add cost=100 disabled=yes forbid=no interface=all secrets="" |
Ссылки
http://www.dlinkmea.com/site/index.php/site/productDetails/209
http://sanotes.ru/vpn-ipsec-mikrotik-dfl-860e/
http://sanotes.ru/nastroyka-mikrotik-rb751-rb951-isp-interzet/
http://habrahabr.ru/sandbox/67736/
http://wiki.pcsinfo.hr/doku.php/mikrotik/ipip_with_ipsec_transport_mikrotik_to_mikrotik
VPN:IPsec_(аутентификация_с_помощью_сертификата)
Доброго времени суток.
Спасибо за вашу статью, получилось применить вашу статью в своих целях. но не все получилось
Тунель поднялся
Со стороны DFL я вижу микротик, также клиентов,
но со стороны Микротик я не вижу DFL, подскажите куда копать?