В данной статье расскажу вам о том как настроить IPSec между двумя удаленными маршрутизаторами и разрешить работу IGP протоколов посредством GRE.
Итак. Очень часто приходится сталкиваться с тем, что нужно подключить территориально удаленный офис к центральной сети. Политика компании требует чтобы весь траффик был зашифрован, чтобы избежать утечки информации Единственной что есть под рукой к примеру – интернет. Нам этого хватит. Решить эту задачу нам поможет IPsec туннель. Он свяжет две удаленные сети, и будет шифровать траффик. Но что делать если ваша сеть построена на основе динамической маршрутизации? Увы IPsec не пропускает IGP(протоколы внутренней маршрутизации OSPF,EIGRP…). Для этого нам на помощь приходит среда для маршрутизации или GRE.
Теперь мы точно знаем что нам нужно: Поднять защищенный GRE тоннель между маршрутизаторами посредством интернета.
Приведу пример настройки данного решения. В моем случае мы имеем две точки, Москва(MSK) и Соединённое Королевство(UK). Каждая точка подключена к интернету посредством своего провайдера. Вот и схема:

Привожу конфигурацию маршрутизаторов с коментариями:
!
hostname MSK
!
! Создаем политику и настраиваем ее(деталь безопасности). Имейте ввиду на обоих концах методы аутентификации и шифрации должны совпадать.
crypto isakmp policy 1
! Указываем Метод шифрования
encr 3des
! Указываем Метод хеширования
hash md5
! Указываем метод аутентификации, будем использовать ключ
authentication pre-share
!
! указываем ключ для аутентификации(деталь безопасности). Должен совпадать на обоих точках.
crypto isakmp key 12345 address 2.2.2.2
!
! настраиваем набор преобразований - список разрешаемых комбинаций алтгоритмов и протоколов безопасности (деталь безопасности).
crypto ipsec transform-set UK esp-3des esp-md5-hmac
!
! указываем тип набора преобразований. Существуют 2 типа tunnel и transport
! Tunnel(По умолчанию стоит) - В этом режиме шифруется весь IP пакет включая заголовки. IPsec вставляет свои заголовки после инкапсуляции
! Transport - В этом режиме шифруется только отдел data внутри ИП пакета. Заголовки остаются без изменения.
mode tunnel
!
! Создаем крипто карту (детали тунеля)
crypto map uk_tunnel 10 ipsec-isakmp
! Указываем пир адрес, в нашем случае ИП маршрутизатора UK
set peer 2.2.2.2
! Какой набор трансформаций нужно использовать.
set transform-set UK
! Поднимать IPsec тунель и шифровать данные которые соответствуют листу доступа для классификации траффика.(Почему именно 100, т.к. ниже в конфиге мы создали лист доступа именно 100)
match address 100
!
! Для имитации нескольких сетей и проверки динамической маршрутизации создаем несколько loopback интерфейсов.
interface Loopback11
ip address 10.10.1.1 255.255.255.0
ip ospf 1 area 10
!
interface Loopback12
ip address 10.10.2.1 255.255.255.0
ip ospf 1 area 10
!
interface Loopback13
ip address 10.10.3.1 255.255.255.0
ip ospf 1 area 10
!
interface Loopback14
ip address 10.10.4.1 255.255.255.0
ip ospf 1 area 10
!
interface Loopback15
ip address 10.10.5.1 255.255.255.0
ip ospf 1 area 10
!
! создаем GRE туннель между точками
interface Tunnel0
ip address 10.10.0.1 255.255.255.252
ip ospf 1 area 0
! с какого интерфейса слать пакеты.
tunnel source FastEthernet0/0
! На какой ИП слать пакеты
tunnel destination 2.2.2.2
!
interface FastEthernet0/0
ip address 1.1.1.1 255.255.255.252
duplex auto
speed auto
! Включаем логику IPsec на этом интерфейсе.
crypto map uk_tunnel
!
router ospf 1
log-adjacency-changes
!
! Маршрут на сторону провайдера.
ip route 0.0.0.0 0.0.0.0 1.1.1.2 name default_isp
!
! Класифицируем траффик для шифрования. В нашем случе GRE траффик. между точками.
access-list 100 permit gre host 1.1.1.1 host 2.2.2.2
!
Конфигурация второго маршрутизатора практически идентична только параметры IPsec-а в зеркальном порядке:
hostname UK
!
crypto isakmp policy 1
encr 3des
hash md5
authentication pre-share
crypto isakmp key 12345 address 1.1.1.1
!
!
crypto ipsec transform-set MSK esp-3des esp-md5-hmac
mode tunnel
!
crypto map msk_tunnel 10 ipsec-isakmp
set peer 1.1.1.1
set transform-set MSK
match address 100
!
interface Loopback11
ip address 10.20.1.1 255.255.255.0
ip ospf 1 area 20
!
interface Loopback12
ip address 10.20.2.1 255.255.255.0
ip ospf 1 area 20
!
interface Loopback13
ip address 10.20.3.1 255.255.255.0
ip ospf 1 area 20
!
interface Loopback14
ip address 10.20.4.1 255.255.255.0
ip ospf 1 area 20
!
interface Loopback15
ip address 10.20.5.1 255.255.255.0
ip ospf 1 area 20
!
interface Tunnel0
ip address 10.10.0.2 255.255.255.252
ip ospf 1 area 0
tunnel source FastEthernet0/0
tunnel destination 1.1.1.1
!
interface FastEthernet0/0
ip address 2.2.2.2 255.255.255.252
duplex auto
speed auto
crypto map msk_tunnel
!
router ospf 1
log-adjacency-changes
!
ip route 0.0.0.0 0.0.0.0 2.2.2.1 name default_isp
!
access-list 100 permit gre host 2.2.2.2 host 1.1.1.1
Если вы все верно сделали то у вакс должна заработать динамическа маршрутизация. И получиться следующее:

Примечание 1:
Командой show crypto isakmp sa можно посмотреть на каком этапе находится соединение и установился ли тунель. Если тунель установлен, то должно показвть следующее:

Примечание 2:
Если вы настраиваете IPsec внутри VRF инстанции то настройка ключа будет выглядеть так
!
crypto keyring name vrf VRFNAME
pre-shared-key address x.x.x.x key presharedkey
!
Где
name = любое название на ваш вкус
VRFNAME = название вашей VRF инстанции
x.x.x.x = ИП адрес удаленной точки
presharedkey = ваш ключ
Примечание 3:
Вам будут полезны следующая команда для поиска причин если соединение не хочет устанавливаться
debug crypto engine