Причинами создания туннелей на разновендорном оборудовании могут быть масса факторов, приятно то, что “подружить” получается практически все. В моем случае причиной стало любопытство 🙂 . В тестовой среде была организована видимость внешних адресов наших маршрутизаторов, а дальше все строго по нижеизложенному тексту:
Ниже представлена схематическая модель подключения двух маршрутизаторов и сетей за ними, где внешними адресами выступают адреса из “серого” диапазона, естественно, в реальной ситуации этими адресами должны быть адреса из общественного пула, и естественно – все совпадения прошу считать случайными.
Настройка FORTIGATE
Настройка IPsec туннеля со стороны Fortigate подразумевает первично подготовленные интерфейсы маршрутизатора: адресация, dhcp, доступ в интернет, и все что еще заблагорассудится, с чем, я думаю, проблем не возникнет. У нас это :
- port1 – 172.16.16.61/255.255.255.0 (WAN)
- port2 – 10.0.0.1/255.255.255.0 (LAN)
И за каждым маршрутизатором мы повесили по одному устройству, для проверки будущего туннеля. Адресация этих устройств *.*.*.2 для каждой сети.
Первым делом переходим на вкладку “VPN > IPsec tunnels” и создаем туннель.
Мастер создания туннеля предложит использовать преднастройки для уже известных типов соединения, но нас интересует ручная настройка – “Custom”.
Также необходимодать имя виртуальному интерфейсу, мы назвали его “corp-tun”, а затем:
Remote Gateway – адрес соседа является статическим
IP Address – собственно сам адрес соседа
Interface – наш внешний интерфейс
NAT Traversal – включаем инкапсуляцию трафика (NAT-T)
Keepalive Frequency – частота проверки активности
Dead Peer Detection – включение механизма обнаружения простоя соединения (DPD)
Далее указываем:
Method – метод проверки
Pre-shared Key – значение общего ключа, как пример “5PA$$Netc)nfiG!8”
Version – версия набора протоколов (IKE)
Mode – режим подключения
В профиле установим протокол шифрования, проверки подлинности, версию DH и время его жизни (Phase 1):
Encryption – DES
Authentication – SHA1
Diffie-Hellman Group – 5
Key Lifetime – 86400
Отключаем механизм расширенной аутентификации (XAuth)
Local Port – ALL
Remote Port – ALL
Protocol – ALL
Local Adress – 0.0.0.0/0
Remote Address – 0.0.0.0/0
мы указываем какой трафик нужно будет шифровать, в нашем случае весь.
по-моему так
Дальше указываем шифрование, аутентификацию и версию протокола Диффи-Хеллмана (DH)
Соответственно:
Encryption – DES
Authentication – SHA1
Diffie-Hellman Group – 5
И наконец оставшиеся параметры:
Enable Replay Detection – Функция обнаружения повторяющихся пакетов
Perfect Forward Secrecy – Функция генерации ключей DH по истечении Key Lifetime
Key Lifetime – время жизни ключа
Seconds – значение “Key Lifetime” в секундах
Более подробно о второй фазе (Phase 2)
По скольку такой тип соединения является route-based vpn, то с обеих сторон туннеля необходимо добавить маршруты в сети по ту сторону туннеля через виртуальный интерфейс, на Fortigate это можно сделать так:
На вкладке “Static Routes” добавляем запись.
Destination – сеть по ту сторону туннеля
Interface – интерфейс туннеля с нашей стороны
Administrative Distanse – степень доверия к маршруту (http://www.netconfig.org/routing/1047)
Для прохождения трафика из туннеля в локальную сеть и назад необходимо создать в меню Policy & objects > IPv4 Policy несколько сетевых политик (правил фаервола), в нашем случае правила 2 и 5:
Первое правило работает как обычный NAT, а последнее является запрещающим.
Настройка CISCO
Теперь по аналогии проделаем те же манипуляции на втором маршрутизаторе.
Для начала подготовим внутренний и внешний интерфейсы:
CISCO#conf t CISCO(config)#interface fastEthernet 0/0 CISCO(config-if)#ip address 192.168.10.1 255.255.255.0 CISCO(config-if)#ip nat inside CISCO(config-if)#no shutdown CISCO(config-if)#exit CISCO(config)#interface fastEthernet 0/1 CISCO(config-if)#ip address 172.16.16.64 255.255.255.0 CISCO(config-if)#ip nat outside CISCO(config-if)#no shutdown CISCO(config-if)#exit |
Затем доступ в интернет, создав список доступа и разрешив ему отправлять весь трафик через внешний Fa 0/1, а также указав этот интерфейс в качестве шлюза по умолчанию.
CISCO(config)#ip access-list extended LAN10 CISCO(config-ext-nacl)#permit ip 192.168.10.0 0.0.0.255 any CISCO(config-ext-nacl)#exit CISCO(config)#ip route 0.0.0.0 0.0.0.0 FastEthernet0/1 CISCO(config)#ip nat inside source list LAN10 interface fastEthernet 0/1 overload |
Переходим к первой фазе, тут все то же самое за исключение номера политики – в случае, когда политик больше одной, ее номер влияет на порядок проверки этой политик при установлении первой фазы.
CISCO(config)#crypto isakmp policy 20 CISCO(config-isakmp)#authentication pre-share CISCO(config-isakmp)#group 5 CISCO(config-isakmp)exit |
Ровно также связываем адрес соседа с общим ключем:
CISCO(config)#crypto isakmp key 5PA$$Netc)nfiG!8 address 172.16.16.61 |
Настройка второй фазы выглядит так: создаем transform-set а затем добавляем его в профиль, в котором указываем версию DH.
CISCO(config)#crypto ipsec transform-set FORTI-SET esp-des esp-sha-hmac CISCO(cfg-crypto-trans)#exit CISCO(config)#crypto ipsec profile FORTI-PROFILE CISCO(ipsec-profile)#set transform-set FORTI-SET CISCO(ipsec-profile)#set pfs group5 CISCO(ipsec-profile)#exit |
После этого необходимо настроить виртуальный интерфейс, связав его с внешним интерфейсом маршрутизатора:
CISCO(config)#interface Tunnel61 CISCO(config-if)#ip unnumbered FastEthernet0/1 CISCO(config-if)# ip nat inside CISCO(config-if)# ip virtual-reassembly CISCO(config-if)# tunnel source 172.16.16.64 CISCO(config-if)# tunnel destination 172.16.16.61 CISCO(config-if)# tunnel mode ipsec ipv4 CISCO(config-if)#exit |
И добавляем маршрут в удаленную сеть через все тот-же виртуальный интерфейс:
CISCO(config)#ip route 10.0.0.0 255.255.255.0 Tunnel61 |
Туннель готов!
Сохраняемся:
CISCO(config)#do wr |
Мониторинг
Проверка первой фазы на cisco.
R1#show crypto isakmp sa R1#show crypto isakmp sa detail |
Проверка второй фазы на cisco.
R1#show crypto ipsec sa R1#show crypto ipsec sa detail R1#show crypto ipsec transform-set |
Просмотр сессии на cisco.
R1#show crypto session R1#show crypto session detail |
Дебаг.
sh#debug crypto ipsec * sh#debug crypto isakmp * |
У Fortigate для этого есть следующие инструменты:
Монитор.
Как видим, узлы в локальных сетях увидели своих соседей по туннелю:
На этом пока все, пока пока.