DMVPN#
Описание#
DMVPN - технология динамического построения VPN, первоначально разработанная компанией Cisco. Хотя ее реализация и была в некоторой степени закрытой, лежащие в ее основе технологии в действительности основаны на вполне конкретных стандартах. В основе данной технологии лежит использование следующих протоколов:
Протокол NHRP обеспечивает механизм динамического обнаружения конечных точек туннеля (поиск и их регистрация), протокол mGRE обеспечивает непосредственно инкапсуляцию данных, передаваемых по туннелю, а стек протоколов IPSec обеспечивает обмен ключами и криптографическую защиту передаваемых данных.
Другими словами, DMVPN обеспечивает возможность создания динамически связной VPN сети без предварительной (статической) настройки всех возможных конечных точек туннеля.
Примечание
Технология DMVPN автоматизирует только процесс обнаружения и настройки конечных точек туннеля. Полноценное решение также включает в себя использование протокола маршрутизации. Особенно хорошо для использования в данной технологии подходит протокол динамической маршрутизации BGP.

Настройка#
Пример настройки#
Данный пример подразумевает использование устройства под управлением ПО Факел в качестве центрального узла (Hub), устройства под управлением ПО Факел в качестве одного из оконечных узлов (Spoke 05), а также устройств под управлением операционной системы Cisco IOS в качестве остальных оконечных узлов (Spoke 01 - 04).

Каждый узел (Hub, Spoke 01 - 05) использует IP адрес из подсети 172.16.253.128/29
.
Используемый в конфигурации ниже IP адрес 192.0.2.1
, являющийся
глобальным адресом, по которому доступен центральный узел (Hub) для
каждого из оконечных узлов (Spoke).
Центральный узел (Hub)#
set interfaces ethernet eth0 address 192.0.2.1/24
set interfaces tunnel tun100 address '172.16.253.134/29'
set interfaces tunnel tun100 encapsulation 'gre'
set interfaces tunnel tun100 source-address '192.0.2.1'
set interfaces tunnel tun100 multicast 'enable'
set interfaces tunnel tun100 parameters ip key '1'
set protocols nhrp tunnel tun100 cisco-authentication 'secret'
set protocols nhrp tunnel tun100 holding-time '300'
set protocols nhrp tunnel tun100 multicast 'dynamic'
set protocols nhrp tunnel tun100 redirect
set protocols nhrp tunnel tun100 shortcut
set vpn ipsec esp-group ESP-HUB compression 'disable'
set vpn ipsec esp-group ESP-HUB lifetime '1800'
set vpn ipsec esp-group ESP-HUB mode 'transport'
set vpn ipsec esp-group ESP-HUB pfs 'dh-group2'
set vpn ipsec esp-group ESP-HUB proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-HUB proposal 1 hash 'sha1'
set vpn ipsec esp-group ESP-HUB proposal 2 encryption '3des'
set vpn ipsec esp-group ESP-HUB proposal 2 hash 'md5'
set vpn ipsec ike-group IKE-HUB ikev2-reauth 'no'
set vpn ipsec ike-group IKE-HUB key-exchange 'ikev1'
set vpn ipsec ike-group IKE-HUB lifetime '3600'
set vpn ipsec ike-group IKE-HUB proposal 1 dh-group '2'
set vpn ipsec ike-group IKE-HUB proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-HUB proposal 1 hash 'sha1'
set vpn ipsec ike-group IKE-HUB proposal 2 dh-group '2'
set vpn ipsec ike-group IKE-HUB proposal 2 encryption 'aes128'
set vpn ipsec ike-group IKE-HUB proposal 2 hash 'sha1'
set vpn ipsec ipsec-interfaces interface 'eth0'
set vpn ipsec profile NHRPVPN authentication mode 'pre-shared-secret'
set vpn ipsec profile NHRPVPN authentication pre-shared-secret 'secret'
set vpn ipsec profile NHRPVPN bind tunnel 'tun100'
set vpn ipsec profile NHRPVPN esp-group 'ESP-HUB'
set vpn ipsec profile NHRPVPN ike-group 'IKE-HUB'
Оконечные узлы (Spoke)#
Конфигурации отдельных оконечных узлов будут отличаться только локальным IP адресом на интерфейсе tun10
.
Узлы Spoke 01 - 04:
crypto keyring DMVPN
pre-shared-key address 192.0.2.1 key secret
!
crypto isakmp policy 10
encr aes 256
authentication pre-share
group 2
crypto isakmp invalid-spi-recovery
crypto isakmp keepalive 30 30 periodic
crypto isakmp profile DMVPN
keyring DMVPN
match identity address 192.0.2.1 255.255.255.255
!
crypto ipsec transform-set DMVPN-AES256 esp-aes 256 esp-sha-hmac
mode transport
!
crypto ipsec profile DMVPN
set security-association idle-time 720
set transform-set DMVPN-AES256
set isakmp-profile DMVPN
!
interface Tunnel10
! individual spoke tunnel IP must change
ip address 172.16.253.129 255.255.255.248
no ip redirects
ip nhrp authentication secret
ip nhrp map 172.16.253.134 192.0.2.1
ip nhrp map multicast 192.0.2.1
ip nhrp network-id 1
ip nhrp holdtime 600
ip nhrp nhs 172.16.253.134
ip nhrp registration timeout 75
tunnel source FastEthernet0/0
tunnel mode gre multipoint
tunnel protection ipsec profile DMVPN
tunnel key 1
!
interface FastEthernet0/0
ip address dhcp
duplex half
Узел Spoke 05:
Устройство под управлением ПО Факел также может использовать технологию DMVPN в режиме оконечного узла (Spoke).
set interfaces ethernet eth0 address 'dhcp'
set interfaces tunnel tun100 address '172.16.253.133/29'
set interfaces tunnel tun100 source-address 0.0.0.0
set interfaces tunnel tun100 encapsulation 'gre'
set interfaces tunnel tun100 multicast 'enable'
set interfaces tunnel tun100 parameters ip key '1'
set protocols nhrp tunnel tun100 cisco-authentication 'secret'
set protocols nhrp tunnel tun100 holding-time '300'
set protocols nhrp tunnel tun100 map 172.16.253.134/29 nbma-address '192.0.2.1'
set protocols nhrp tunnel tun100 map 172.16.253.134/29 register
set protocols nhrp tunnel tun100 multicast 'nhs'
set protocols nhrp tunnel tun100 redirect
set protocols nhrp tunnel tun100 shortcut
set vpn ipsec esp-group ESP-HUB compression 'disable'
set vpn ipsec esp-group ESP-HUB lifetime '1800'
set vpn ipsec esp-group ESP-HUB mode 'transport'
set vpn ipsec esp-group ESP-HUB pfs 'dh-group2'
set vpn ipsec esp-group ESP-HUB proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-HUB proposal 1 hash 'sha1'
set vpn ipsec esp-group ESP-HUB proposal 2 encryption '3des'
set vpn ipsec esp-group ESP-HUB proposal 2 hash 'md5'
set vpn ipsec ike-group IKE-HUB close-action 'none'
set vpn ipsec ike-group IKE-HUB ikev2-reauth 'no'
set vpn ipsec ike-group IKE-HUB key-exchange 'ikev1'
set vpn ipsec ike-group IKE-HUB lifetime '3600'
set vpn ipsec ike-group IKE-HUB proposal 1 dh-group '2'
set vpn ipsec ike-group IKE-HUB proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-HUB proposal 1 hash 'sha1'
set vpn ipsec ike-group IKE-HUB proposal 2 dh-group '2'
set vpn ipsec ike-group IKE-HUB proposal 2 encryption 'aes128'
set vpn ipsec ike-group IKE-HUB proposal 2 hash 'sha1'
set vpn ipsec ipsec-interfaces interface 'eth0'
set vpn ipsec profile NHRPVPN authentication mode 'pre-shared-secret'
set vpn ipsec profile NHRPVPN authentication pre-shared-secret 'secret'
set vpn ipsec profile NHRPVPN bind tunnel 'tun100'
set vpn ipsec profile NHRPVPN esp-group 'ESP-HUB'
set vpn ipsec profile NHRPVPN ike-group 'IKE-HUB'
Список команд#
Основные настройки#
Обратитесь к разделу документации Интерфейс туннеля для детального ознакомления со связанными настройками туннелей.
Обратитесь к разделу документации Стек протоколов IPsec для детального ознакомления со связанными настройками стека протоколов IPSec.
- • set protocols nhrp tunnel <tunnel> cisco-authentication <secret>#
Активирует аутентификацию для коммуникаций по протоколу NHRP, аналогичную реализации DMVPN от компании Cisco. При этом в исходящие пакеты NHRP вставляется секретный ключ в виде открытого текста. Входящие пакеты NHRP на соответствующем интерфейсе отбрасываются, если в них нет данного ключа. Максимальная длина секретного ключа - 8 символов.
- • set protocols nhrp tunnel <tunnel> dynamic-map <address> nbma-domain-name <fqdn>#
Определяет, что NBMA адреса серверов следующего узла определены в параметре
nbma-domain-name
. Для каждой записи механизм реализации протокола NHRP создает динамическую запись NHS.Каждая динамическая запись NHS получает информацию о соседнем участнике VPN сети с настроенным сетевым адресом и обнаруженным адресом NBMA.
Первый запрос Registration Request посылается на широковещательный адрес, а реальный адрес сервера динамически определяется из первого ответа Registration Reply.
- • set protocols nhrp tunnel <tunnel> holding-time <timeout>#
Определяет время удержания запросов Registration Request и ответов Resolution Reply, отправляемых с данного интерфейса. Время удержания указывается в секундах и по умолчанию равно двум часам.
- • set protocols nhrp tunnel <tunnel> map cisco#
Данную команда используется, если соседний участник VPN сети является устройством под управлением операционной системы Cisco IOS. При использовании данной команды будет статически зафиксировано значение параметра Registration Request ID, чтобы в случае изменения адреса NBMA соответствующий запрос Purge Request был отправлен. Данная команда используется, как правило, для обхода ограничения устройства под управлением операционной системы Cisco IOS, которое требует соответствия между параметром Purge Request ID и оригинальным параметром Registration Request ID.
- • set protocols nhrp tunnel <tunnel> map nbma-address <address>#
Задает для соседнего участника VPN сети статическое соответствие адреса, используемого протоколом, адресу NBMA.
Если маска для префикса IP задана, то реализации протокола NHRP будет использовать данного участника VPN сети в качестве следующего узла при отправке запросов Resolution Requests, соответствующих указанной подсети.
Заданный адрес является IP адресом или именем FQDN центрального узла (Hub).
- • set protocols nhrp tunnel <tunnel> map register#
Определяет, путем использования необязательного параметра
register
, что запрос Registration Request должен быть отправлен данному участнику VPN сети при запуске механизма. Параметрregister
, однако, является обязательным при настройке оконечного узла (Spoke).
- • set protocols nhrp tunnel <tunnel> multicast <dynamic | nhs>#
Определяет, каким образом реализация протокола NHRP будет осуществлять «мягкое» переключение трафика группового вещания. На данный момент реализация протокола NHRP предусматривает перехват трафика группового вещания при помощи пакетного сокета и его отправки обратно соответствующему получателю, что требует значительных затрат ресурсов процессора.
Использование записей NHS приведет к тому, что весь трафик группового вещания будет перенаправлен каждому статически заданному следующему узлу.
Лучшие практики предписывают пересылать трафик группового вещания всем участникам VPN сети, с которыми установлено прямое соединение. Альтернативно можно использовать данную команду несколько раз для каждого адреса, используемого протоколом, на который должен быть отправлен трафик группового вещания.
Предупреждение
Будьте внимательны при настройке обработки трафика группового вещания при использовании множественных записей NHS.
- • set protocols nhrp tunnel <tunnel> non-caching#
Отключает кэширование информации об участниках VPN сети, получаемой из перенаправляемых пакетов NHRP Resolution Reply. Использование данной команды может потребление памяти на больших NBMA подсетях.
- • set protocols nhrp tunnel <tunnel> redirect#
Включает отправку пакетов NHRP Traffic Indication по аналогии с реализацией от компании Cisco. Если эта функция включена и реализация протокола NHRP обнаруживает перенаправленный пакет, то механизм отправит сообщение оригинальному отправителю сообщение с указанием на необходимость создания прямого соединения с получателем. Другими словами данная функция является эквивалентом сообщения ICMP Redirect.
- • set protocols nhrp tunnel <tunnel> shortcut#
Создает «короткий» (shortcut) маршрут. Полученный пакет NHRP Traffic Indication инициирует процесс разрешения и установления «короткого» маршрута.
- • set protocols nhrp tunnel <tunnel> shortcut-destination#
Предписывает реализации протокола NHRP авторизованно отвечать на пакеты NHRP Resolution Requests, направленные на адреса данного интерфейса вместо перенаправления пакетов. Это позволяет создавать «короткие» маршруты к подсетям, расположенным за этим интерфейсом. Данная команда должна быть использована для каждого интерфейса в отдельности.
- • set protocols nhrp tunnel <tunnel> shortcut-target <address>#
Определяет префикс сети за пределами NBMA, для которого GRE интерфейс будет выступать в качестве шлюза. Такой подход является альтернативным определению локальных интерфейсов с флагом
shortcut-destination
.
- • set protocols nhrp tunnel <tunnel> shortcut-target <address> holding-time <timeout>#
Определяет время удержания запросов Registration Request и ответов Resolution Reply, отправляемых с данного интерфейса или целевого узла, доступного через «короткий» маршрут. Время удержания указывается в секундах и по умолчанию равно двум часам.