Настройка DMVPN на маршрутизаторах Cisco

Материал из Xgu.ru

(Перенаправлено с Cisco ipsec DMVPN)
Перейти к: навигация, поиск
Короткий URL: dmvpn
Автор: Наташа Самойленко

Dynamic Multipoint VPN (DMVPN) — виртуальная частная сеть с возможностью динамического создания туннелей между узлами.

На этой странице детально описывается процедура организации сети DMVPN на маршрутизаторах Cisco. Рассматриваются варианты настройки проколов динамической маршрутизации OSPF и EIGRP, аутентификация маршрутизаторов по сертификатам и pre-shared key.

На странице dmvpn/config представлена схема и конфигурационные файлы для виртуальной сети Xentaur, которая рассматривается на этой странице.

Содержание

[править] Задача

Центральный офис (находящийся за dyn1) соединён с несколькими удалёнными (находящимися за dyn3 и dyn5). Необходимо обеспечить связь удалённых офисов с центральным и, при необходимости, устанавливать туннель между удалёнными офисами.

Маршрутизация между сетями офисов будет выполняться с помощью протоколов динамической маршрутизации.


DMVPN ph.jpg

Изображенная топология называется — звезда (hub-and-spoke), где:

  • dyn1 — центр звезды, hub-маршрутизатор;
  • dyn3 и dyn5 — вершины звезды, spoke-маршрутизаторы.

[править] Решение

Если в данной схеме использовать обычную виртуальную частную сеть, соединяющую сети (site-to-site VPN), то на маршрутизаторах, которые находятся в удалённых офисах, необходимо будет настроить туннель для связи с центральным офисом и туннели для связи с другими удалёнными офисами. Для того чтобы все удалённые офисы могли работать между собой напрямую, необходимо будет настроить туннели со всеми офисами, что приведёт к созданию полносвязной топологии (full mesh). Как следствие, количество настроек на маршрутизаторах, как в центральном офисе, так и в удалённых существенно увеличивается.

Технология DMVPN позволяет решить эту задачу более масштабируемым методом, чем создание связей точка-точка между всеми офисами и объединения их в полносвязную топологию:

  • При добавлении новых маршрутизаторов в существующую сеть DMVPN, необходимо настроить только новый маршрутизатор, изменений на уже существующих маршрутизаторах не требуется.
  • DMVPN позволяет использовать динамически назначенные IP-адреса на spoke-маршрутизаторах.
  • Если двум spoke-маршрутизаторам необходимо установить туннель напрямую, то он устанавливается динамически.

В основе DMVPN лежат несколько технологий:

  • mGRE-туннели;
  • Протокол NHRP (Next Hop Resolution Protocol);
  • Протоколы динамической маршрутизации;
  • Профили IPsec (IPsec profiles).

Icon-caution.gif

Так как DMVPN использует несколько технологий, то поиск неисправностей в его настройках может занимать достаточно много времени. Для того чтобы избежать ошибок, желательно пошагово проверять выполненные настройки, работу соответствующих протоколов и доступность сетей.

Схематическое изображение последовательности выполнения необходимых настроек:

[править] Базовые настройки сети

Настройку сети DMVPN будем выполнять на условном примере, отражающем ключевые особенности сетей, в которых целесообразно использовать эту технологию.


За каждым маршрутизатором находится сеть, которая имитирует локальную сеть офисов:

  • dyn1 — 10.1.1.0/24;
  • dyn3 — 10.1.3.0/24;
  • dyn5 — 10.1.5.0/24.

Для внешних интерфейсов выбраны сети:

  • dyn1 — 192.168.1.0/24;
  • dyn3 — 192.168.3.0/24;
  • dyn5 — 192.168.5.0/24.

[править] Настройка маршрутизации между внешними интерфейсами маршрутизаторов

В данной тестовой сети на каждом маршрутизаторе прописаны статические маршруты к сетям внешних интерфейсов других маршрутизаторов.

Статические маршруты на hub-маршрутизаторе (dyn1):

dyn1(config)# ip route 192.168.3.0 255.255.255.0 192.168.1.2
dyn1(config)# ip route 192.168.5.0 255.255.255.0 192.168.1.2

Но можно сделать проще - прописать default GW:

dyn1(config)# ip route 0.0.0.0 0.0.0.0 192.168.1.2

[править] mGRE-туннели

В топологии звезда (hub-n-spoke) использование GRE-туннелей точка-точка приведёт к большому количеству настроек, так как IP-адреса всех spoke-маршрутизаторов должны быть известны и настроены на центральном маршрутизаторе (hub).

Альтернативой GRE-туннелей точка-точка является multipoint GRE (mGRE) туннель, который позволяет терминировать на себе несколько GRE-туннелей. mGRE-туннель позволяет одному GRE-интерфейсу поддерживать несколько IPsec-туннелей и упрощает количество и сложность настроек, по сравнению с GRE-туннелями точка-точка.

Кроме того, mGRE-интерфейс позволяет использовать динамически назначенные IP-адреса на spoke-маршрутизаторах.

DMVPN mGRE.jpg

[править] Настройка mGRE-туннелей

Для адресации туннелей выделена сеть 10.10.10.0/24, все туннели находятся в одной сети. На hub-маршрутизаторе и spoke-маршрутизаторах mGRE-туннели настраиваются аналогично (далее пример для hub-маршрутизатора).

Создание туннельного интерфейса:

dyn1(config)#interface Tunnel0

Задание IP-адреса на интерфейсе:

dyn1(config-if)#ip address 10.10.10.1 255.255.255.0

Так как GRE добавляет дополнительные заголовки к IP-пакету, необходимо изменить значение MTU на интерфейсе:

dyn1(config-if)#ip mtu 1416

В качестве адреса отправителя в пакете выходящем из mGRE-интерфейса будет использоваться IP-адрес физического интерфейса, а адрес получателя будет выучен динамически с помощью протокола NHRP.

Настройка соответствия между туннельным интерфейсом и физическим:

dyn1(config-if)#tunnel source FastEthernet1/0

Включение mGRE-туннеля:

dyn1(config-if)#tunnel mode gre multipoint

(Опционально) Задание ключа, который идентифицирует туннель:

dyn1(config-if)#tunnel key 999

Note-icon.gif

Если будет использоваться топология с двумя hub-маршрутизаторами и, соответственно, двумя сетями DMVPN, то ключ указывает на принадлежность интерфейса одной из сетей DMVPN.

[править] Next Hop Resolution Protocol (NHRP)

Next Hop Resolution Protocol (NHRP) — клиент-серверный протокол преобразования адресов, позволяющий всем хостам, которые находятся в NBMA(Non Broadcast Multiple Access)-сети, динамически выучить NBMA-адреса (физические адреса) друг друга обращаясь к next-hop-серверу (NHS). После этого хосты могут обмениваться информацией друг с другом напрямую.

В сети DMVPN:

  • Hub-маршрутизатор будет работать как NHS, а spoke-маршрутизаторы будут клиентами.
  • Hub-маршрутизатор хранит и обслуживает базу данных NHRP, в которой хранятся соответствия между физическими адресами и адресами mGRE-туннелей spoke-маршрутизаторов.
  • На каждом spoke-маршрутизаторе hub-маршрутизатор статически указан как NHS и задано соответствие между физическим адресом и адресом mGRE-туннеля hub-маршрутизатора.
  • При включении каждый spoke-маршрутизатор регистрируется на NHS и, при необходимости, запрашивает у сервера информацию об адресах других spoke-маршрутизаторов для построения spoke-to-spoke туннелей.
  • Network ID - характеристика локальная для каждого маршрутизатора (аналогия - OSPF process ID). Разные интерфейсы могут участвовать в разных NHRP сессиях; это просто разграничитель того, что сессия NHRP на одном интерфейсе не та что на другом. Соответственно, совершенно не обязательно, чтобы Network ID совпадали на разных маршрутизаторах.

[править] Настройка NHRP

[править] Настройка NHRP на hub-маршрутизаторе

Включение NHRP на интерфейсе:

dyn1(config)#interface Tunnel0
dyn1(config-if)#ip nhrp network-id 999

Hub-маршрутизатор будет автоматически добавлять соответствия между адресами spoke-маршрутизаторов:

dyn1(config-if)#ip nhrp map multicast dynamic

(Опционально) Настройка аутентификации:

dyn1(config-if)#ip nhrp authentication nhrppass

[править] Настройка NHRP на spoke-маршрутизаторах

Включение NHRP на интерфейсе:

dyn3(config)#interface Tunnel0
dyn3(config-if)#ip nhrp network-id 999

Адрес туннельного интерфейса hub-маршрутизатора указывается как next-hop-сервер:

dyn3(config-if)#ip nhrp nhs 10.10.10.1

Статическое соответствие между адресом mGRE-туннеля и физическим адресом hub-маршрутизатора (первый адрес — адрес туннельного интерфейса, второй — адрес внешнего физического интерфейса):

dyn3(config-if)#ip nhrp map 10.10.10.1 192.168.1.1

Адрес внешнего физического интерфейса hub-маршрутизатора указывается как получатель multicast-пакетов от локального маршрутизатора:

dyn3(config-if)#ip nhrp map multicast 192.168.1.1

(Опционально) Настройка аутентификации:

dyn3(config-if)#ip nhrp authentication nhrppass

(Опционально) Настройка флага неуникальности ip-адреса туннеля в базе nhrp на hub-маршрутизаторе:

dyn3(config-if)#ip nhrp registration no-unique

Если изменится внешний адрес spoke-маршрутизатора и этой команды не будет, то hub-маршрутизатор не обновит свою базу nhrp из-за ошибки: unique address registered already

[править] Проверка работы mGRE-туннелей и протокола NHRP

[править] Проверка туннельных интерфейсов

После того, как на маршрутизаторах настроены mGRE-туннели и настроен протокол NHRP, туннели находятся в состоянии up и все IP-адреса туннелей доступны.

На dyn5:

dyn5#sh ip int br
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.5.5     YES manual up                    up      
FastEthernet1/0            10.1.5.5        YES manual up                    up      
Tunnel0                    10.10.10.5      YES manual up                    up      

Просмотр информации о туннельном интерфейсе:

dyn5#sh int tunnel 0 
Tunnel0 is up, line protocol is up 
  Hardware is Tunnel
  Internet address is 10.10.10.5/24
  MTU 1416 bytes, BW 9 Kbit, DLY 500000 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation TUNNEL, loopback not set
  Keepalive not set
  Tunnel source 192.168.5.5 (FastEthernet0/0), destination UNKNOWN
  Tunnel protocol/transport multi-GRE/IP
    Key 0x3E7, sequencing disabled
    Checksumming of packets disabled
......

С dyn5 пингуется и dyn1 и dyn3:

dyn5#ping 10.10.10.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 148/200/280 ms
dyn5#ping 10.10.10.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 104/199/296 ms

[править] Проверка NHRP на spoke-маршрутизаторе

Информация о NHS:

dyn5#sh ip nhrp nhs 
Legend: E=Expecting replies, R=Responding
Tunnel0:      10.10.10.1 RE

Суммарная информация NHRP (уже установлен динамический туннель с dyn3):

dyn5#sh ip nhrp brief 
   Target             Via            NBMA           Mode   Intfc   Claimed 
10.10.10.1/32      10.10.10.1      192.168.1.1     static   Tu0     <   >
10.10.10.3/32      10.10.10.3      192.168.3.3     dynamic  Tu0     <   >

Подробная информация о других маршрутизаторах полученная по NHRP:

dyn5#sh ip nhrp 
10.10.10.1/32 via 10.10.10.1, Tunnel0 created 00:12:29, never expire 
  Type: static, Flags: nat used 
  NBMA address: 192.168.1.1 
10.10.10.3/32 via 10.10.10.3, Tunnel0 created 00:11:17, expire 01:47:19
  Type: dynamic, Flags: router 
  NBMA address: 192.168.3.3 

Получатель multicast-трафика:

dyn5#sh ip nhrp multicast 
  I/F     NBMA address  
Tunnel0    192.168.1.1     Flags: static

Суммарная информация о записях NHRP:

dyn5#sh ip nhrp summary 
IP NHRP cache 2 entries, 528 bytes
    1 static  1 dynamic  0 incomplete

Статистика по пакетам NHRP:

dyn5#sh ip nhrp traffic 
Tunnel0: Max-send limit:100Pkts/10Sec, Usage:0%
   Sent: Total 3
         1 Resolution Request  0 Resolution Reply  2 Registration Request  
         0 Registration Reply  0 Purge Request  0 Purge Reply  
         0 Error Indication  0 Traffic Indication  
   Rcvd: Total 2
         0 Resolution Request  1 Resolution Reply  0 Registration Request  
         1 Registration Reply  0 Purge Request  0 Purge Reply  
         0 Error Indication  0 Traffic Indication  

[править] Проверка NHRP на hub-маршрутизаторе

Суммарная информация NHRP:

dyn1#sh ip nhrp brief
   Target             Via            NBMA           Mode   Intfc   Claimed 
10.10.10.3/32      10.10.10.3      192.168.3.3     dynamic  Tu0     <   >
10.10.10.5/32      10.10.10.5      192.168.5.5     dynamic  Tu0     <   >

Подробная информация о других маршрутизаторах полученная по NHRP:

dyn1#sh ip nhrp
10.10.10.3/32 via 10.10.10.3, Tunnel0 created 00:25:05, expire 01:34:54
  Type: dynamic, Flags: authoritative unique registered 
  NBMA address: 192.168.3.3 
10.10.10.5/32 via 10.10.10.5, Tunnel0 created 00:25:29, expire 01:34:30
  Type: dynamic, Flags: authoritative unique registered 
  NBMA address: 192.168.5.5 

Получатели multicast-трафика:

dyn1#sh ip nhrp multicast
  I/F     NBMA address  
Tunnel0    None            Flags: dynamic
Tunnel0    None            Flags: dynamic

Суммарная информация о записях NHRP:

dyn1#sh ip nhrp summary 
IP NHRP cache 2 entries, 496 bytes
    0 static  2 dynamic  0 incomplete

Статистика по пакетам NHRP:

dyn1#sh ip nhrp traffic 
Tunnel0
   Sent: Total 4
         0 Resolution Request  2 Resolution Reply  0 Registration Request  
         2 Registration Reply  0 Purge Request  0 Purge Reply  
         0 Error Indication  
   Rcvd: Total 5
         2 Resolution Request  0 Resolution Reply  3 Registration Request  
         0 Registration Reply  0 Purge Request  0 Purge Reply  
         0 Error Indication  


[править] Настройка маршрутизации

Рассматривается использование протоколов EIGRP и OSPF для настройки маршрутизации между сетями офисов. Для реального использования достаточно выбрать один из этих протоколов, и выполнить соответствующие ему настройки.

[править] Настройка EIGRP

Если в качестве протокола маршрутизации будет использоваться EIGRP, то необходимо:

  1. Включить EIGRP для сетей mGRE-интерфейсов и локальных сетей;
  2. Отключить автоматическое суммирование сетей по классовому признаку;
  3. Настроить EIGRP на mGRE-интерфейсе.

Включение EIGRP для сетей mGRE-интерфейсов и локальных сетей:

dyn1(config)#router eigrp 1
dyn1(config-router)#network 10.10.10.0 0.0.0.255
dyn1(config-router)#network 10.1.1.0 0.0.0.255

Отключение автоматического суммирования сетей:

dyn1(config-router)#no auto-summary 

[править] Настройка EIGRP на mGRE-интерфейсах

Для работы в сети DMVPN необходимо дополнительно настроить EIGRP.

На hub-маршрутизаторе необходимо отключить правило расщепления горизонта (split horizon), иначе EIGRP не будет анонсировать маршруты, выученные через mGRE-интерфейс назад в этот же интерфейс:

dyn1(config-if)#no ip split-horizon eigrp 1

По умолчанию EIGRP будет подставлять IP-адрес hub-маршрутизатора в качестве next-hop для маршрутов которые он анонсирует, даже когда анонсирует маршруты назад через тот же интерфейс, на котором они были выучены. Для сети DMVPN необходимо чтобы EIGRP использовал в качестве next-hop адреса spoke-маршрутизаторов. Поэтому на hub-маршрутизаторе необходимо отключить это правило:

dyn1(config-if)#no ip next-hop-self eigrp 1

Note-icon.gif

При использовании DMVPN в больших сетях время сходимости сети может увеличиваться. Для того чтобы избежать возможных проблем с маршрутизацией, на маршрутизаторах необходимо изменить hold time (по умолчанию 15 секунд):

dyn1(config-if)#ip hold-time eigrp 1 35

Если на одном из маршрутизаторов этот параметр изменен, то соседи этого маршрутизатора будут использовать этот таймер. Для того чтобы маршрутизатор сам использовал определенное значение таймера, необходимо изменить таймер на соответствующем интерфейсе соседа.

[править] Проверка работы EIGRP

Соседи EIGRP на dyn1:

dyn1#sh ip eigrp neighbors 
IP-EIGRP neighbors for process 1
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   10.10.10.5              Tu0               31 00:01:08  384  5000  0  22
0   10.10.10.3              Tu0               32 00:01:31  327  5000  0  25

Соседи EIGRP на dyn5:

dyn5#sh ip eigr neighbors 
IP-EIGRP neighbors for process 1
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
0   10.10.10.1              Tu0               33 00:03:29  235  5000  0  35

Таблица маршрутизации dyn1:

dyn1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

S    192.168.5.0/24 [1/0] via 192.168.1.2
     10.0.0.0/24 is subnetted, 4 subnets
D       10.1.3.0 [90/297246976] via 10.10.10.3, 00:01:34, Tunnel0
C       10.10.10.0 is directly connected, Tunnel0
C       10.1.1.0 is directly connected, FastEthernet0/0
D       10.1.5.0 [90/297246976] via 10.10.10.5, 00:01:34, Tunnel0
C    192.168.1.0/24 is directly connected, FastEthernet1/0
S    192.168.3.0/24 [1/0] via 192.168.1.2

Таблица маршрутизации dyn3 (сеть 10.1.5.0 доступна через dyn5, а не через dyn1):

dyn3#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

S    192.168.5.0/24 [1/0] via 192.168.3.2
     10.0.0.0/24 is subnetted, 4 subnets
C       10.1.3.0 is directly connected, FastEthernet1/0
C       10.10.10.0 is directly connected, Tunnel0
D       10.1.1.0 [90/297270016] via 10.10.10.1, 00:01:24, Tunnel0
D       10.1.5.0 [90/310046976] via 10.10.10.5, 00:01:16, Tunnel0
S    192.168.1.0/24 [1/0] via 192.168.3.2
C    192.168.3.0/24 is directly connected, FastEthernet0/0

[править] Настройка OSPF

Для OSPF выбрана топология в которой mGRE-интерфейсы находятся в зоне 0, а локальные сети — каждая в своей зоне. Сеть разбита на зоны, так как это позволяет суммировать сети внутри зоны и не передавать в другие офисы подробную информацию о сетях (для данного примера это не актуально, но в реальной сети может существенно уменьшить таблицу маршрутизации и количество вычислений кратчайшего пути).

DMVPN OSPF.jpg

На маршрутизаторах необходимо:

  1. Включить OSPF для сетей mGRE-интерфейсов в зоне 0;
  2. Включить OSPF для локальных сетей в соответствующей зоне;
  3. Настроить OSPF на mGRE-интерфейсе.

Включение OSPF для сетей mGRE-интерфейсов в зоне 0:

dyn1(config)#router ospf 1
dyn1(config-router)#network 10.10.10.0 0.0.0.255 area 0

Включение OSPF для локальных сетей в соответствующей зоне (офису за dyn1 соответствует зона 1):

dyn1(config-router)#network 10.1.1.0 0.0.0.255 area 1

[править] Настройка OSPF на mGRE-интерфейсе

Так как mGRE-интерфейсы образуют NBMA-сеть, то на этих интерфейсах необходимо изменить настройки OSPF. Подробнее о работе OSPF в NBMA-сетях на странице OSPF в Cisco.

На hub-маршрутизаторе и spoke-маршрутизаторах отличаются настройки приоритетов, остальные настройки совпадают.

Приоритет интерфейса влияет на то, какой маршрутизатор будет выбран выделенным маршрутизатором (DR) для сети. В топологии "звезда" роль DR должен взять на себя центральный маршрутизатор.

На hub-маршрутизаторе приоритет устанавливается 10:

dyn1(config)#interface Tunnel0
dyn1(config-if)#ip ospf priority 10

На spoke-маршрутизаторах приоритет устанавливается 0 для того чтобы маршрутизаторы не могли участвовать в выборах DR:

dyn3(config)#interface Tunnel0
dyn3(config-if)#ip ospf priority 0

Указание типа сети OSPF на mGRE-интерфейсе:

dyn1(config-if)#ip ospf network broadcast

Изменение интервала между отправкой hello-пакетов:

dyn1(config-if)#ip ospf hello-interval 30

[править] Проверка работы OSPF

Соседи OSPF на dyn1:

dyn1#sh ip ospf neigh

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.3.3       0   FULL/DROTHER    00:01:51    10.10.10.3      Tunnel0
192.168.5.5       0   FULL/DROTHER    00:01:52    10.10.10.5      Tunnel0

Соседи OSPF на dyn3:

dyn3#sh ip ospf neighbor 

Neighbor ID     Pri   State           Dead Time   Address         Interface
192.168.1.1      10   FULL/DR         00:01:55    10.10.10.1      Tunnel0

Таблица маршрутизации на dyn1:

dyn1#sh ip route  
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

S    192.168.5.0/24 [1/0] via 192.168.1.2
     10.0.0.0/24 is subnetted, 4 subnets
O IA    10.1.3.0 [110/11112] via 10.10.10.3, 00:02:48, Tunnel0
C       10.10.10.0 is directly connected, Tunnel0
C       10.1.1.0 is directly connected, FastEthernet0/0
O IA    10.1.5.0 [110/11112] via 10.10.10.5, 00:02:48, Tunnel0
C    192.168.1.0/24 is directly connected, FastEthernet1/0
S    192.168.3.0/24 [1/0] via 192.168.1.2

Таблица маршрутизации на dyn3:

dyn3#sh ip route  
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

S    192.168.5.0/24 [1/0] via 192.168.3.2
     10.0.0.0/24 is subnetted, 4 subnets
C       10.1.3.0 is directly connected, FastEthernet1/0
C       10.10.10.0 is directly connected, Tunnel0
O IA    10.1.1.0 [110/11121] via 10.10.10.1, 00:01:26, Tunnel0
O IA    10.1.5.0 [110/11112] via 10.10.10.5, 00:01:26, Tunnel0
S    192.168.1.0/24 [1/0] via 192.168.3.2
C    192.168.3.0/24 is directly connected, FastEthernet0/0

[править] Фазы DMVPN

В DMVPN различают три фазы или версии: первую, вторую и третью. Рассмотрим подробнее каждую из них. В качестве протокола динамической маршрутизации для наглядности будем использовать EIGRP.

[править] Первая фаза

В первой фазе допускается динамическое подключение spoke-маршрутизаторов к hub, при этом всё взаимодействие между сетями, расположенными за spoke, ведётся через центр – через hub-маршрутизатор. То есть в первой фазе невозможно прямое взаимодействие между spoke-маршрутизаторами. Все spoke-маршрутизаторы в данной фазе используют только point-to-point туннели.

К преимуществам первой фазы можно отнести возможность значительного сокращения количества маршрутов, находящихся в таблицах маршрутизации spoke-устройств за счёт агрегации или фильтрации маршрутов, анонсируемых hub-маршрутизатором. Вырожденным примером является анонсирование лишь дефолтного маршрута со стороны hub.

dyn1(config)#int tu 0
dyn1(config-if)#ip summary-address eigrp 1 0.0.0.0/0

В этом случае на spoke-устройствах по EIGRP будет известен только один маршрут.

dyn3#sho ip ro ei
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override
Gateway of last resort is 10.10.10.1 to network 0.0.0.0
D*    0.0.0.0/0 [90/76800640] via 10.10.10.1, 00:03:27, Tunnel0

Проверим, что трафик между spoke-маршрутизаторами передаётся через hub.

dyn3#traceroute 10.1.5.5
Type escape sequence to abort.
Tracing the route to 10.1.5.5
VRF info: (vrf in name/id, vrf out name/id)
  1 10.10.10.1 52 msec 52 msec 52 msec
  2 10.10.10.5 140 msec 140 msec 68 msec

К недостаткам первой фазы относится неоптимальный маршрут следования трафика между spoke-маршрутизаторами.

[править] Вторая фаза

Вторая фаза включает в себя оптимизацию пути следования трафика, передаваемого между spoke-устройствами, за счёт динамического построения туннелей между конечными маршрутизаторами, которое становится возможным, если spoke-маршрутизаторы обладают полной информацией обо всех префиксах в сети.

Настройка hub-маршрутизатора должна удовлетворять трём основным правилам:

  • Агрегация сетей либо не должна производиться вовсе, либо не должна скрывать реального расположения префиксов;
  • На hub-устройстве должно быть отключено расщепление горизонта;
  • Hub-маршрутизатор не должен подменять адрес next-hop, полученный от spoke-устройства.

Никакая дополнительная настройка, включающая поддержку второй фазы, не требуется.

Таблица маршрутизации spoke-маршрутизатора представлена ниже и включает в себя все префиксы в сети.

dyn5#sho ip ro eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override
Gateway of last resort is not set
      10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
D        10.1.1.0/24 [90/76800640] via 10.10.10.1, 00:00:06, Tunnel0
D        10.1.3.0/24 [90/102400640] via 10.10.10.3, 00:00:05, Tunnel0

Несмотря на то, что таблица маршрутизации включает в себя все префиксы, в CEF не содержится полной информации о каждой подсети до момента передачи первого пакета. Первый пакет в сторону новой подсети обрабатывается процессором и отправляется в сторону hub-маршрутизатора, после чего завершается формирование записи в CEF. До прихода первого пакета запись в CEF помечается как incomplete.

dyn5#sho ip cef 10.1.3.0/24 internal
10.1.3.0/24, epoch 0, RIB[I], refcount 5, per-destination sharing
  sources: RIB
  feature space:
   IPRM: 0x00028000
  ifnums:
   Tunnel0(20): 10.10.10.3
  path 6A48428C, path list 6B119E44, share 1/1, type attached nexthop, for IPv4
  nexthop 10.10.10.3 Tunnel0, adjacency IP adj out of Tunnel0, addr 10.10.10.3 (incomplete)
  output chain: IP adj out of Tunnel0, addr 10.10.10.3 (incomplete)
dyn5#sho ip cef 10.10.10.3 internal
10.10.10.0/24, epoch 0, flags attached, connected, cover dependents, need deagg, RIB[C],
refcount 5, per-destination sharing
  sources: RIB
  feature space:
   IPRM: 0x0003800C
  subblocks:
   gsb Connected chain head(1): 0x6A7E66FC
   Covered dependent prefixes: 3
     need deagg: 2
     notify cover updated: 1
  ifnums:
   Tunnel0(20)
  path 69FD69E4, path list 6AF74FAC, share 1/1, type connected prefix, for IPv4
  connected to Tunnel0, adjacency punt
  output chain: punt

Для завершения формирования записи в CEF должен быть произведён поиск L2 данных по существующей L3 информации. Такой поиск производится с использованием протокола NHRP.

Dmvpn nhrp dump 1.png Dmvpn nhrp dump 2.png

После завершения работы протокола NHRP завершается формирование записи в CEF.

dyn5#sho ip cef 10.1.3.0/24 internal
10.1.3.0/24, epoch 0, RIB[I], refcount 5, per-destination sharing
  sources: RIB
  feature space:
   IPRM: 0x00028000
  ifnums:
   Tunnel0(20): 10.10.10.3
  path 6A48428C, path list 6B119E44, share 1/1, type attached nexthop, for IPv4
  nexthop 10.10.10.3 Tunnel0, adjacency IP midchain out of Tunnel0, addr 10.10.10.3 6B11A380
  output chain: IP midchain out of Tunnel0, addr 10.10.10.3 6B11A380 IP adj out of FastEthernet0/0,
addr 192.168.5.2 6930F0C0
dyn5#sho ip cef 10.10.10.3 internal
10.10.10.3/32, epoch 0, flags attached, refcount 5, per-destination sharing
  sources: Adj
  subblocks:
   Adj source: IP midchain out of Tunnel0, addr 10.10.10.3 6B11A380
    Dependent covered prefix type adjfib, cover 10.10.10.0/24
  ifnums:
   Tunnel0(20): 10.10.10.3
  path 6A48413C, path list 6B119D54, share 1/1, type adjacency prefix, for IPv4
  attached to Tunnel0, adjacency IP midchain out of Tunnel0, addr 10.10.10.3 6B11A380
  output chain: IP midchain out of Tunnel0, addr 10.10.10.3 6B11A380 IP adj out of FastEthernet0/0,
addr 192.168.5.2 6930F0C0

Трафик между сетями spoke-маршрутизаторов передаётся напрямую между ними (не через hub).

dyn5#traceroute 10.1.3.3
Type escape sequence to abort.
Tracing the route to 10.1.3.3
VRF info: (vrf in name/id, vrf out name/id)
  1 10.10.10.3 124 msec 76 msec 76 msec

Достоинством использования второй фазы является оптимизация путей передачи трафика между spoke-устройствами. К недостаткам можно отнести рост таблицы маршрутизации на spoke-оборудовании.

[править] Третья фаза

Третья фаза лишена недостатков первых двух фаз, но при этом обладает их достоинствами: трафик передаётся оптимальным путём, при этом таблица маршрутизации не обязана включать в себя все возможные префиксы сети. Добиться этого удалось за счёт помещения в таблицу маршрутизации только тех префиксов, которые реально используются в данный момент времени. Запись в таблице маршрутизации появляется только после того, как появляется трафик, предназначенный для соответствующих получателей. Всё волшебство третьей фазы становится возможным за счёт использования опций redirects и shortcuts. При использовании третьей фазы нет необходимости отказываться от суммирования маршрутов (как это было в первой фазе) и не возникает проблемы с адресами next-hop маршрутизаторов (как во второй фазе). По сути hub-маршрутизатор в сторону spoke-устройств может объявлять единственный маршрут (например, на сеть 0.0.0.0/0), который сразу же помещается в CEF. Таким образом в третьей фазе DMVPN на маршрутизаторах нет частично заполненных записей в CEF, что позволяет все пакеты (включая первый) маршрутизировать с использованием CEF, то есть без использования процессора.

Рассмотрим процесс передачи данных между двумя spoke-маршрутизаторами. Первый пакет передаётся в сторону hub-устройства в соответствии с таблицей маршрутизации, после чего hub-маршрутизатор через тот же туннельный интерфейс отправляет пакет в сторону маршрутизатора получателя. Такое событие (отправка пакета через тот же интерфейс, через который он был получен) заставляет hub-маршрутизатор отправить сообщение redirect, которое означает, что трафик передаётся не самым оптимальным путём. Включение возможности отправки hub-маршрутизатором сообщений NHRP redirect включается с помощью команды ip nhrp redirect, вводимой в режиме настройки туннельного интерфейса.

Получив сообщение redirect spoke-маршрутизатор отправляет сообщение NHRP request, с помощью которого пытается выяснить, NBMA адрес устройства, за которым расположен получатель. Сообщение NHRP request передаётся через hub в сторону второго spoke-устройство, которое и отвечает на запрос. Получив ответ на соответствующий запрос, spoke-маршрутизатор добавляет новую запись в таблицу маршрутизации и использует её для пересылки трафика. Для включения опции redirect на туннельных интерфейсах spoke-устройств должна быть введена команда ip nhrp shortcut.

dyn5#sho ip ro 10.0.0.0 255.0.0.0 lo
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override
Gateway of last resort is 10.10.10.1 to network 0.0.0.0
      10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C        10.1.5.0/24 is directly connected, FastEthernet1/0
L        10.1.5.5/32 is directly connected, FastEthernet1/0
C        10.10.10.0/24 is directly connected, Tunnel0
L        10.10.10.5/32 is directly connected, Tunnel0
dyn5#ping 10.1.3.3 so 10.1.5.5
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.3.3, timeout is 2 seconds:
Packet sent with a source address of 10.1.5.5
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/69/104 ms
dyn5#sho ip ro 10.0.0.0 255.0.0.0 lo
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override
Gateway of last resort is 10.10.10.1 to network 0.0.0.0
      10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
H        10.1.3.0/24 [250/1] via 10.10.10.3, 00:00:02, Tunnel0
C        10.1.5.0/24 is directly connected, FastEthernet1/0
L        10.1.5.5/32 is directly connected, FastEthernet1/0
C        10.10.10.0/24 is directly connected, Tunnel0
L        10.10.10.5/32 is directly connected, Tunnel0

Трафик между spoke-устройствами передаётся напрямую, то есть минуя hub-маршрутизатор.

dyn5#traceroute 10.1.3.3
Type escape sequence to abort.
Tracing the route to 10.1.3.3
VRF info: (vrf in name/id, vrf out name/id)
  1 10.10.10.3 52 msec 40 msec 52 msec

В выводе debug-сообщений на spoke-маршрутизаторе получение пакета nhrp redirect называется «NHRP: Receive Traffic Indication», тогда как отправку сообщения nhrp request можно распознать по фразе «NHRP: Sending NHRP Resolution Request for dest».

[править] Настройка IPsec

[править] Первая фаза (настройка IKE)

Для тестовой сети в политике isakmp используются настройки по умолчанию:

  • Алгоритм шифрования: DES - Data Encryption Standard (56 bit keys);
  • Алгоритм хеширования: Secure Hash Standard;
  • Метод аутентификации: Rivest-Shamir-Adleman Signature;
  • Группа Diffie-Hellman: #1 (768 bit);
  • Время жизни SA: 86400 seconds, no volume limit.

[править] Аутентификация по pre-shared key

В политике с аутентификацией по pre-shared key, метод аутентификации изменен, так как по умолчанию используется аутентификация по сертификатам. Остальные параметры используют значения по умолчанию.

Создать политику isakmp:

dyn1(config)#crypto isakmp policy 20
dyn1(config-isakmp)#authentication pre-share

Так как адрес peer заранее не известен и может быть получен динамически, то при настройке pre-shared key необходимо указывать шаблонный адрес (wildcard address).

Настроить isakmp pre-shared key:

dyn1(config)#crypto isakmp key 0 isakmpkey address 0.0.0.0 0.0.0.0

[править] Аутентификация по сертификатам

Аутентификацию по pre-shared key не рекомендуется использовать для DMVPN, так как pre-shared key должен быть указан с шаблонным адресом, и нет привязки к адресу маршрутизатора с которым устанавливается туннель.

В тестовой сети hub-маршрутизатор будет выполнять роль центра сертификатов. Всем маршрутизаторам выданы сертификаты.

Note-icon.gif

Более подробно о настройке центра сертификатов на маршрутизаторе Cisco и процедуре выдачи сертификатов маршрутизаторам на странице Центр сертификатов на маршрутизаторе Cisco.

Создать политику isakmp (так как по умолчанию используется аутентификация по сертификатам, то в тестовых целях можно оставить все настройки политики по умолчанию):

dyn1(config)#crypto isakmp policy 10
dyn1(config-isakmp)#

[править] Вторая фаза (настройка IPsec-профиля)

Так как hub-маршрутизатор не знает заранее IP-адреса spoke-маршрутизаторов, то для второй фазы IPsec нужна динамическая crypto map (dynamic crypto map), но для туннельных интерфейсов эквивалентом dynamic crypto map является IPSec-profile:

  • применяется на туннельном интерфейсе;
  • после применения любой трафик исходящий из туннельного интерфейса инициирует создание IPsec-туннеля (нет необходимости использовать ACL, как в обычной crypto map);
  • source и destination адреса туннельного интерфейса используются для создания IPsec-туннеля. Адреса могут быть прописаны в настройках интерфейса или получены динамически с помощью NHRP (не задаётся адрес peer, как в обычной crypto map);

Создаем transform set:

dyn1(config)#crypto ipsec transform-set DMVPN-TR esp-des 

Так как mGRE-интерфейс обеспечивает создание туннеля, то IPsec можно перевести в транспортный режим (по умолчанию используется туннельный режим):

dyn1(cfg-crypto-trans)#mode transport 

Создать IPSec-профиль:

dyn1(config)#crypto ipsec profile DMVPN
dyn1(config-profile)#set transform-set DMVPN-TR

[править] Применение IPsec-профиля

Применение IPsec-профиля на mGRE-интерфейсе:

dyn1(config)#interface Tunnel0
dyn1(config-if)#tunnel protection ipsec profile DMVPN

[править] Проверка работы IPsec

[править] Проверка работы IKE с аутентификацией по pre-shared key

Проверка isakmp SA на dyn1:

dyn1#show crypto isakmp sa 
dst             src             state          conn-id slot status
192.168.1.1     192.168.5.5     QM_IDLE              2    0 ACTIVE
192.168.1.1     192.168.3.3     QM_IDLE              1    0 ACTIVE

Проверка isakmp SA на dyn3 до установки туннеля spoke-to-spoke:

dyn3#show crypto isakmp sa 
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id slot status
192.168.1.1     192.168.3.3     QM_IDLE           1004    0 ACTIVE

IPv6 Crypto ISAKMP SA

Проверка isakmp SA на dyn3 после установки туннеля spoke-to-spoke. Для этого достаточно просто пропинговать туннельный интерфейс соседнего spoke-маршрутизатора (но пакетов icmp желательно послать штук 10):

dyn3#sh cry isa sa
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id slot status
192.168.1.1     192.168.3.3     QM_IDLE           1004    0 ACTIVE
192.168.5.5     192.168.3.3     QM_IDLE           1005    0 ACTIVE

IPv6 Crypto ISAKMP SA

Более подробная информация про isakmp SA (аутентификация по pre-shared key):

dyn1#show crypto isakmp sa  detail 
Codes: C - IKE configuration mode, D - Dead Peer Detection
       K - Keepalives, N - NAT-traversal
       X - IKE Extended Authentication
       psk - Preshared key, rsig - RSA signature
       renc - RSA encryption

C-id  Local           Remote          I-VRF    Status Encr Hash Auth DH Lifetime Cap.
2     192.168.1.1     192.168.5.5              ACTIVE des  sha  psk  1  23:56:14     
       Connection-id:Engine-id =  2:1(software)
1     192.168.1.1     192.168.3.3              ACTIVE des  sha  psk  1  23:56:12     
       Connection-id:Engine-id =  1:1(software)

[править] Проверка работы IKE с аутентификацией по сертификатам

Проверка isakmp SA на dyn1:

dyn1#sh cry isa sa
dst             src             state          conn-id slot status
192.168.1.1     192.168.5.5     QM_IDLE              2    0 ACTIVE
192.168.1.1     192.168.3.3     QM_IDLE              1    0 ACTIVE

Проверка isakmp SA на dyn3 до установки туннеля spoke-to-spoke:

dyn3#sh crypto isakmp sa 
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id slot status
192.168.1.1     192.168.3.3     QM_IDLE           1006    0 ACTIVE

IPv6 Crypto ISAKMP SA

Проверка isakmp SA на dyn3 после установки туннеля spoke-to-spoke. Для этого достаточно просто пропинговать туннельный интерфейс соседнего spoke-маршрутизатора (но пакетов icmp желательно послать штук 10):

dyn3#sh crypto isakmp sa detail 
Codes: C - IKE configuration mode, D - Dead Peer Detection
       K - Keepalives, N - NAT-traversal
       X - IKE Extended Authentication
       psk - Preshared key, rsig - RSA signature
       renc - RSA encryption
IPv4 Crypto ISAKMP SA

C-id  Local           Remote          I-VRF    Status Encr Hash Auth DH Lifetime Cap.

1006  192.168.3.3     192.168.1.1              ACTIVE des  sha  rsig 1  23:57:00     
       Engine-id:Conn-id =  SW:6

1007  192.168.3.3     192.168.5.5              ACTIVE des  sha  rsig 1  23:59:26     
       Engine-id:Conn-id =  SW:7

Более подробная информация про isakmp SA (аутентификация по сертификатам):

dyn1#show crypto isakmp sa  detail 
       X - IKE Extended Authentication
       psk - Preshared key, rsig - RSA signature
       renc - RSA encryption

C-id  Local           Remote          I-VRF    Status Encr Hash Auth DH Lifetime Cap.
2     192.168.1.1     192.168.5.5              ACTIVE des  sha  rsig 1  23:59:43     
       Connection-id:Engine-id =  2:1(software)
1     192.168.1.1     192.168.3.3              ACTIVE des  sha  rsig 1  23:59:34     
       Connection-id:Engine-id =  1:1(software)

[править] Проверка работы IPsec

Просмотр информации о crypto map на dyn1:

dyn1#sh crypto map
Crypto Map "Tunnel0-head-0" 65536 ipsec-isakmp
        Profile name: DMVPN
        Security association lifetime: 4608000 kilobytes/3600 seconds
        PFS (Y/N): N
        Transform sets={ 
                DMVPN-TR, 
        }

Crypto Map "Tunnel0-head-0" 65537 ipsec-isakmp
        Map is a PROFILE INSTANCE.
        Peer = 192.168.3.3
        Extended IP access list 
            access-list  permit gre host 192.168.1.1 host 192.168.3.3
        Current peer: 192.168.3.3
        Security association lifetime: 4608000 kilobytes/3600 seconds
        PFS (Y/N): N
        Transform sets={ 
                DMVPN-TR, 
        }

Crypto Map "Tunnel0-head-0" 65538 ipsec-isakmp
        Map is a PROFILE INSTANCE.
        Peer = 192.168.5.5
        Extended IP access list 
            access-list  permit gre host 192.168.1.1 host 192.168.5.5
        Current peer: 192.168.5.5
        Security association lifetime: 4608000 kilobytes/3600 seconds
        PFS (Y/N): N
        Transform sets={ 
                DMVPN-TR, 
        }
        Interfaces using crypto map Tunnel0-head-0:
                Tunnel0

Просмотр информации о crypto map на dyn3 до создания динамического туннеля с dyn5:

dyn3#sh crypto map
Crypto Map "Tunnel0-head-0" 65536 ipsec-isakmp
        Profile name: DMVPN
        Security association lifetime: 4608000 kilobytes/3600 seconds
        PFS (Y/N): N
        Transform sets={ 
                DMVPN-TR, 
        }

Crypto Map "Tunnel0-head-0" 65537 ipsec-isakmp
        Map is a PROFILE INSTANCE.
        Peer = 192.168.1.1
        Extended IP access list 
            access-list  permit gre host 192.168.3.3 host 192.168.1.1
        Current peer: 192.168.1.1
        Security association lifetime: 4608000 kilobytes/3600 seconds
        PFS (Y/N): N
        Transform sets={ 
                DMVPN-TR, 
        }
        Interfaces using crypto map Tunnel0-head-0:
                Tunnel0

Проверка IPsec SA на dyn1:

dyn1#show crypto ipsec sa

interface: Tunnel0
    Crypto map tag: Tunnel0-head-0, local addr 192.168.1.1

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.1.1/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (192.168.3.3/255.255.255.255/47/0)
   current_peer 192.168.3.3 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 144, #pkts encrypt: 144, #pkts digest: 144
    #pkts decaps: 110, #pkts decrypt: 110, #pkts verify: 110
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 0, #recv errors 0

     local crypto endpt.: 192.168.1.1, remote crypto endpt.: 192.168.3.3
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet1/0
     current outbound spi: 0x76324587(1983006087)

     inbound esp sas:
      spi: 0x68D0FDFE(1758526974)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 2008, flow_id: SW:8, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4576176/3198)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0x76324587(1983006087)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 2005, flow_id: SW:5, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4576171/3184)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.1.1/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (192.168.5.5/255.255.255.255/47/0)
   current_peer 192.168.5.5 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 144, #pkts encrypt: 144, #pkts digest: 144
    #pkts decaps: 106, #pkts decrypt: 106, #pkts verify: 106
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 0, #recv errors 0

     local crypto endpt.: 192.168.1.1, remote crypto endpt.: 192.168.5.5
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet1/0
     current outbound spi: 0xF5CB7B75(4123753333)

     inbound esp sas:
      spi: 0x31209EB8(824221368)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 2006, flow_id: SW:6, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4604536/3177)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0xF5CB7B75(4123753333)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 2007, flow_id: SW:7, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4604530/3161)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

Проверка IPsec SA на dyn3 после установки туннеля spoke-to-spoke:

dyn3#sh crypto ipsec sa 

interface: Tunnel0
    Crypto map tag: Tunnel0-head-0, local addr 192.168.3.3

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.3.3/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (192.168.1.1/255.255.255.255/47/0)
   current_peer 192.168.1.1 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 56, #pkts encrypt: 56, #pkts digest: 56
    #pkts decaps: 69, #pkts decrypt: 69, #pkts verify: 69
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 10, #recv errors 0

     local crypto endpt.: 192.168.3.3, remote crypto endpt.: 192.168.1.1
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
     current outbound spi: 0x68D0FDFE(1758526974)

    inbound esp sas:
      spi: 0x76324587(1983006087)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 47, flow_id: SW:47, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4598083/3535)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0x68D0FDFE(1758526974)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 48, flow_id: SW:48, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4598082/3475)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.3.3/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (192.168.5.5/255.255.255.255/47/0)
   current_peer 192.168.5.5 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 6, #pkts encrypt: 6, #pkts digest: 6
    #pkts decaps: 7, #pkts decrypt: 7, #pkts verify: 7
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 0, #recv errors 0

     local crypto endpt.: 192.168.3.3, remote crypto endpt.: 192.168.5.5
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0
     current outbound spi: 0x76C6CEF8(1992740600)

     inbound esp sas:
      spi: 0x6DD29A5(115157413)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 53, flow_id: SW:53, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4518903/3505)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0x76C6CEF8(1992740600)
        transform: esp-des ,
        in use settings ={Tunnel, }
        conn id: 54, flow_id: SW:54, crypto map: Tunnel0-head-0
        sa timing: remaining key lifetime (k/sec): (4518903/3490)
        IV size: 8 bytes
        replay detection support: N
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

[править] Просмотр информации о DMVPN сети

Так как на маршрутизаторе dyn3 записи различных типов — динамическая и статическая, то вся информация проверяется на нем.

Note-icon.gif

В некоторых версиях IOS может не быть команды show dmvpn. Она появилась в Cisco IOS 12.4(9)T.

Просмотр информации о DMVPN:

dyn3#show dmvpn        
Legend: Attrb --> S - Static, D - Dynamic, I - Incompletea
        N - NATed, L - Local, X - No Socket
        # Ent --> Number of NHRP entries with same NBMA peer

Tunnel0, Type:Spoke, NHRP Peers:2, 
 # Ent  Peer NBMA Addr Peer Tunnel Add State  UpDn Tm Attrb
 ----- --------------- --------------- ----- -------- -----
     1     192.168.1.1      10.10.10.1    UP 00:14:47 S    
     1     192.168.5.5      10.10.10.5    UP 00:14:36 D    

Более подробная информация о DMVPN до применения IPsec profile:

dyn3#show dmvpn detail 
Legend: Attrb --> S - Static, D - Dynamic, I - Incompletea
        N - NATed, L - Local, X - No Socket
        # Ent --> Number of NHRP entries with same NBMA peer

 -------------- Interface Tunnel0 info: -------------- 
Intf. is up, Line Protocol is up, Addr. is 10.10.10.3
   Source addr: 192.168.3.3, Dest addr: MGRE
  Protocol/Transport: "multi-GRE/IP", Protect "",
Tunnel VRF "", ip vrf forwarding ""

NHRP Details: NHS:         10.10.10.1 RE

Type:Spoke, NBMA Peers:2
# Ent  Peer NBMA Addr Peer Tunnel Add State  UpDn Tm Attrb    Target Network
----- --------------- --------------- ----- -------- ----- -----------------
    1     192.168.1.1      10.10.10.1    UP 00:01:06 S         10.10.10.1/32

# Ent  Peer NBMA Addr Peer Tunnel Add State  UpDn Tm Attrb    Target Network
----- --------------- --------------- ----- -------- ----- -----------------
    1     192.168.5.5      10.10.10.5    UP 00:00:52 D         10.10.10.5/32


Pending DMVPN Sessions:

Более подробная информация о DMVPN после применения IPsec profile:

dyn3#show dmvpn detail 
Legend: Attrb --> S - Static, D - Dynamic, I - Incompletea
        N - NATed, L - Local, X - No Socket
        # Ent --> Number of NHRP entries with same NBMA peer

 -------------- Interface Tunnel0 info: -------------- 
Intf. is up, Line Protocol is up, Addr. is 10.10.10.3
   Source addr: 192.168.3.3, Dest addr: MGRE
  Protocol/Transport: "multi-GRE/IP", Protect "DMVPN",
Tunnel VRF "", ip vrf forwarding ""

NHRP Details: NHS:         10.10.10.1 RE

Type:Spoke, NBMA Peers:2
# Ent  Peer NBMA Addr Peer Tunnel Add State  UpDn Tm Attrb    Target Network
----- --------------- --------------- ----- -------- ----- -----------------
    1     192.168.1.1      10.10.10.1    UP 00:20:47 S         10.10.10.1/32

  IKE SA: local 192.168.3.3/500 remote 192.168.1.1/500 Active 
  Crypto Session Status: UP-ACTIVE     
  fvrf: (none)
  IPSEC FLOW: permit 47 host 192.168.3.3 host 192.168.1.1 
        Active SAs: 2, origin: crypto map
   Outbound SPI : 0x68D0FDFE, transform : esp-des 
    Socket State: Open
# Ent  Peer NBMA Addr Peer Tunnel Add State  UpDn Tm Attrb    Target Network
----- --------------- --------------- ----- -------- ----- -----------------
    1     192.168.5.5      10.10.10.5    UP 00:20:47 D         10.10.10.5/32

  IKE SA: local 192.168.3.3/500 remote 192.168.5.5/500 Active 
  IKE SA: local 192.168.3.3/500 remote 192.168.5.5/500 Active 
  Crypto Session Status: UP-ACTIVE     
  fvrf: (none)
  IPSEC FLOW: permit 47 host 192.168.3.3 host 192.168.5.5 
        Active SAs: 2, origin: crypto map
   Outbound SPI : 0x76C6CEF8, transform : esp-des 
    Socket State: Open

Pending DMVPN Sessions:

[править] Конфигурации маршрутизаторов

В конфигурационных файлах сохранены все настройки:

  • Различные протоколы динамической маршрутизации:
    • OSPF;
    • EIGRP;
  • Различные методы аутентификации:
    • по pre-shared key;
    • по сертификатам.

Для реального использования достаточно выбрать один из протоколов маршрутизации и метод аутентификации.

Note-icon.gif

Так как у EIGRP AD (administrative distance) меньше, чем у OSPF, то при использовании обоих протоколов, в таблице маршрутизации будут маршруты EIGRP.

Note-icon.gif

Так как у политики isakmp, которая использует аутентификацию по сертификатам, на всех маршрутизаторах номер меньше чем у политики с pre-shared key, то при использовании обеих политик, аутентификация будет проводиться по сертификатам.

[править] Конфигурация hub-маршрутизатора (dyn1)

dyn1#sh run
Building configuration...
Current configuration : 5618 bytes
!
! Last configuration change at 23:01:18 UTC Fri Feb 27 2009
! NVRAM config last updated at 23:07:10 UTC Fri Feb 27 2009
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname dyn1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
ip cef
!
!         
ip domain name xgu.ru
ip host dyn1 192.168.1.1
!
!
!
crypto pki server dyn1
!
crypto pki trustpoint dyn1
 enrollment url http://dyn1:80
 revocation-check crl
 rsakeypair dyn1
!
crypto pki trustpoint dyn
 enrollment url http://dyn1:80
 revocation-check crl
!
!
crypto pki certificate chain dyn1
 certificate ca 01
  308201F7 30820160 A0030201 02020101 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 34353534 
  5A170D31 32303232 37323234 3535345A 300F310D 300B0603 55040313 0464796E 
  3130819F 300D0609 2A864886 F70D0101 01050003 818D0030 81890281 8100C2F6 
  FAC39C79 1F083E69 F2952D2E 9B0B439E 9970825F 2B8B69E5 104264F9 B6712BE1 
  DBDBDC5D 38D13DF3 9B9ADE18 53EDA6D5 F50F5958 B5BC485E 03B4A958 F53C1B2F 
  64149E25 4552E596 BC87D9C2 04F9B0F2 5158ED70 6A8E9600 9D99716B 991D9DE5 
  65C7CAEF B48FEE1B E37B0E48 A4784731 D7B70BE9 1E264E66 A1AF6EDE 433F0203 
  010001A3 63306130 0F060355 1D130101 FF040530 030101FF 300E0603 551D0F01 
  01FF0404 03020186 301F0603 551D2304 18301680 14316E92 9C655E50 81B8C728 
  E0967B27 1B2D34DA 9E301D06 03551D0E 04160414 316E929C 655E5081 B8C728E0 
  967B271B 2D34DA9E 300D0609 2A864886 F70D0101 04050003 8181005E 77BD000F 
  8AF70F5E 5B1BF974 754BBCD8 548494FE AC7EE542 A1F60A15 2FD74C84 01EC7C5D 
  1F4361B9 109A154F 208CE0A7 B53F6BAC D8D35C71 F5319EA1 60083F1C 60E65441 
  9D752A26 BB90F676 7E9F0F2A 9B0FE3C8 C254AFD5 7A055242 E856D93E 5CE9D5E4 
  0E2722D3 46540D03 F69688C6 FDC4EDE2 F138818F 5D0076F2 BF5CA2
  quit
crypto pki certificate chain dyn
 certificate 04
  308201AC 30820115 A0030201 02020104 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 35363231 
  5A170D31 30303232 37323235 3632315A 301C311A 30180609 2A864886 F70D0109 
  02160B64 796E312E 7867752E 7275305C 300D0609 2A864886 F70D0101 01050003 
  4B003048 024100A6 B5406A29 6DC12463 BF3204E9 00DF0F76 28157CEE 30FE7086 
  95CF3C17 06680971 23FFB531 7E52632A A779EA0C 54C54304 63D20B6D 4065408D 
  F1532CDA CC3B3902 03010001 A34F304D 300B0603 551D0F04 04030205 A0301F06 
  03551D23 04183016 8014316E 929C655E 5081B8C7 28E0967B 271B2D34 DA9E301D 
  0603551D 0E041604 1452D06E 52DA5CB4 F90D2966 31A4D112 3E2FC81F 32300D06 
  092A8648 86F70D01 01040500 03818100 A4E9A982 2E293A24 1B89C9FE F8A03BE1 
  024AF029 417B3A23 D7EABBAB 8E83664A 7821BFDC 65CD0280 1C7BAE0F 41053A45 
  0E8FB6FA 83A6FFA2 11075443 4AB6658E 0F17A141 FAC2E7A9 D093890B 8DA9E90C 
  8C5A7C82 0B4D261D 452690DE 894D9BF4 14EE9FF5 F9632C3A F5F34115 F42AA444 
  954ACE4F 32A47FD0 AF588B7F 299027DA
  quit
 certificate ca 01
  308201F7 30820160 A0030201 02020101 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 34353534 
  5A170D31 32303232 37323234 3535345A 300F310D 300B0603 55040313 0464796E 
  3130819F 300D0609 2A864886 F70D0101 01050003 818D0030 81890281 8100C2F6 
  FAC39C79 1F083E69 F2952D2E 9B0B439E 9970825F 2B8B69E5 104264F9 B6712BE1 
  DBDBDC5D 38D13DF3 9B9ADE18 53EDA6D5 F50F5958 B5BC485E 03B4A958 F53C1B2F 
  64149E25 4552E596 BC87D9C2 04F9B0F2 5158ED70 6A8E9600 9D99716B 991D9DE5 
  65C7CAEF B48FEE1B E37B0E48 A4784731 D7B70BE9 1E264E66 A1AF6EDE 433F0203 
  010001A3 63306130 0F060355 1D130101 FF040530 030101FF 300E0603 551D0F01 
  01FF0404 03020186 301F0603 551D2304 18301680 14316E92 9C655E50 81B8C728 
  E0967B27 1B2D34DA 9E301D06 03551D0E 04160414 316E929C 655E5081 B8C728E0 
  967B271B 2D34DA9E 300D0609 2A864886 F70D0101 04050003 8181005E 77BD000F 
  8AF70F5E 5B1BF974 754BBCD8 548494FE AC7EE542 A1F60A15 2FD74C84 01EC7C5D 
  1F4361B9 109A154F 208CE0A7 B53F6BAC D8D35C71 F5319EA1 60083F1C 60E65441 
  9D752A26 BB90F676 7E9F0F2A 9B0FE3C8 C254AFD5 7A055242 E856D93E 5CE9D5E4 
  0E2722D3 46540D03 F69688C6 FDC4EDE2 F138818F 5D0076F2 BF5CA2
  quit
!
!
! 
!
crypto isakmp policy 10
!
crypto isakmp policy 20
 authentication pre-share
crypto isakmp key isakmpkey address 0.0.0.0 0.0.0.0
!
!
crypto ipsec transform-set DMVPN-TR esp-des 
 mode transport
!
!
crypto ipsec profile DMVPN
 set transform-set DMVPN-TR 
!
!
interface Tunnel0
 ip address 10.10.10.1 255.255.255.0
 no ip redirects
 ip mtu 1416
 no ip next-hop-self eigrp 1
 ip nhrp authentication nhrppass
 ip nhrp map multicast dynamic
 ip nhrp network-id 999
 no ip split-horizon eigrp 1
 ip ospf network broadcast
 ip ospf hello-interval 30
 ip ospf priority 10
 tunnel source FastEthernet1/0
 tunnel mode gre multipoint
 tunnel key 999
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip address 10.1.1.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet1/0
 ip address 192.168.1.1 255.255.255.0
 duplex auto
 speed auto
!         
router eigrp 1
 network 10.1.1.0 0.0.0.255
 network 10.10.10.0 0.0.0.255
 no auto-summary
!
router ospf 1
 log-adjacency-changes
 network 10.1.1.0 0.0.0.255 area 1
 network 10.10.10.0 0.0.0.255 area 0
!
ip forward-protocol nd
ip route 192.168.3.0 255.255.255.0 192.168.1.2
ip route 192.168.5.0 255.255.255.0 192.168.1.2
!
!
ip http server
no ip http secure-server
!
!
control-plane
!
!
line con 0
 exec-timeout 0 0
 logging synchronous
line aux 0
line vty 0 4
!
!
end

[править] Конфигурация spoke1 (dyn3)

dyn3#sh run
Building configuration...

Current configuration : 4466 bytes
!
! Last configuration change at 22:57:58 UTC Fri Feb 27 2009
! NVRAM config last updated at 23:00:31 UTC Fri Feb 27 2009
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname dyn3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
ip cef
!
!
!
ip domain name xgu.ru
ip host dyn1 192.168.1.1
!
multilink bundle-name authenticated
!
!
!
!
crypto pki trustpoint dyn1
 enrollment url http://dyn1:80
 revocation-check crl
!
!
crypto pki certificate chain dyn1
 certificate 02
  308201F0 30820159 A0030201 02020102 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 35323031 
  5A170D31 30303232 37323235 3230315A 301C311A 30180609 2A864886 F70D0109 
  02160B64 796E332E 7867752E 72753081 9F300D06 092A8648 86F70D01 01010500 
  03818D00 30818902 818100B5 3C4F3F80 1AF47759 9707CF2D FF5A62CF 8409EA97 
  CC9940C1 4DAB0907 DAB67FEC AB6CEFB5 23B2102A C715F0C6 E928AD13 9C46EFE7 
  0A1088D9 64B143E0 60E0846B 4E309FE3 34A956DE 8BBAE8B5 24482691 33E33E6F 
  DA4D5D71 2ED3000C 17091FFB 8330F259 DB29EE82 F791251B C856222E 50E7E2D4 
  DC7834BD 9CA9DD90 9B3A4902 03010001 A34F304D 300B0603 551D0F04 04030205 
  A0301F06 03551D23 04183016 8014316E 929C655E 5081B8C7 28E0967B 271B2D34 
  DA9E301D 0603551D 0E041604 142D0CE0 43342D6A 6E707455 9546A505 8AA3389B 
  BD300D06 092A8648 86F70D01 01040500 03818100 5BA5FF5C B9CE9D85 D5FAECBA 
  1CC46FFA C380C2BC 0CD47900 AB18C0DC 2785DE8C B60C0066 EBFD009C A77C8D77 
  02E57E58 C569D21F 1ED99D77 FB48EF54 33CCAE81 DEDCAC47 F95DCB79 0969BA3F 
  1BF21012 682C0E6C 736343BB 11E2AFA2 0782B200 FDE760D4 6D052C0D 7006AF57 
  EEFFDF10 BC51F753 A0210C0D 2E39CCD3 EF5A7652
  quit
 certificate ca 01
  308201F7 30820160 A0030201 02020101 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 34353534 
  5A170D31 32303232 37323234 3535345A 300F310D 300B0603 55040313 0464796E 
  3130819F 300D0609 2A864886 F70D0101 01050003 818D0030 81890281 8100C2F6 
  FAC39C79 1F083E69 F2952D2E 9B0B439E 9970825F 2B8B69E5 104264F9 B6712BE1 
  DBDBDC5D 38D13DF3 9B9ADE18 53EDA6D5 F50F5958 B5BC485E 03B4A958 F53C1B2F 
  64149E25 4552E596 BC87D9C2 04F9B0F2 5158ED70 6A8E9600 9D99716B 991D9DE5 
  65C7CAEF B48FEE1B E37B0E48 A4784731 D7B70BE9 1E264E66 A1AF6EDE 433F0203 
  010001A3 63306130 0F060355 1D130101 FF040530 030101FF 300E0603 551D0F01 
  01FF0404 03020186 301F0603 551D2304 18301680 14316E92 9C655E50 81B8C728 
  E0967B27 1B2D34DA 9E301D06 03551D0E 04160414 316E929C 655E5081 B8C728E0 
  967B271B 2D34DA9E 300D0609 2A864886 F70D0101 04050003 8181005E 77BD000F 
  8AF70F5E 5B1BF974 754BBCD8 548494FE AC7EE542 A1F60A15 2FD74C84 01EC7C5D 
  1F4361B9 109A154F 208CE0A7 B53F6BAC D8D35C71 F5319EA1 60083F1C 60E65441 
  9D752A26 BB90F676 7E9F0F2A 9B0FE3C8 C254AFD5 7A055242 E856D93E 5CE9D5E4 
  0E2722D3 46540D03 F69688C6 FDC4EDE2 F138818F 5D0076F2 BF5CA2
  quit
!
! 
!
crypto isakmp policy 10
!
crypto isakmp policy 20
 authentication pre-share
crypto isakmp key isakmpkey address 0.0.0.0 0.0.0.0
!
!
crypto ipsec transform-set DMVPN-TR esp-des 
 mode transport
!
!
crypto ipsec profile DMVPN
 set transform-set DMVPN-TR 
!
!
!
interface Tunnel0
 ip address 10.10.10.3 255.255.255.0
 no ip redirects
 ip mtu 1416
 ip nhrp authentication nhrppass
 ip nhrp map 10.10.10.1 192.168.1.1
 ip nhrp map multicast 192.168.1.1
 ip nhrp network-id 999
 ip nhrp nhs 10.10.10.1
 ip nhrp cache non-authoritative
 ip ospf network broadcast
 ip ospf hello-interval 30
 ip ospf priority 0
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 999
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip address 192.168.3.3 255.255.255.0
 duplex full
!
interface FastEthernet1/0
 ip address 10.1.3.3 255.255.255.0
 duplex full
!
router eigrp 1
 network 10.1.3.0 0.0.0.255
 network 10.10.10.0 0.0.0.255
 no auto-summary
!
router ospf 1
 log-adjacency-changes
 network 10.1.3.0 0.0.0.255 area 3
 network 10.10.10.0 0.0.0.255 area 0
!
ip route 192.168.1.0 255.255.255.0 192.168.3.2
ip route 192.168.5.0 255.255.255.0 192.168.3.2
no ip http server
no ip http secure-server
!
!
!
logging alarm informational
!
!
!
control-plane
!
!
line con 0
 exec-timeout 0 0
 logging synchronous
 stopbits 1
line aux 0
 stopbits 1
line vty 0 4
!
!
end

[править] Конфигурация spoke2 (dyn5)

dyn5#sh run
Building configuration...

Current configuration : 4486 bytes
!
! Last configuration change at 23:01:02 UTC Fri Feb 27 2009
! NVRAM config last updated at 23:01:03 UTC Fri Feb 27 2009
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname dyn5
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
ip cef
!
!
no ip domain lookup
ip domain name xgu.ru
ip host dyn1 192.168.1.1
!
multilink bundle-name authenticated
!
!
!
!
!
crypto pki trustpoint dyn1
 enrollment url http://dyn1:80
 revocation-check crl
!
!
!
!
crypto pki certificate chain dyn1
 certificate 03
  308201F0 30820159 A0030201 02020103 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 35323032 
  5A170D31 30303232 37323235 3230325A 301C311A 30180609 2A864886 F70D0109 
  02160B64 796E352E 7867752E 72753081 9F300D06 092A8648 86F70D01 01010500 
  03818D00 30818902 818100B2 5B009C5C 96CE1EC6 50277830 567B7A7E D2E708C9 
  08D76929 FEBBEF08 CAB21B0B 1608D6F4 E95E4289 B982C020 4CE04C0C 98D529D6 
  194B0E43 EA66C3D2 D4DA1C91 137F3E0D 0A82C6A1 C3E35FF7 5835F8C2 AB4F6041 
  1C795126 E5624959 14125BFD 5F8B0D23 86F89692 8665B1EA 155267DC 597E3BBD 
  D09767B1 94DCA421 6604ED02 03010001 A34F304D 300B0603 551D0F04 04030205 
  A0301F06 03551D23 04183016 8014316E 929C655E 5081B8C7 28E0967B 271B2D34 
  DA9E301D 0603551D 0E041604 144898BD AAA7C3C3 7AF48494 F40A655A 7164F361 
  6E300D06 092A8648 86F70D01 01040500 03818100 91A1FD53 C06730AE D5265C09 
  C8B00F77 4F404E0A BA40FD59 1E337390 4597F3E8 3E9537B1 64030C48 4373EB95 
  EF0E7364 9E4E0DFE 9D9E40E7 B261C899 6A71EAD4 3C3478BA 6C7FC386 F80BE286 
  CF5A9013 E5CF37BC A3B228E1 D1C67B35 EAF9EF69 40E79C95 7DC25C3A E5C1E4A7 
  63CD2727 3820B8DF B5675215 D41BFD8C A34392C7
  quit
 certificate ca 01
  308201F7 30820160 A0030201 02020101 300D0609 2A864886 F70D0101 04050030 
  0F310D30 0B060355 04031304 64796E31 301E170D 30393032 32373232 34353534 
  5A170D31 32303232 37323234 3535345A 300F310D 300B0603 55040313 0464796E 
  3130819F 300D0609 2A864886 F70D0101 01050003 818D0030 81890281 8100C2F6 
  FAC39C79 1F083E69 F2952D2E 9B0B439E 9970825F 2B8B69E5 104264F9 B6712BE1 
  DBDBDC5D 38D13DF3 9B9ADE18 53EDA6D5 F50F5958 B5BC485E 03B4A958 F53C1B2F 
  64149E25 4552E596 BC87D9C2 04F9B0F2 5158ED70 6A8E9600 9D99716B 991D9DE5 
  65C7CAEF B48FEE1B E37B0E48 A4784731 D7B70BE9 1E264E66 A1AF6EDE 433F0203 
  010001A3 63306130 0F060355 1D130101 FF040530 030101FF 300E0603 551D0F01 
  01FF0404 03020186 301F0603 551D2304 18301680 14316E92 9C655E50 81B8C728 
  E0967B27 1B2D34DA 9E301D06 03551D0E 04160414 316E929C 655E5081 B8C728E0 
  967B271B 2D34DA9E 300D0609 2A864886 F70D0101 04050003 8181005E 77BD000F 
  8AF70F5E 5B1BF974 754BBCD8 548494FE AC7EE542 A1F60A15 2FD74C84 01EC7C5D 
  1F4361B9 109A154F 208CE0A7 B53F6BAC D8D35C71 F5319EA1 60083F1C 60E65441 
  9D752A26 BB90F676 7E9F0F2A 9B0FE3C8 C254AFD5 7A055242 E856D93E 5CE9D5E4 
  0E2722D3 46540D03 F69688C6 FDC4EDE2 F138818F 5D0076F2 BF5CA2
  quit
!
! 
!
crypto isakmp policy 10
!
crypto isakmp policy 20
 authentication pre-share
crypto isakmp key isakmpkey address 0.0.0.0 0.0.0.0
!
!         
crypto ipsec transform-set DMVPN-TR esp-des 
 mode transport
!
!
crypto ipsec profile DMVPN
 set transform-set DMVPN-TR 
!
!
!
interface Tunnel0
 ip address 10.10.10.5 255.255.255.0
 no ip redirects
 ip mtu 1416
 ip nhrp authentication nhrppass
 ip nhrp map 10.10.10.1 192.168.1.1
 ip nhrp map multicast 192.168.1.1
 ip nhrp network-id 999
 ip nhrp nhs 10.10.10.1
 ip nhrp cache non-authoritative
 ip ospf network broadcast
 ip ospf hello-interval 30
 ip ospf priority 0
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 999
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip address 192.168.5.5 255.255.255.0
 duplex full
!
interface FastEthernet1/0
 ip address 10.1.5.5 255.255.255.0
 duplex full
!
router eigrp 1
 network 10.1.5.0 0.0.0.255
 network 10.10.10.0 0.0.0.255
 no auto-summary
!
router ospf 1
 log-adjacency-changes
 network 10.1.5.0 0.0.0.255 area 5
 network 10.10.10.0 0.0.0.255 area 0
!
ip route 192.168.1.0 255.255.255.0 192.168.5.2
ip route 192.168.3.0 255.255.255.0 192.168.5.2
no ip http server
no ip http secure-server
!
!
logging alarm informational
!
!
!
control-plane
!
!
line con 0
 exec-timeout 0 0
 logging synchronous
 stopbits 1
line aux 0
 stopbits 1
line vty 0 4
!
!
end

[править] DMVPN и crypto-map на одном интерфейсе

Удалось подружить DMVPN и crypto-map на одном интерфейсе используя ISAKMP Profile.

http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6586/ps6635/prod_white_paper0900aecd8034bd59.html

[править] Дополнительные настройки

Описываем ключи для каждого из пиров:

crypto keyring AAA 
 pre-shared-key address 192.168.2.1 key isakmpkey

Формируем новый ISAKMP профиль

crypto isakmp profile MyISaPROF
 keyring AAA
 match identity address 192.168.2.1 255.255.255.255 

Добавляем еще один transform-set

  crypto ipsec transform-set MyTS esp-3des esp-md5-hmac

Формируем crypto map используем crypto isakmp profile MyISaPROF

crypto map MyCRM 10 ipsec-isakmp 
 set peer 192.168.2.1
 set security-association lifetime seconds 28800
 set transform-set MyTS 
 set pfs group2
 set isakmp-profile MyISaPROF
 match address MAP_VPN

Заводим access-list с разрешением на каждую подсеть за каждым пиром

ip access-list extended MAP_VPN
 permit ip 10.1.1.0 0.0.0.255 10.1.2.0 0.0.0.255
 deny ip any any

И самое простое подвешиваем crypto map на внешний интерфейс

interface FastEthernet0/1
 description WAN Provader
 ip address 192.168.1.1 255.255.255.0
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip verify unicast reverse-path
 ip nbar protocol-discovery
 ip virtual-reassembly
 duplex auto
 speed auto
 no cdp enable
 crypto map MyCRM

Не забываем маршруты на сети за VPN

ip route 10.1.2.0 255.255.255.0 FastEthernet0/1

Вроде все. Громоздко, статично, если много пиров то и писать много. Но позволяет подключить к Cisco любую железку (dlink, tplink и пр. супербренды :) ).


Конфигурация hub-маршрутизатора

 !
 version 15.0
 service timestamps debug datetime msec
 service timestamps log datetime msec
 service password-encryption
 !
 hostname R1ca
 !
 boot-start-marker
 boot-end-marker
 !
 no aaa new-model
 !
 !
 !
 clock timezone UTC 3
 dot11 syslog
 ip source-route
 !
 !
 !
 !
 ip cef
 ip domain name xgu.ru
 ip host R1ca 192.168.1.1
 no ipv6 cef
 !
 multilink bundle-name authenticated
 !
 !
 crypto pki server R1ca
  database level names
  lifetime crl 24
  lifetime certificate 1095
  lifetime ca-certificate 1825
 !
 crypto pki trustpoint R1ca
  enrollment url http://R1ca:80
  revocation-check crl
  rsakeypair R1ca
 !
 crypto pki trustpoint TEST1
  enrollment url http://R1ca:80
  serial-number
  revocation-check crl
 !
 !
 !  
 !
 ! 
 crypto keyring AAA 
  pre-shared-key address 192.168.2.1 key isakmpkey
 !
 crypto isakmp policy 10
 !
 crypto isakmp policy 20
  encr 3des
  hash md5
  authentication pre-share
  group 2
  lifetime 28800
 !
 !
 !
 crypto isakmp profile MyISaPROF
   keyring AAA
   match identity address 192.168.2.1 255.255.255.255   
 !
 !
 crypto ipsec transform-set DMVPN-TR esp-3des esp-md5-hmac 
  mode transport
 crypto ipsec transform-set MyTS esp-3des esp-md5-hmac 
 !
 crypto ipsec profile DMVPN
  set transform-set DMVPN-TR 
 !
 !
 crypto map MyCRM 10 ipsec-isakmp 
  set peer 192.168.2.1
  set security-association lifetime seconds 28800
  set transform-set MyTS 
  set pfs group2
  set isakmp-profile MyISaPROF
  match address MAP_VPN
 !
 !
 !
 !
 interface Tunnel0
  ip address 10.10.10.1 255.255.255.0
  no ip redirects
  ip mtu 1416
  ip nhrp authentication nhrppass
  ip nhrp map multicast dynamic
  ip nhrp network-id 999
  ip ospf network broadcast
  ip ospf hello-interval 30
  ip ospf priority 10
  tunnel source FastEthernet0/1
  tunnel mode gre multipoint
  tunnel key 999
  tunnel protection ipsec profile DMVPN
 !
 !
 interface FastEthernet0/0
  description LAN 
  ip address 10.1.1.1 255.255.255.0
  no ip redirects
  no ip unreachables
  no ip proxy-arp
  ip virtual-reassembly
  duplex auto
  speed auto
  no cdp enable
 !
 !
 interface FastEthernet0/1
  description WAN Provider
  ip address 192.168.1.1 255.255.255.0
  no ip redirects
  no ip unreachables
  no ip proxy-arp
  ip verify unicast reverse-path
  ip nbar protocol-discovery
  ip virtual-reassembly
  duplex auto
  speed auto
  no cdp enable
  crypto map MyCRM
 !
 !
 router ospf 1
  log-adjacency-changes
  network 10.10.10.0 0.0.0.255 area 0
  network 10.1.1.0 0.0.0.255 area 1
 !
 ip forward-protocol nd
 ip http server
 no ip http secure-server
 !
 !
 !
 ip route 10.1.2.0 255.255.255.0 FastEthernet0/1
 !
 !
 ip route 212.109.44.0 255.255.255.0 192.168.3.1
 !
 ip access-list extended MAP_VPN
  permit ip 10.1.1.0 0.0.0.255 10.1.2.0 0.0.0.255
  deny   ip any any
 !
 !
 !
 !
 control-plane
 !
 !
 !
 line con 0
  exec-timeout 5 0
  stopbits 1
  line aux 0
  exec-timeout 5 0
 line vty 0 4
  exec-timeout 30 0
  privilege level 15
  transport input telnet ssh
 !
 scheduler allocate 20000 1000
 ntp server 80.91.187.10
 ntp server 62.149.0.30
 end

[править] Дополнительная информация

DMVPN dual ISP:

[править] Материалы по IPsec на xgu.ru