В этой статье будет рассмотрен пример настройки DMVPN между устройствами Eltex серии ESR и Huawei линейки Access Routers (AR), где в качестве Hub используется маршрутизатор AR , а в качестве Spoke - маршрутизаторы ESR и AR.

Характеристики стенда:

  • DMVPN Phase 3
    • mtu - 1400

      • adjust-mss 1360

    • время регистрации ( в том числе повторной ) - 180 с

    • время жизни NHRP-регистрации о регистрации на удалённом соседе - 540 с

    • Защищённость с помощью IPSec

  • eBGP (Spoke - в одной AS, Hub - в другой) в качестве протокола маршрутизации DMVPN Cloud

  • Front-door VRF

  • IKE:

    • Алгоритм аутентификации: SHA2-256

    • Алгоритм шифрования: AES-256

    • Метод аутентификации: по ключам

    • Группа Дифи-Хеллмана: 19

    • Механизм dead-peer-detection

      • Действие при срабатывании: clear

      • Интервал проверки: 10 с

      • Базовый таймаут ожидания ответа: 5 с

      • Количество попыток: 2

  •  IPsec :
    • Алгоритм аутентификации SHA2-256
    • Алгоритм шифрования: AES-256
    • Тип организации соединения:  Транспортный

Схема:

Цель:

Установить сетевую связность между LAN-подсетями, расположенными за Spoke-устройствами.В данном примере устройство модели ESR выступает в роли Spoke-1, а AR - в роли Spoke-2 и Hub. Каждый из Spoke будет анонсировать свою LAN-сеть Hub-устройству. Hub анонсирует каждому Spoke маршрут по умолчанию.

Решение:

Настройка ESR Spoke-1:

Базовые сервисы

Создадим VRF для front-door схемы и настроим интерфейсы. Интерфейс gigabitethernet 1/0/1 выступает в роли WAN, терминируя линковочную подсеть 203.0.113.0/24 к интернет-провайдеру. Он должен находиться в отдельном пространстве маршрутизации. Саб-интерфейс gigabitethernet 1/0/2.100 в данном примере выступает в роли  LAN-сегмента сети 172.16.0.0/24, доступный через VLAN 100:

hostname ESR-Spoke-1

ip vrf ISP
exit

interface gigabitethernet 1/0/1
  ip vrf forwarding ISP
  ip firewall disable
  ip address 203.0.113.10/24
exit
interface gigabitethernet 1/0/2.100
  ip firewall disable
  ip address 172.16.0.1/24
exit

При организации доступа к сети Интернет в отдельном VRF для этого примера мы будем использовать статическую маршрутизацию с указанием маршрута по умолчанию с некст-хопом IP-адреса  203.0.113.1 интернет-провайдера:

ip route vrf ISP 0.0.0.0/0 203.0.113.1
mGRE

Выполним настройку GRE-интерфейса: зададим значение key, TTL, MTU и TCP Adjust-MSS для оптимальной работы сервисов:

tunnel gre 1
  key 1002
  ttl 255
  mtu 1400
  ip tcp adjust-mss 1360

Настроим IP-параметры на GRE-интерфейсе: укажем VRF и внешний IP-адрес, от IP-интерфейса которого будет строиться туннель и зададим ему  IP-адрес:

  tunnel-source vrf ISP
  local address 203.0.113.10
  ip address 10.0.2.10/24 

  Перейдём к настройке основной части конфигурации - DMVPN. Переведём интерфейс в режим работы multipoint:

   multipoint 

Зададим параметры подключения к Next-Hop Server (Hub): укажем его туннельный и NBMA (внешний) IP-адреса, а так же привяжем туннельный IP-адрес NHS для регистрации на нём. Для корректной отправки multicast-трафика через DMVPN укажем в качестве аргумента  назначения Next-Hop Server (Hub):

   ip nhrp map 10.0.2.1 198.51.100.10
   ip nhrp nhs 10.0.2.1
   ip nhrp multicast nhs 

Для работы DMVPN в третьей фазе и возможности устанавливать Spoke-to-Spoke-туннели, создавая shortcut-маршруты, включим функционал обработки NHRP Traffic-indication:

   ip nhrp shortcut 

Для корректной сходимости и своевременного перестроения туннелей установим значение времени жизни записи о регистрации NHRP-клиента на удалённом соседе равное 540 секундам. Этой же командой регулируется и время повторной перерегистрации на удалённом Next-Hop Server - оно составляет 1/3 от значения holding-time, что в нашем случае равняется 180 секундам:

   ip nhrp holding-time 540 

Наконец, активируем работу протокола NHRP в mGRE-интерфейсе:

   ip nhrp enable 

Укажем привязки будущих IPSec VPN-профилей, с помощью которых будет обеспечено шифрование туннельных соединений. Для Hub и Spoke должны быть указаны свои VPN-профиля для обеспечения безопасности и криптоустойчивости соединений:

  ip nhrp ipsec Hub
  ip nhrp ipsec spokes dynamic

Включим mGRE туннель:

  enable
exit

Настройка mGRE туннеля завершена.

IPSec

Для обеспечения защищённости канала настроим параметры IPSec-соединения и начнём с первой файзы.  Для установления IKE-связности зададим обозначенные в условиях задачи алгоритмы аутентификации SHA-256 и шифрования - AES256. Для обеспечения надёжности шифрования IKE-соединения будем использовать алгоритмы Диффи-Хеллмана из 19-ой группы:

security ike proposal prop1
  authentication algorithm sha2-256
  encryption algorithm aes256
  dh-group 19
exit

Далее выполним настройку политики IKE-соединения, указав в ней Pre-shared-key, который используется как метод авторизации по умолчанию на устройствах ESR. Так же привяжем ранее созданный IKE-proposal к этой политике:

security ike policy pol1
  pre-shared-key ascii-text encrypted B9B81768A85D18A965
  proposal prop1
exit

Наконец, опишем параметры идентификации IKE-соединения с Hub, по которым обе стороны смогут установить соединение. В данном примере мы используем IKE-соединение версии 2, которое является наиболее функциональным и защищённым в сравнении с первой версией:

security ike gateway Hub
  version v2-only

Для установления связности по ранее настроенным алгоритмам привяжем ранее созданную ike policy pol1 :

   ike-policy pol1 

И опишем селекторы траффика, который необходимо зашифровывать - нам необходимо выполнять полное шифрование GRE, поэтому указываем локальный и удалённый адреса туннеля:

  local address 203.0.113.10
  local network 203.0.113.10/32 protocol gre 
  remote address 198.51.100.10
  remote network 198.51.100.10/32 protocol gre  

Укажем режим работы IPSec - Policy-based, т.к. используются селекторы трафика. А так же отключим функционал mobike - в данной конфигурации он нам не понадобится:

  mode policy-based
  mobike disable 

Завершим часть настройки IKE-сессии заданием настроек Dead Peer Detection: действие clear будет очищать текущую IKE-сессию в случае неответа удалённой стороны на пакеты типа R-U-THERE; такие пакеты мы будем отправлять каждые 10 секунд и, если не дождёмся ответа хотя бы от одного, отправим ещё 2 пакета с интервалом в 5 секунд между ними:

  dead-peer-detection action clear
  dead-peer-detection interval 10
  dead-peer-detection retransmit timeout 5
  dead-peer-detection retransmit tries 2
exit

Для построения шифрованных Spoke-to-Spoke туннелей настройки параметров идентификации IKE-соединения схожи с предыдущими и отличны лишь в части удалённой стороны - устанавливаются значение параметров any:

security ike gateway Spokes
  version v2-only
  ike-policy pol1
  local address 203.0.113.10
  local network 203.0.113.10/32 protocol gre 
  remote address any
  remote network any protocol gre 
  mode policy-based
  mobike disable
  dead-peer-detection action clear
  dead-peer-detection interval 10
  dead-peer-detection retransmit timeout 5
  dead-peer-detection retransmit tries 2
exit

Перейдём к настройке IPSec-соединения. Как и в случае с IKE-фазой, опишем алгоритмы аутентификации и шифрования. В нашем примере это SHA-256 и   AES256 соответственно:

security ipsec proposal prop1
  authentication algorithm sha2-256
  encryption algorithm aes256
exit

Выполним настройку политики IKE-соединения, привязав к ней IPSec-proposal:

security ipsec policy pol1
  proposal prop1
exit

Финальные настройки - описание VPN-профилей соединения, отдельно для Hub и для Spoke. В обоих случаях указываем тип IPSec-соединения как транспортный, т.к. DMVPN не может работать в туннельном режиме:

security ipsec vpn Hub
  type transport

Т.к. в данном примере мы используем Front-door VRF схему, нам необходимо привязать данный VPN-профиль к vrf ISP:

   ip vrf forwarding ISP 

Условием для установления IPSec-соединения будет появление трафика по заданным селекторам в настройках IKE-фазы, для этого используем команду ike establish-tunnel route :

   ike establish-tunnel route 

Наконец, привяжем ранее созданные профили для IKE-фазы, где указаны селекторы трафика, который необходимо шифровать, и настройки профиля шифрования IPSec-соединения:

  ike gateway Hub
  ike ipsec-policy pol1
Активируем настройку VPN-профиля:
    enable
exit 
Для Spoke-to-Spoke туннелей настройки будут аналогичные, с учётом привязки профилей для данного типа соединения:
security ipsec vpn spokes
  type transport
  ip vrf forwarding ISP
  ike establish-tunnel route
  ike gateway Spokes
  ike ipsec-policy pol1
  enable
exit
Routing

Для корректного анонсирования connected-сетей из LAN-сегмента используем route-map, в котором опишем необходимый префикс:

route-map LAN_nets
  rule 1
    match ip address 172.16.0.0/24
  exit
exit

Настроим BGP-соединение. Spoke функционирует в автономной системе 65002, поэтому создадим процесс с номером такой AS:

router bgp 65002

Укажем router-id для идентификации маршрутизатора:

   router-id 10.2.0.10 

И настроим соседство с Hub'ом: номер автономной системы 65001, устанавливаеться соединение будет с IP-адреса mGRE-туннеля, AFI - IPv4 unicast. Активируем работу соседа посредством команды enable:

   neighbor 10.0.2.1
    remote-as 65001
    update-source gre 1
    enable
    address-family ipv4 unicast 

В настройках address family необходимо указать ранее созданный route-map в направлении out для обеспечения фильтрации префиксов при их анонсировании соседу. Активируем работу AFI и покинем текущие настройки:

      route-map LAN_nets out
      enable
    exit 

Перейдём в режим настройки параметров передачи информации протоколов для процесса BGP. Здесь нам необходимо указать, что мы переиспользуем маршрутную информацию connected-подсетей, но не всех, а лишь тех, что указаны в ранее созданном route-map

LAN_nets :
  address-family ipv4 unicast 
    redistribute connected route-map LAN_nets
  exit 

Наконец, активируем работу протокола BGP:

  enable
exit 

Настройка ESR Spoke завершена.

Настройка AR Hub:

Базовые сервисы

Как и в случае с ESR Spoke, необходимо настроить базовые функции маршрутизатора - hostname, vpn-instance (VRF), сетевых интерфейсов и маршут к ISP:

#
 sysname ar-Hub
#
ip vpn-instance ISP
 ipv4-family
#
interface GigabitEthernet0/0/0
 ip binding vpn-instance ISP
 ip address 198.51.100.10 255.255.255.0
#
ip route-static vpn-instance ISP 0.0.0.0 0.0.0.0 198.51.100.1
#

Порядок конфигурирования сервисов в операционной системе AR отличен от ESR, поэтому следующим шагом будет настройка IPSec-соединения.

IPSec

Активируем совместимость работы алгоритмов аутентификации IPSec на основе SHA2 с ESR :

#
ipsec authentication sha2 compatible enable
# 

Зададим глобальное время продолжительности IPSec Security Association в секундах как на ESR:

#
ipsec sa global-duration time-based 10800
#

И активируем опцию восстановления SPI для стабильной работы соединения:

#
ipsec invalid-spi-recovery enable
#

Выполним настройку IPSec-соединения: укажем режим работы transport, зададим параметры аутентификации и шифрования из условий:

#
ipsec proposal prop1
 encapsulation-mode transport
 esp authentication-algorithm sha2-256 
 esp encryption-algorithm aes-256 
#

Перейдём к настройке IKE-соединения. Зададим алгоритмы шифрования и аутентификации из условий, укажем 19-ую группу Диффи-Хеллмана и определим метод аутентификации по pre-shared ключам:

#
ike proposal 1
 encryption-algorithm aes-256 
 dh group19 
 authentication-algorithm sha2-256 
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256 
 prf hmac-sha2-256 
# 

Настроим IKE-peer. В нём укажем аналогичные параметры механизма Dead-Peer Detection, pre-shared ключ, а так же привяжем ранее созданный профайл IKE:

#
ike peer dmvpn
 pre-shared-key cipher %^%#|~\f>5J63Hm*}y:A8`mHfydGD`rkF/rv7&N"QUmT%^%#
 ike-proposal 1
 dpd type periodic
 dpd idle-time 40
 dpd retransmit-interval 10
 rsa encryption-padding oaep
 rsa signature-padding pss
 ikev2 authentication sign-hash sha2-256
#

Наконец, перейдём к настройке VPN-профайла. В нём мы осуществим привязку ранее созданных IKE-пира и IPSec-профайла с параметрами шифрования, а так же зададим время длительности Security Association в секундах равное 10800:

#
ipsec profile dmvpn
 ike-peer dmvpn
 proposal prop1
 sa duration time-based 10800
#

Настройка IPSec завершена.

mGRE

Сначала выполним настройку основных параметров GRE-туннеля. Зададим значения MTU и TCP adjust-MSS раные 1400 и 1360 соответственно для корректной работы сервисов:

#
interface Tunnel0/0/1
 mtu 1400
 tcp adjust-mss 1360 

Зададим туннельный IP-адрес и укажем идентификатор GRE-интерфейса (key) равное 1002: 

  ip address 10.0.2.1 255.255.255.0 
  gre key 1001

После ввода в конфигурации данный параметр будет отображаться как шифрованный:

  gre key cipher %^%#GXwI);@{KFc.M/#M*Sr"zP'&7>t:)&N1A9.Bv~5C%^%# 

Так как в данном примере мы используем Front-door VRF-схему, то определим внешний интерфейс, с которого будет строиться этот GRE-туннель:

  source vpn-instance ISP 198.51.100.10 

Настройка DMVPN параметров. Переведём туннель в режим работы multipoint:

  tunnel-protocol gre p2mp 

Опишем IPSec VPN-профайл, с помощью которого будет осуществляться шифрование соединений:

  ipsec profile dmvpn 

В данном примере мы используем третью фазу DMVPN, поэтому для отправки Traffic Indication и последующего создания shortcut-маршрутов активируем функционал перенаправления NHRP-сообщений:

  nhrp redirect 

И укажем путь направления multicast-трафика в туннеле:

  nhrp entry multicast dynamic
#

Настройка mGRE туннеля завершена.

Routing

Выполним настройку BGP. Hub будет функционировать в автономной системе 65001, поэтому создадим процесс маршрутизации BGP с таким номером:

#
bgp 65001

Как и в случае с ESR Spoke, укажем router-id для идентификации маршрутизатора в BGP-процессе:

  router-id 10.2.0.1 

Так как это Hub и на нём будет концентрироватьяс множество Spoke, вместо детального описания каждого из них используем механизм указания диапазона соседств, с которыми будет устанавливаться соединение. В этом режиме маршрутизатор не выступает инициатором установления BGP-соседства, а ожидает от удалённой стороны запроса на подключение. В синтаксисе AR этот функционал обеспечивается с помощью параметров group, которые описываются аргументом <NAME> при дальнейшей настройке соседств. Укажем в group DMVPN_cloud номер автономной системы, интерфейс и диапазон подсети, из которых будем ожидать установления соединения:

  group DMVPN_cloud external
  peer DMVPN_cloud as-number 65002
  peer DMVPN_cloud connect-interface Tunnel0/0/1
  peer DMVPN_cloud listen-net 10.0.2.0 24
#

В настройках address-family IPv4 типа unicast активируем работу ранее созданной группы:

  ipv4-family unicast
  undo synchronization
  peer DMVPN_cloud enable 

Согласно принципам третьей фазы DMVPN, всем Spoke-маршрутизаторам Hub должен анонсировать маршрут по умолчанию. Сделаем это с помощью route-policy:

  peer DMVPN_cloud default-route-advertise route-policy 1
#

И опишем в этой route-policy анонсирование всех префиксов:

#
route-policy 1 permit node 10
#

Настройка AR Hub завершена.

Настройка AR Spoke-2:

Базовые сервисы

Настроим базовые функции маршрутизатора - hostname, vpn-instance (VRF), сетевых интерфейсов к LAN и WAN сгементам, а так же маршут к ISP. WAN-интерфейсом будет GigabitEthernet0/0/0, а LAN-сегмент будет доступен на маршрутизаторе через интерфейс GigabitEthernet0/0/2 с VLAN tag 200:

#
 sysname ar-Spoke-2 
#
ip vpn-instance ISP
 ipv4-family
#
interface GigabitEthernet0/0/0
 ip binding vpn-instance ISP
 ip address 198.18.0.10 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface GigabitEthernet0/0/2.200
 dot1q termination vid 200
 ip address 172.16.254.1 255.255.255.0
#
ip route-static vpn-instance ISP 0.0.0.0 0.0.0.0 198.18.0.1
#
IPSec

Как и в случае с AR Hub, активируем совместимость работы алгоритмов аутентификации IPSec на основе SHA2 с ESR :

#
ipsec authentication sha2 compatible enable
# 

Зададим глобальное время продолжительности IPSec Security Association в секундах как на ESR:

#
ipsec sa global-duration time-based 10800
#

И активируем опцию восстановления SPI для стабильной работы соединения:

#
ipsec invalid-spi-recovery enable
#

Выполним настройку IPSec-соединения: укажем режим работы transport, зададим параметры аутентификации и шифрования из условий:

#
ipsec proposal prop1
 encapsulation-mode transport
 esp authentication-algorithm sha2-256 
 esp encryption-algorithm aes-256 
#

Перейдём к настройке IKE-соединения. Зададим алгоритмы шифрования и аутентификации из условий, укажем 19-ую группу Диффи-Хеллмана и определим метод аутентификации по pre-shared ключам:

#
ike proposal 1
 encryption-algorithm aes-256 
 dh group19 
 authentication-algorithm sha2-256 
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256 
 prf hmac-sha2-256 
# 

Настроим IKE-peer. В нём укажем аналогичные параметры механизма Dead-Peer Detection, pre-shared ключ, а так же привяжем ранее созданный профайл IKE:

#
ike peer dmvpn
 pre-shared-key cipher %^%#|~\f>5J63Hm*}y:A8`mHfydGD`rkF/rv7&N"QUmT%^%#
 ike-proposal 1
 dpd type periodic
 dpd idle-time 40
 dpd retransmit-interval 10
 rsa encryption-padding oaep
 rsa signature-padding pss
 ikev2 authentication sign-hash sha2-256
#

Наконец, перейдём к настройке VPN-профайла. В нём мы осуществим привязку ранее созданных IKE-пира и IPSec-профайла с параметрами шифрования, а так же зададим время длительности Security Association в секундах равное 10800:

#
ipsec profile dmvpn
 ike-peer dmvpn
 proposal prop1
 sa duration time-based 10800
#

Настройка IPSec завершена.

mGRE

Сначала выполним настройку основных параметров GRE-туннеля. Зададим значения MTU и TCP adjust-MSS раные 1400 и 1360 соответственно для корректной работы сервисов:

#
interface Tunnel0/0/1
 mtu 1400
 tcp adjust-mss 1360 

Зададим туннельный IP-адрес и укажем идентификатор GRE-интерфейса (key) равное 1002: 

 ip address 10.0.2.20 255.255.255.0  
 gre key 1001

После ввода в конфигурации данный параметр будет отображаться как шифрованный:

  gre key cipher %^%#GXwI);@{KFc.M/#M*Sr"zP'&7>t:)&N1A9.Bv~5C%^%# 

Так как в данном примере мы используем Front-door VRF-схему, то определим внешний интерфейс, с которого будет строиться этот GRE-туннель:

  source vpn-instance ISP 198.18.0.10 

Настройка DMVPN параметров. Переведём туннель в режим работы multipoint:

  tunnel-protocol gre p2mp 

Опишем IPSec VPN-профайл, с помощью которого будет осуществляться шифрование соединений:

  ipsec profile dmvpn 

В данном примере мы используем третью фазу DMVPN, поэтому для корректной обработки приходящих от Hub сообщений типа Traffic Indication и последующего создания shortcut-маршрутов активируем функционал созданий shortcut-маршрутов:

 nhrp shortcut

Укажем параметры регистрации: no-unique позволит сохранить старую запись на удалённом NHRP-соседе о Spoke, у которого может быть изменён NBMA-адрес; interval устанавливает промежуток времени, через который Spoke будет выполнять регистрацию, а так же периодическую перерегистрацию на удалённом NHRP-соседе:

 nhrp registration no-unique
 nhrp registration interval 180

Для корректной сходимости и своевременного перестроения туннелей установим значение времени жизни записи о регистрации NHRP-клиента на удалённом соседе равное 540 секундам. Это период времени, за который локальная запись об удалённом NHRP-соседе считается актуальной и валидной вплоть до поступления следующего запроса о регистрации: 

 nhrp entry holdtime seconds 540
  

Зададим статическую запись до Hub, указывая сначала туннельный адрес, а затем NBMA:

 nhrp entry 10.0.2.1 198.51.100.10 register  

И укажем путь направления multicast-трафика в туннеле:

  nhrp entry multicast dynamic
#

Настройка mGRE туннеля завершена.

Routing

Выполним настройку BGP. Hub будет функционировать в автономной системе 65001, поэтому создадим процесс маршрутизации BGP с таким номером:

#
bgp 65002

Как и в случае с ESR Spoke, укажем router-id для идентификации маршрутизатора в BGP-процессе:

  router-id 10.2.0.20

Настроим eBGP-соседство с Hub, указав номер автономной системы и интерфейс-источник, с которого будет устанавливаться соединение:

  peer 10.0.2.1 as-number 65001
  peer 10.0.2.1 connect-interface Tunnel0/0/1
#

В настройках address-family IPv4 типа unicast укажем локальную подсеть 172.16.254.0/24 как анонсируемую и активируем работу ранее созданного соседа:

  ipv4-family unicast
  undo synchronization
  network 172.16.254.0 255.255.255.0
  peer 10.0.2.1 enable
#
return

Настройка AR Spoke-2 завершена.

Диагностика:

Сначала удостоверимся,что на Hub установились IPsec-туннели  до обоих Spoke. В отличии от ESR, в синтаксисе AR нет необходимости указавать параметр vrf <VRF_NAME> для указания пространства маршрутизации:

Hub
[ar-Hub]display ike sa
 Conn-ID    Peer                                          VPN              Flag(s)               Phase  RemoteType  RemoteID        
------------------------------------------------------------------------------------------------------------------------------------
 62         198.18.0.10/500                               ISP              RD|A                  v2:2   IP          198.18.0.10     
 61         198.18.0.10/500                               ISP              RD|A                  v2:1   IP          198.18.0.10     
 64         203.0.113.10/500                              ISP              RD|A                  v2:2   IP          203.0.113.10    
 63         203.0.113.10/500                              ISP              RD|A                  v2:1   IP          203.0.113.10    

  Number of IKE SA : 4
------------------------------------------------------------------------------------------------------------------------------------

 Flag Description:
 RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
 HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
 M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING

[ar-Hub]display ipsec sa brief 

IPSec SA information:
   Src address                             Dst address                             SPI
   VPN                                     Protocol                                Algorithm
 --------------------------------------------------------------------------------------------------------------------------
   203.0.113.10                            198.51.100.10                           10955288  
   ISP                                     ESP                                     E:AES-256 A:SHA2_256_128
   198.18.0.10                             198.51.100.10                           14905890  
   ISP                                     ESP                                     E:AES-256 A:SHA2_256_128
   198.51.100.10                           198.18.0.10                             14150042  
   ISP                                     ESP                                     E:AES-256 A:SHA2_256_128
   198.51.100.10                           203.0.113.10                            3462302260
   ISP                                     ESP                                     E:AES-256 A:SHA2_256_128

  Number of IPSec SA : 4
 --------------------------------------------------------------------------------------------------------------------------

Теперь проверим, что оба Spoke зарегистрировались на Hub:

Hub
[ar-Hub]display nhrp peer dynamic 
---------------------------------------------------------------------------------- 
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag         
---------------------------------------------------------------------------------- 
10.0.2.20       32    198.18.0.10     10.0.2.20       registered      up|no-unique 
---------------------------------------------------------------------------------- 
Tunnel interface: Tunnel0/0/1
Created time    : 00:22:42
Expire time     : 00:04:57
---------------------------------------------------------------------------------- 
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag         
---------------------------------------------------------------------------------- 
10.0.2.10       32    203.0.113.10    10.0.2.10       registered      up|unique    
---------------------------------------------------------------------------------- 
Tunnel interface: Tunnel0/0/1
Created time    : 00:16:51
Expire time     : 00:04:59

Number of nhrp peers: 2

Проверим состояние BGP - убедимся, что соседство установилось, а спокам анонсируется маршрут по умолчанию:

Hub
[ar-Hub]display bgp peer 

 Status codes: * - Dynamic

 BGP local router ID : 10.2.0.1
 Local AS number : 65001
 Total number of peers : 2		  Peers in established state : 2
 Total number of dynamic peers : 2

  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv

 *10.0.2.10       4       65002       23       23     0 00:17:08 Established       1
 *10.0.2.20       4       65002       27       29     0 00:22:47 Established       1

 [ar-Hub]display bgp routing-table peer 10.0.2.10 advertised-routes 0.0.0.0 

 A default route is advertised originally 

[ar-Hub]display bgp routing-table peer 10.0.2.20 advertised-routes 0.0.0.0   

 A default route is advertised originally  

На Spoke проверим, что маршруты по умолчанию успешно инсталлировались в FIB:

Spokes
ESR-Spoke-1# show ip route
Codes: C - connected, S - static, R - RIP derived,
       O - OSPF derived, IA - OSPF inter area route,
       E1 - OSPF external type 1 route, E2 - OSPF external type 2 route,
       B - BGP derived, D - DHCP derived, K - kernel route, V - VRRP route,
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area,
       H - NHRP, * - FIB route
B     * 0.0.0.0/0          [170]             via 10.0.2.1 on gre 2             [bgp65002 04:56:57] (AS65001i)
C     * 172.16.0.0/24      [0/0]             dev gi1/0/2.100                   [direct 2025-08-18] 
H     * 10.0.2.1/32        [20/0]            dev gre 2                         [nhrp 04:56:46] 
C     * 10.0.2.0/24        [0/0]             dev gre 2                         [direct 04:56:40]

[ar-Spoke-2]display ip routing-table
Route Flags: R - relay, D - download to fib, T - to vpn-instance
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 14       Routes : 14       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   EBGP    255  2000       RD   10.0.2.1        Tunnel0/0/1
       10.0.2.0/24  Direct  0    0           D   10.0.2.20       Tunnel0/0/1
      10.0.2.20/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/1
     10.0.2.255/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
   172.16.254.0/24  Direct  0    0           D   172.16.254.1    GigabitEthernet0/0/2.200
   172.16.254.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/2.200
 172.16.254.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet0/0/2.200
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

Инициируем построение Spoke-to-Spoke туннеля, заупустив ping из LAN Spoke-1 к LAN Spoke-2 и проверим, что IPsec-туннел установились, а shortcut-маршрут успешно инсталлировался в FIB:

ESR Spoke-1
ESR-Spoke-1# show security ipsec vpn status vrf ISP 
Name                              Local host        Remote host       Initiator spi        Responder spi        State         
-------------------------------   ---------------   ---------------   ------------------   ------------------   -----------   
Hub                               203.0.113.10      198.51.100.10     0x40e24dd9a4ccf7c1   0x6fd9c916079e56e5   Established   
spokes                            203.0.113.10      198.18.0.10       0xf15e7d34987ea54e   0xc30079d96deaf627   Established

ESR-Spoke-1# show ip nhrp peers 
 Flags: E - unique, R - nhs, U - used, L - lower-up
        C - connected, G - group, Q - qos, N - nat
        P - protected, I - Redirect-ignored, X - undefined

Tunnel address        NBMA address       Tunnel      Expire      Created          Type              Flags        
                                                     (h:m:s)     (d,h:m:s)                                       
-------------------   ----------------   ---------   ---------   --------------   ---------------   ----------   
10.0.2.1              198.51.100.10      gre 2       --          00,00:00:41      static            RULC         
10.0.2.20             198.18.0.10        gre 2       00:04:19    00,00:00:40      cached            ULC

ESR-Spoke-1# show ip nhrp shortcut-routes 
Network               Nexthop            Tunnel      Expire      Created          
                                                     (h:m:s)     (d,h:m:s)        
-------------------   ----------------   ---------   ---------   --------------   
172.16.254.0/24       10.0.2.20          gre 2       00:04:16    00,00:00:43

ESR-Spoke-1# show ip route nhrp 
H     * 10.0.2.20/32       [20/0]            dev gre 2                         [nhrp 05:22:09] 
H     * 10.0.2.1/32        [20/0]            dev gre 2                         [nhrp 04:56:46] 
H     * 172.16.254.0/24    [20/0]            via 10.0.2.20 on gre 2            [nhrp 05:22:09] 
AR Spoke-2
[ar-Spoke-2]display ike sa remote 203.0.113.10
 Conn-ID    Peer                                          VPN              Flag(s)               Phase  RemoteType  RemoteID        
------------------------------------------------------------------------------------------------------------------------------------
 4381       203.0.113.10/500                              ISP              RD|ST|M               v2:2   IP          203.0.113.10    
 4380       203.0.113.10/500                              ISP              RD|ST|M               v2:1   IP          203.0.113.10    

  Number of IKE SA : 2
------------------------------------------------------------------------------------------------------------------------------------

 Flag Description:
 RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
 HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
 M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING

[ar-Spoke-2]display ipsec sa remote 203.0.113.10

ipsec sa information:

===============================
Interface: Tunnel0/0/1
===============================

  -----------------------------
  IPSec profile name: "dmvpn"
  Mode              : PROF-ISAKMP
  -----------------------------
    Connection ID     : 4381
    Encapsulation mode: Transport
    Holding time      : 0d 0h 27m 34s
    Tunnel local      : 198.18.0.10/500
    Tunnel remote     : 203.0.113.10/500
    Flow source       : 198.18.0.10/255.255.255.255 47/0-65535
    Flow destination  : 203.0.113.10/255.255.255.255 47/0-65535
    Flow vpn          : ISP

    [Outbound ESP SAs] 
      SPI: 3325670054 (0xc639b2a6)
      Proposal: ESP-ENCRYPT-AES-256 ESP-AUTH-SHA2-256-128
      SA remaining soft duration (kilobytes/sec): 1343519/7691
      SA remaining hard duration (kilobytes/sec): 1841183/11147
      Outpacket count       : 1663
      Outpacket encap count : 1663
      Outpacket drop count  : 0
      Max sent sequence-number: 1663
      UDP encapsulation used for NAT traversal: N

    [Inbound ESP SAs] 
      SPI: 2212992 (0x21c480)
      Proposal: ESP-ENCRYPT-AES-256 ESP-AUTH-SHA2-256-128
      SA remaining soft duration (kilobytes/sec): 1361960/7819
      SA remaining hard duration (kilobytes/sec): 1841192/11147
      Inpacket count        : 1643
      Inpacket decap count  : 1643
      Inpacket drop count   : 0
      Max received sequence-number: 1643
      UDP encapsulation used for NAT traversal: N
      Anti-replay : Enable
      Anti-replay window size: 1024

[ar-Spoke-2]display nhrp peer dynamic 
---------------------------------------------------------------------------------- 
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag         
---------------------------------------------------------------------------------- 
10.0.2.10       32    203.0.113.10    10.0.2.10       remote          up           
---------------------------------------------------------------------------------- 
Tunnel interface: Tunnel0/0/1
Created time    : 00:13:01
Expire time     : 00:02:03
---------------------------------------------------------------------------------- 
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag         
---------------------------------------------------------------------------------- 
172.16.254.200  24    198.18.0.10     10.0.2.20       local           up           
---------------------------------------------------------------------------------- 
Tunnel interface: Tunnel0/0/1
Created time    : 00:13:01
Expire time     : 00:02:03
---------------------------------------------------------------------------------- 
Protocol-addr   Mask  NBMA-addr       NextHop-addr    Type            Flag         
---------------------------------------------------------------------------------- 
172.16.0.200    24    203.0.113.10    10.0.2.10       remote-network  up           
---------------------------------------------------------------------------------- 
Tunnel interface: Tunnel0/0/1
Created time    : 00:02:51
Expire time     : 00:02:09

Number of nhrp peers: 3

Приложение А. Конфигурация устройств.

ESR Spoke-1
hostname ESR-Spoke-1
 
ip vrf ISP
exit
 
 
route-map LAN_nets
  rule 1
    match ip address 172.16.0.0/24
  exit
exit
 
router bgp log-neighbor-changes
 
router bgp 65002
  router-id 10.2.0.10
  neighbor 10.0.2.1
    remote-as 65001
    update-source gre 1
    address-family ipv4 unicast
      route-map LAN_nets out
      enable
    exit
    enable
  exit
  address-family ipv4 unicast
    redistribute connected route-map LAN_nets
  exit
  enable
exit
 
interface gigabitethernet 1/0/1
  ip vrf forwarding ISP
  ip firewall disable
  ip address 203.0.113.10/24
exit
interface gigabitethernet 1/0/2.100
  ip firewall disable
  ip address 172.16.0.1/24
exit
 
tunnel gre 1
  key 1001
  ttl 255
  mtu 1400
  multipoint
  ip firewall disable
  tunnel-source vrf ISP
  local address 203.0.113.10
  ip address 10.0.2.10/24
  ip tcp adjust-mss 1360
  ip nhrp holding-time 300
  ip nhrp shortcut
  ip nhrp map 10.0.2.1 192.0.2.10
  ip nhrp nhs 10.0.2.1
  ip nhrp ipsec Hub_Cloud_1 static
  ip nhrp ipsec spokes dynamic
  ip nhrp multicast nhs
  ip nhrp enable
  enable
exit
 
security ike proposal prop1
  authentication algorithm sha2-256
  encryption algorithm aes256
  dh-group 19
exit
 
security ike policy pol1
  pre-shared-key ascii-text encrypted B9B81768A85D18A965
  proposal prop1
exit
 
security ike gateway Hub
  version v2-only
  ike-policy pol1
  local address 203.0.113.10
  local network 203.0.113.10/32 protocol gre
  remote address 192.0.2.10
  remote network 192.0.2.10/32 protocol gre
  mode policy-based
  mobike disable
  dead-peer-detection action clear
  dead-peer-detection interval 10
  dead-peer-detection retransmit timeout 5
  dead-peer-detection retransmit tries 2
exit
 
security ike gateway Spokes
  version v2-only
  ike-policy pol1
  local address 203.0.113.10
  local network 203.0.113.10/32 protocol gre
  remote address any
  remote network any protocol gre
  mode policy-based
  mobike disable
  dead-peer-detection action clear
  dead-peer-detection interval 10
  dead-peer-detection retransmit timeout 5
  dead-peer-detection retransmit tries 2
exit
 
security ipsec proposal prop1
  authentication algorithm sha2-256
  encryption algorithm aes256
exit
 
security ipsec policy pol1
  proposal prop1
exit
 
security ipsec vpn Hub
  type transport
  ip vrf forwarding ISP
  ike establish-tunnel route
  ike gateway Hub
  ike ipsec-policy pol1
  enable
exit
 
security ipsec vpn spokes
  type transport
  ip vrf forwarding ISP
  ike establish-tunnel route
  ike gateway Spokes
  ike ipsec-policy pol1
  enable
exit
 
ip route vrf ISP 0.0.0.0/0 203.0.113.1
AR Spoke-2
#
 sysname ar-Spoke-2
#
 ipsec authentication sha2 compatible enable
#
ipsec sa global-duration time-based 10800
ipsec invalid-spi-recovery enable
#
ip vpn-instance ISP
 ipv4-family
#
ipsec proposal prop1
 encapsulation-mode transport
 esp authentication-algorithm sha2-256
 esp encryption-algorithm aes-256
#
ike proposal 1
 encryption-algorithm aes-256
 dh group19
 authentication-algorithm sha2-256
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256
 prf hmac-sha2-256
#
ike peer dmvpn
 pre-shared-key cipher %^%#|~\f>5J63Hm*}y:A8`mHfydGD`rkF/rv7&N"QUmT%^%#
 ike-proposal 1
 dpd type periodic
 dpd idle-time 40
 dpd retransmit-interval 10
 rsa encryption-padding oaep
 rsa signature-padding pss
 ikev2 authentication sign-hash sha2-256
#
ipsec profile dmvpn
 ike-peer dmvpn
 proposal prop1
 sa duration time-based 10800
#
interface GigabitEthernet0/0/0
 ip binding vpn-instance ISP
 ip address 198.18.0.10 255.255.255.0
#
interface GigabitEthernet0/0/2
#
interface GigabitEthernet0/0/2.200
 dot1q termination vid 200
 ip address 172.16.254.1 255.255.255.0
#
interface Tunnel0/0/1
 mtu 1400
 tcp adjust-mss 1360
 ip address 10.0.2.20 255.255.255.0
 tunnel-protocol gre p2mp
 source vpn-instance ISP 198.18.0.10
 gre key cipher %^%#Btj9K_(dn~[PJ,;mUv[={[E8Cx(fF5C!Ik.S["uC%^%#
 ipsec profile dmvpn
 nhrp shortcut
 nhrp registration no-unique
 nhrp registration interval 100
 nhrp entry holdtime seconds 300
 nhrp entry 10.0.2.1 192.0.2.10 register
#
bgp 65002
 router-id 10.2.0.20
 peer 10.0.2.1 as-number 65001
 peer 10.0.2.1 connect-interface Tunnel0/0/1
 #
 ipv4-family unicast
  undo synchronization
  network 172.16.254.0 255.255.255.0
  peer 10.0.2.1 enable
#
ip route-static vpn-instance ISP 0.0.0.0 0.0.0.0 198.18.0.1
#
return
AR Hub
#
 sysname ar-Hub
#
 ipsec authentication sha2 compatible enable
#
ipsec sa global-duration time-based 10800
ipsec invalid-spi-recovery enable
#
ip vpn-instance ISP
 ipv4-family
#
ipsec proposal prop1
 encapsulation-mode transport
 esp authentication-algorithm sha2-256
 esp encryption-algorithm aes-256
#
ike proposal 1
 encryption-algorithm aes-256
 dh group19
 authentication-algorithm sha2-256
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256
 prf hmac-sha2-256
#
ike peer dmvpn
 pre-shared-key cipher %^%#|~\f>5J63Hm*}y:A8`mHfydGD`rkF/rv7&N"QUmT%^%#
 ike-proposal 1
 dpd type periodic
 dpd idle-time 40
 dpd retransmit-interval 10
 rsa encryption-padding oaep
 rsa signature-padding pss
 ikev2 authentication sign-hash sha2-256
#
ipsec profile dmvpn
 ike-peer dmvpn
 proposal prop1
 sa duration time-based 10800
#
interface GigabitEthernet0/0/0
 ip binding vpn-instance ISP
 ip address 198.51.100.10 255.255.255.0
#
interface Tunnel0/0/1
 mtu 1400
 tcp adjust-mss 1360
 ip address 10.0.2.1 255.255.255.0
 tunnel-protocol gre p2mp
 source vpn-instance ISP 198.51.100.10
 gre key cipher %^%#GXwI);@{KFc.M/#M*Sr"zP'&7>t:)&N1A9.Bv~5C%^%#
 ipsec profile dmvpn
 nhrp redirect
 nhrp entry multicast dynamic
#
bgp 65001
 router-id 10.2.0.1
 group DMVPN_cloud external
 peer DMVPN_cloud as-number 65002
 peer DMVPN_cloud connect-interface Tunnel0/0/1
 peer DMVPN_cloud listen-net 10.0.2.0 24
 #
 ipv4-family unicast
  undo synchronization
  peer DMVPN_cloud enable
  peer DMVPN_cloud default-route-advertise route-policy 1
#
route-policy 1 permit node 10
#
ip route-static vpn-instance ISP 0.0.0.0 0.0.0.0 198.51.100.1
#
return


  • Нет меток