Cisco. DMVPN + OSPF + IPSec: различия между версиями
Cless (обсуждение | вклад) (Новая страница: «Категория:Cisco __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__») |
Cless (обсуждение | вклад) |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 1: | Строка 1: | ||
[[Категория:Cisco]] | [[Категория:Cisco]] | ||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | ||
== Входные данные == | |||
Предположим, что имеется Центральный офис, Филиал А, Филиал Б. | |||
ХАБ DMVPN будем поднимать в ЦО. | |||
=== ЦО === | |||
Внутренняя сеть: 192.168.250.0/24 | |||
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.250.8 | |||
Внешний интерфейс: 172.16.250.1/24 - FastEthernet 6/0 | |||
Шлюз провайдера: 172.16.250.8 | |||
IP-адрес интерфейса VPN-туннеля: 10.10.254.1/24 | |||
=== Филиал А === | |||
Внутренняя сеть: 192.168.17.0/24 | |||
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.17.8 | |||
Внешний интерфейс: 172.16.17.1/24 - FastEthernet 6/0 | |||
Шлюз провайдера: 172.16.17.8 | |||
IP-адрес интерфейса VPN-туннеля: 10.10.254.17/24 | |||
=== Филиал Б === | |||
Внутренняя сеть: 192.168.19.0/24 | |||
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.19.8 | |||
Внешний интерфейс: 172.16.19.1/24 - FastEthernet 6/0 | |||
Шлюз провайдера: 172.16.19.8 | |||
IP-адрес интерфейса VPN-туннеля: 10.10.254.19/24 | |||
== Настройка тоннелей == | |||
=== Настройка ЦО (HUB) === | |||
<code>crypto isakmp keepalive 10 10</code> | |||
<code>interface Tunnel 0</code> | |||
Внутренний IP-адрес VPN-сервера из нужного диапазона нашей будущей VPN | |||
<code>ip address 10.10.254.1 255.255.255.0</code> | |||
Динамическое изучение данных NHRP от клиентов. Поскольку клиентов у нас множество и они могут быть с динамическими адресами, на хабе нельзя задать явное соответствие внутренних и внешних адресов. | |||
ip nhrp map multicast dynamic | |||
Определяем Network ID – просто идентификатор, который необязательно должен быть одинаковым на всех узлах DMVPN | |||
<code>ip nhrp network-id 1</code> | |||
Привязка к физическому внешнему интерфейсу | |||
<code>tunnel source FastEthernet 6/0</code> | |||
Туннель на центральном узле будет терминировать все туннели от удалённых точек. | |||
То есть он будет точка-многоточка (Point-to-MultiPoint) | |||
<code>tunnel mode gre multipoint</code> | |||
По умолчанию включен split horizon. Необходимо его отключить на хабе, чтобы роутеры (spoke) могли общаться напрямую между собой и видеть подсети за соседними маршрутизаторами | |||
Если маршрут достижим через определенный интерфейс, то в обновление, которое отправляется через этот интерфейс не включается этот маршрут | |||
<code>no ip split-horizon</code> | |||
Без этих настроек после перезагрузки хаба тоннели в филиалах поднимутся, но будут недоступны для пингов | |||
<code>ip nhrp registration timeout 30</code> | |||
<code>ip nhrp holdtime 300</code> | |||
=== Настройка Филиала А (SPOKE A) === | |||
<code>crypto isakmp keepalive 10 10</code> | |||
<code>interface Tunnel 0</code> | |||
Внутренний IP-адрес VPN-клиента из нужного диапазона нашей будущей VPN | |||
<code>ip address 10.10.254.17 255.255.255.0</code> | |||
Статическое соотношение внутреннего и внешнего адресов центрального хаба (ЦО) | |||
<code>ip nhrp map 10.10.254.1 172.16.250.1</code> | |||
Мультикастовый трафик должен получать хаб по внешнему IP-адресу ЦО | |||
<code>ip nhrp map multicast 172.16.250.1</code> | |||
Network ID. Не обязательно должен совпадать с таким же на хабе | |||
<code>ip nhrp network-id 1</code> | |||
Статически настроенный внутренний VPN адрес NHRP сервера – хаба | |||
Именно поэтому в центре нам нужен статический публичный адрес | |||
Клиенты отправляют запрос на регистрацию на хаб 10.10.254.1, этот запрос содержит настроенный локальный адрес туннельного интерфейса, а также свой публичный адрес | |||
<code>ip nhrp nhs 10.10.254.1</code> | |||
Если адрес в филиалах выдаётся динамически, эта команда обязательна | |||
<code>ip nhrp registration no-unique</code> | |||
Привязка к физическому внешнему интерфейсу | |||
<code>tunnel source FastEthernet 6/0</code> | |||
Указываем, что тип туннеля mGRE – это позволит создавать динамически туннели не только до хаба, но и до других филиалов | |||
<code>tunnel mode gre multipoint</code> | |||
Без этих настроек после перезагрузки хаба тоннели в филиалах поднимутся, но будут недоступны для пингов | |||
<code>ip nhrp registration timeout 30</code> | |||
<code>ip nhrp holdtime 300</code> | |||
=== Настройка Филиала Б (SPOKE B) === | |||
<code>crypto isakmp keepalive 10 10</code> | |||
<code>interface Tunnel 0</code> | |||
Внутренний IP-адрес VPN-клиента из нужного диапазона нашей будущей VPN | |||
<code>ip address 10.10.254.19 255.255.255.0</code> | |||
Статическое соотношение внутреннего и внешнего адресов центрального хаба (ЦО) | |||
<code>ip nhrp map 10.10.254.1 172.16.250.1</code> | |||
Мультикастовый трафик должен получать хаб по внешнему IP-адресу | |||
<code>ip nhrp map multicast 172.16.250.1</code> | |||
Network ID. Не обязательно должен совпадать с таким же на хабе | |||
<code>ip nhrp network-id 1</code> | |||
Статически настроенный внутренний VPN адрес NHRP сервера – хаба | |||
Именно поэтому в центре нам нужен статический публичный адрес | |||
Клиенты отправляют запрос на регистрацию на хаб 10.10.254.1, этот запрос содержит настроенный локальный адрес туннельного интерфейса, а также свой публичный адрес | |||
<code>ip nhrp nhs 10.10.254.1</code> | |||
Если адрес в филиалах выдаётся динамически, эта команда обязательна | |||
<code>ip nhrp registration no-unique</code> | |||
Привязка к физическому внешнему интерфейсу | |||
<code>tunnel source FastEthernet 6/0</code> | |||
Указываем, что тип туннеля mGRE – это позволит создавать динамически туннели не только до хаба, но и до других филиалов | |||
<code>tunnel mode gre multipoint</code> | |||
Без этих настроек после перезагрузки хаба тоннели в филиалах поднимутся, но будут недоступны для пингов | |||
<code>ip nhrp registration timeout 30</code> | |||
<code>ip nhrp holdtime 300</code> | |||
=== Проверка === | |||
<code>tmb# ping 10.10.254.1</code> | |||
Type escape sequence to abort. | |||
Sending 5, 100-byte ICMP Echos to 172.16.254.1, timeout is 2 seconds: | |||
!!! | |||
Success rate is 100 percent (5/5), round-trip min/avg/max = 176/213/284 ms | |||
<code>tmb# ping 10.10.254.19</code> | |||
Type escape sequence to abort. | |||
Sending 5, 100-byte ICMP Echos to 172.16.254.19, timeout is 2 seconds: | |||
!!! | |||
Success rate is 100 percent (5/5), round-trip min/avg/max = 176/213/284 ms | |||
<code>sh int tun 0</code> | |||
<code>sh ip nhrp brief</code> | |||
Тоннели подняты! | |||
Идем дальше | |||
== Динамическая маршрутизация OSPF == | |||
=== Настройка ЦО === | |||
<code>interface loopback 0</code> | |||
<code>ip address 10.0.0.250 255.255.255.255</code> | |||
<code>exit</code> | |||
<code>interface Tunnel 0</code> | |||
Поскольку мы имеем широковещательную L2 сеть на туннельных интерфейсах, указываем явно тип сети Broadcast на туннельных интерфейсах на всех узлах | |||
<code>ip ospf network broadcast</code> | |||
Кроме того в такой сети должен выбираться DR. Логично, чтобы им стал хаб. Хабу ставим ip ospf priority 10. Всем остальным Spoke-маршрутизаторам запрещаем участие в выборах DR - ставим ip ospf priority 0: | |||
<code>ip ospf priority 10</code> | |||
<code>exit</code> | |||
<code>(config)# router ospf 1</code> | |||
1 это номер процесса, непринципиален | |||
Номер процесса OSFP на разных маршрутизаторах не обязательно должен быть одинаковым, но лучше, если это будет так | |||
<code>(config)# router-id 10.0.0.250</code> | |||
<code>(config)# log-adjacency-changes</code> | |||
Логирование изменений | |||
Анонсируем сеть VPN | |||
<code>network 10.10.254.0 0.0.0.255 area 0</code> | |||
Анонсируем сумму локальных сетей цо и филиалов за маршрутизаторами | |||
<code>network 192.168.0.0 0.0.255.255 area 0</code> | |||
=== Настройка Филиала А (Остальные филиалы настраиваются аналогично) === | |||
<code>interface loopback 0</code> | |||
<code>ip address 10.0.0.17 255.255.255.255</code> | |||
<code>exit</code> | |||
<code>interface Tunnel 0</code> | |||
Поскольку мы имеем широковещательную L2 сеть на туннельных интерфейсах, указываем явно тип сети Broadcast на туннельных интерфейсах на всех узлах | |||
<code>ip ospf network broadcast</code> | |||
Кроме того в такой сети должен выбираться DR. Логично, чтобы им стал хаб. Всем остальным Spoke-маршрутизаторам запрещаем участие в выборах DR - ставим ip ospf priority 0: | |||
<code>ip ospf priority 0</code> | |||
<code>exit</code> | |||
<code>(config)# router ospf 1</code> | |||
1 это номер процесса, непринципиален | |||
Номер процесса OSFP на разных маршрутизаторах не обязательно должен быть одинаковым, но лучше, если это будет так | |||
<code>(config)# router-id 10.0.0.17</code> | |||
<code>(config)# log-adjacency-changes</code> | |||
Логирование изменений | |||
Анонсируем сеть VPN | |||
<code>network 10.10.254.0 0.0.0.255 area 0</code> | |||
Анонсируем сумму локальных сетей цо и филиалов за маршрутизаторами | |||
<code>network 192.168.0.0 0.0.255.255 area 0</code> | |||
=== Проверка === | |||
Должны увидеть маршруты OSPF до 192.168.250.0/24 и 192.168.19.0/24 | |||
<code>tmb# sh ip route</code> | |||
<code>tmb# ping 192.168.19.36</code> | |||
<code>tmb# ping 192.168.250.36</code> | |||
Тут важно понимать, что несмотря на то, что общение между филиалами осуществляется в обход центрального узла, хаб однако несёт тут жизненно важную вспомогательную функцию и без него ничего работать не будет: он предоставляет клиентам таблицу NHRP, а также анонсирует все маршруты – филиалы распространяют маршрутную информацию не непосредственно друг другу, а через хаб. | |||
На данный момент решены следующие проблемы: | |||
1) Связность. Филиалы подключены и доступны. | |||
2) Маршрутизация. Через mGRE туннели успешно запущены IGP. | |||
3) Масштабируемость. При добавлении нового spoke-маршрутизатора настраивается только он сам и нет необходимости лезть в конфигурацию уже существующих узлов. | |||
4) Разгрузили хаб – через него передаётся только служебный трафик. | |||
Осталось уладить вопрос с безопасностью. | |||
== Шифрование IPSec == | |||
=== Настройка (на всех узлах одинаковая) === | |||
Если для Site-to-Site VPN мы ещё могли использовать pre-shared key, потому что мы жёстко задавали адрес IPSec-пира, то в случае DMVPN нам нужна гибкость, а заранее мы не знаем адреса соседей. | |||
В связи с этим рекомендуется использование сертификатов. | |||
Но мы для упрощения возьмём всё же настройку с pre-shared ключом. | |||
!Опасность здесь в том, что установить IPSec-сессию с хабом, зная ключ, может любое устройство! | |||
<code>crypto isakmp policy 1</code> | |||
<code>authentication pre-share</code> | |||
От Tunnel Protection и VTI настройка будет отличаться использованием шаблонного адреса: | |||
<code>crypto isakmp key 6 PASSWORD address 0.0.0.0 0.0.0.0</code> | |||
Тут можно спокойно использовать транспортный режим: | |||
<code>crypto ipsec transform-set AES128-SHA esp-aes esp-sha-hmac</code> | |||
<code>mode transport</code> | |||
Создаем профиль с именем DMVPN-P | |||
<code>crypto ipsec profile DMVPN-P</code> | |||
Применяем ранее настроенный тип шифрования с именем AES128-SHA | |||
<code>set transform-set AES128-SHA</code> | |||
Далее созданный профиль применяется на туннельный интерфейс. Настройка на всех узлах одинаковая. | |||
<code>interface Tunnel0</code> | |||
<code>tunnel protection ipsec profile DMVPN-P</code> | |||
=== Проверка === | |||
На выводе сразу после настройки будут вот такие сообщения: | |||
*Mar 1 00:11:18.223: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON | |||
*Mar 1 00:11:23.131: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.250.8 on Tunnel0 from LOADING to FULL, Loading Done | |||
Должны увидеть маршруты OSPF до 192.168.250.0/24 и 192.168.19.0/24 | |||
<code>tmb# sh ip route</code> | |||
Должны пинговаться узлы из локальной сети за маршрутизаторами | |||
<code>tmb# ping 192.168.19.36</code> | |||
<code>tmb# ping 192.168.250.36</code> | |||
=== TroubleShoot IPSec === | |||
Напоследок хочется сказать пару слов о том, как решать проблемы с IPSec. Процедура-то далеко не тривиальная. | |||
При траблшутинге VPN огромную роль играют дебаги. Метод пристального взгляда на конфиг менее надежен – легко пропустить небольшую ошибку. | |||
Исключительно ценным инструментом в траблшутинге IPSec является sh crypto ipsec sa. Нет, дело даже не в бинарном «поднялось — не поднялось», а в счетчиках, в первую очередь encaps-decaps. Можно пустить непрерывный пинг и наблюдать, какой из счетчиков растет. Большинство проблем удается локализовать именно таким образом. | |||
Счетчики вообще не растут? См. куда применен крипто мап и все ли в порядке с ACL. | |||
Растут error? Что-то не так с согласованием, см. дебаг. | |||
Растут encaps, но нет decaps? Вперед изучать противоположную сторону туннеля, тут все хорошо. | |||
Текущая версия на 11:48, 17 апреля 2022
Входные данные
Предположим, что имеется Центральный офис, Филиал А, Филиал Б.
ХАБ DMVPN будем поднимать в ЦО.
ЦО
Внутренняя сеть: 192.168.250.0/24
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.250.8
Внешний интерфейс: 172.16.250.1/24 - FastEthernet 6/0
Шлюз провайдера: 172.16.250.8
IP-адрес интерфейса VPN-туннеля: 10.10.254.1/24
Филиал А
Внутренняя сеть: 192.168.17.0/24
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.17.8
Внешний интерфейс: 172.16.17.1/24 - FastEthernet 6/0
Шлюз провайдера: 172.16.17.8
IP-адрес интерфейса VPN-туннеля: 10.10.254.17/24
Филиал Б
Внутренняя сеть: 192.168.19.0/24
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.19.8
Внешний интерфейс: 172.16.19.1/24 - FastEthernet 6/0
Шлюз провайдера: 172.16.19.8
IP-адрес интерфейса VPN-туннеля: 10.10.254.19/24
Настройка тоннелей
Настройка ЦО (HUB)
crypto isakmp keepalive 10 10
interface Tunnel 0
Внутренний IP-адрес VPN-сервера из нужного диапазона нашей будущей VPN
ip address 10.10.254.1 255.255.255.0
Динамическое изучение данных NHRP от клиентов. Поскольку клиентов у нас множество и они могут быть с динамическими адресами, на хабе нельзя задать явное соответствие внутренних и внешних адресов.
ip nhrp map multicast dynamic
Определяем Network ID – просто идентификатор, который необязательно должен быть одинаковым на всех узлах DMVPN
ip nhrp network-id 1
Привязка к физическому внешнему интерфейсу
tunnel source FastEthernet 6/0
Туннель на центральном узле будет терминировать все туннели от удалённых точек.
То есть он будет точка-многоточка (Point-to-MultiPoint)
tunnel mode gre multipoint
По умолчанию включен split horizon. Необходимо его отключить на хабе, чтобы роутеры (spoke) могли общаться напрямую между собой и видеть подсети за соседними маршрутизаторами
Если маршрут достижим через определенный интерфейс, то в обновление, которое отправляется через этот интерфейс не включается этот маршрут
no ip split-horizon
Без этих настроек после перезагрузки хаба тоннели в филиалах поднимутся, но будут недоступны для пингов
ip nhrp registration timeout 30
ip nhrp holdtime 300
Настройка Филиала А (SPOKE A)
crypto isakmp keepalive 10 10
interface Tunnel 0
Внутренний IP-адрес VPN-клиента из нужного диапазона нашей будущей VPN
ip address 10.10.254.17 255.255.255.0
Статическое соотношение внутреннего и внешнего адресов центрального хаба (ЦО)
ip nhrp map 10.10.254.1 172.16.250.1
Мультикастовый трафик должен получать хаб по внешнему IP-адресу ЦО
ip nhrp map multicast 172.16.250.1
Network ID. Не обязательно должен совпадать с таким же на хабе
ip nhrp network-id 1
Статически настроенный внутренний VPN адрес NHRP сервера – хаба
Именно поэтому в центре нам нужен статический публичный адрес
Клиенты отправляют запрос на регистрацию на хаб 10.10.254.1, этот запрос содержит настроенный локальный адрес туннельного интерфейса, а также свой публичный адрес
ip nhrp nhs 10.10.254.1
Если адрес в филиалах выдаётся динамически, эта команда обязательна
ip nhrp registration no-unique
Привязка к физическому внешнему интерфейсу
tunnel source FastEthernet 6/0
Указываем, что тип туннеля mGRE – это позволит создавать динамически туннели не только до хаба, но и до других филиалов
tunnel mode gre multipoint
Без этих настроек после перезагрузки хаба тоннели в филиалах поднимутся, но будут недоступны для пингов
ip nhrp registration timeout 30
ip nhrp holdtime 300
Настройка Филиала Б (SPOKE B)
crypto isakmp keepalive 10 10
interface Tunnel 0
Внутренний IP-адрес VPN-клиента из нужного диапазона нашей будущей VPN
ip address 10.10.254.19 255.255.255.0
Статическое соотношение внутреннего и внешнего адресов центрального хаба (ЦО)
ip nhrp map 10.10.254.1 172.16.250.1
Мультикастовый трафик должен получать хаб по внешнему IP-адресу
ip nhrp map multicast 172.16.250.1
Network ID. Не обязательно должен совпадать с таким же на хабе
ip nhrp network-id 1
Статически настроенный внутренний VPN адрес NHRP сервера – хаба
Именно поэтому в центре нам нужен статический публичный адрес
Клиенты отправляют запрос на регистрацию на хаб 10.10.254.1, этот запрос содержит настроенный локальный адрес туннельного интерфейса, а также свой публичный адрес
ip nhrp nhs 10.10.254.1
Если адрес в филиалах выдаётся динамически, эта команда обязательна
ip nhrp registration no-unique
Привязка к физическому внешнему интерфейсу
tunnel source FastEthernet 6/0
Указываем, что тип туннеля mGRE – это позволит создавать динамически туннели не только до хаба, но и до других филиалов
tunnel mode gre multipoint
Без этих настроек после перезагрузки хаба тоннели в филиалах поднимутся, но будут недоступны для пингов
ip nhrp registration timeout 30
ip nhrp holdtime 300
Проверка
tmb# ping 10.10.254.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.254.1, timeout is 2 seconds: !!! Success rate is 100 percent (5/5), round-trip min/avg/max = 176/213/284 ms
tmb# ping 10.10.254.19
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 172.16.254.19, timeout is 2 seconds: !!! Success rate is 100 percent (5/5), round-trip min/avg/max = 176/213/284 ms
sh int tun 0
sh ip nhrp brief
Тоннели подняты!
Идем дальше
Динамическая маршрутизация OSPF
Настройка ЦО
interface loopback 0
ip address 10.0.0.250 255.255.255.255
exit
interface Tunnel 0
Поскольку мы имеем широковещательную L2 сеть на туннельных интерфейсах, указываем явно тип сети Broadcast на туннельных интерфейсах на всех узлах
ip ospf network broadcast
Кроме того в такой сети должен выбираться DR. Логично, чтобы им стал хаб. Хабу ставим ip ospf priority 10. Всем остальным Spoke-маршрутизаторам запрещаем участие в выборах DR - ставим ip ospf priority 0:
ip ospf priority 10
exit
(config)# router ospf 1
1 это номер процесса, непринципиален
Номер процесса OSFP на разных маршрутизаторах не обязательно должен быть одинаковым, но лучше, если это будет так
(config)# router-id 10.0.0.250
(config)# log-adjacency-changes
Логирование изменений
Анонсируем сеть VPN
network 10.10.254.0 0.0.0.255 area 0
Анонсируем сумму локальных сетей цо и филиалов за маршрутизаторами
network 192.168.0.0 0.0.255.255 area 0
Настройка Филиала А (Остальные филиалы настраиваются аналогично)
interface loopback 0
ip address 10.0.0.17 255.255.255.255
exit
interface Tunnel 0
Поскольку мы имеем широковещательную L2 сеть на туннельных интерфейсах, указываем явно тип сети Broadcast на туннельных интерфейсах на всех узлах
ip ospf network broadcast
Кроме того в такой сети должен выбираться DR. Логично, чтобы им стал хаб. Всем остальным Spoke-маршрутизаторам запрещаем участие в выборах DR - ставим ip ospf priority 0:
ip ospf priority 0
exit
(config)# router ospf 1
1 это номер процесса, непринципиален
Номер процесса OSFP на разных маршрутизаторах не обязательно должен быть одинаковым, но лучше, если это будет так
(config)# router-id 10.0.0.17
(config)# log-adjacency-changes
Логирование изменений
Анонсируем сеть VPN
network 10.10.254.0 0.0.0.255 area 0
Анонсируем сумму локальных сетей цо и филиалов за маршрутизаторами
network 192.168.0.0 0.0.255.255 area 0
Проверка
Должны увидеть маршруты OSPF до 192.168.250.0/24 и 192.168.19.0/24
tmb# sh ip route
tmb# ping 192.168.19.36
tmb# ping 192.168.250.36
Тут важно понимать, что несмотря на то, что общение между филиалами осуществляется в обход центрального узла, хаб однако несёт тут жизненно важную вспомогательную функцию и без него ничего работать не будет: он предоставляет клиентам таблицу NHRP, а также анонсирует все маршруты – филиалы распространяют маршрутную информацию не непосредственно друг другу, а через хаб.
На данный момент решены следующие проблемы:
1) Связность. Филиалы подключены и доступны.
2) Маршрутизация. Через mGRE туннели успешно запущены IGP.
3) Масштабируемость. При добавлении нового spoke-маршрутизатора настраивается только он сам и нет необходимости лезть в конфигурацию уже существующих узлов.
4) Разгрузили хаб – через него передаётся только служебный трафик.
Осталось уладить вопрос с безопасностью.
Шифрование IPSec
Настройка (на всех узлах одинаковая)
Если для Site-to-Site VPN мы ещё могли использовать pre-shared key, потому что мы жёстко задавали адрес IPSec-пира, то в случае DMVPN нам нужна гибкость, а заранее мы не знаем адреса соседей.
В связи с этим рекомендуется использование сертификатов.
Но мы для упрощения возьмём всё же настройку с pre-shared ключом.
!Опасность здесь в том, что установить IPSec-сессию с хабом, зная ключ, может любое устройство!
crypto isakmp policy 1
authentication pre-share
От Tunnel Protection и VTI настройка будет отличаться использованием шаблонного адреса:
crypto isakmp key 6 PASSWORD address 0.0.0.0 0.0.0.0
Тут можно спокойно использовать транспортный режим:
crypto ipsec transform-set AES128-SHA esp-aes esp-sha-hmac
mode transport
Создаем профиль с именем DMVPN-P
crypto ipsec profile DMVPN-P
Применяем ранее настроенный тип шифрования с именем AES128-SHA
set transform-set AES128-SHA
Далее созданный профиль применяется на туннельный интерфейс. Настройка на всех узлах одинаковая.
interface Tunnel0
tunnel protection ipsec profile DMVPN-P
Проверка
На выводе сразу после настройки будут вот такие сообщения:
*Mar 1 00:11:18.223: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON *Mar 1 00:11:23.131: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.250.8 on Tunnel0 from LOADING to FULL, Loading Done
Должны увидеть маршруты OSPF до 192.168.250.0/24 и 192.168.19.0/24
tmb# sh ip route
Должны пинговаться узлы из локальной сети за маршрутизаторами
tmb# ping 192.168.19.36
tmb# ping 192.168.250.36
TroubleShoot IPSec
Напоследок хочется сказать пару слов о том, как решать проблемы с IPSec. Процедура-то далеко не тривиальная.
При траблшутинге VPN огромную роль играют дебаги. Метод пристального взгляда на конфиг менее надежен – легко пропустить небольшую ошибку.
Исключительно ценным инструментом в траблшутинге IPSec является sh crypto ipsec sa. Нет, дело даже не в бинарном «поднялось — не поднялось», а в счетчиках, в первую очередь encaps-decaps. Можно пустить непрерывный пинг и наблюдать, какой из счетчиков растет. Большинство проблем удается локализовать именно таким образом.
Счетчики вообще не растут? См. куда применен крипто мап и все ли в порядке с ACL.
Растут error? Что-то не так с согласованием, см. дебаг.
Растут encaps, но нет decaps? Вперед изучать противоположную сторону туннеля, тут все хорошо.