Построение связности между главным офисом и филиалами на базе DMVPN

· 21 мин чтения

DMVPN – это не просто отдельный протокол, а целый комплекс технологий Cisco, решающий фундаментальную проблему классических Site-to-Site VPN.

Главная идея DMVPN – избавиться от необходимости вручную прописывать настройки для каждого нового филиала. В традиционной схеме, если у вас главный офис и сотня точек, на головном маршрутизаторе нужно создать сотню криптографических политик и прописать сотни IP-адресов. DMVPN позволяет делать это динамически: филиал сам «регистрируется» на главном узле, а адреса филиалов могут быть вообще любыми и меняться со временем, что критически важно для подключений через бытовых провайдеров (DHCP, 4G-модемы).

С технической стороны это достигается объединением трех технологий. Во-первых, mGRE (Multipoint GRE) создает один туннельный интерфейс на головном роутере, способный обслуживать тысячи филиалов, в отличие от классического GRE, где для каждого соединения требовался отдельный интерфейс. Во-вторых, протокол NHRP работает как внутренний «телефонный справочник», позволяя филиалам запрашивать у хаба реальные публичные IP-адреса других участников сети, даже если эти адреса постоянно меняются. В-третьих, IPsec обеспечивает шифрование всего, что попадает в этот универсальный туннель.

DMVPN необходим для создания масштабируемой, отказоустойчивой и почти не требующей ручного обслуживания распределенной сети. Он решает главную боль сетевого инженера при росте компании: добавление нового офиса сводится к копированию универсального шаблона на новый роутер без каких-либо правок на головном узле. Более того, эта технология позволяет филиалам общаться напрямую друг с другом (например, для VoIP-звонков или передачи больших файлов), не нагружая канал главного офиса, что делает сеть не только удобной в настройке, но и экономически эффективной с точки зрения использования полосы пропускания.

Параметры сетевых устройств

Template Name/prefix CPU RAM (MB) Ethernets
Cisco vIOS Router RTR-ISP 1 512 4
Cisco vIOS Router RTR-HQ 1 512 4
Cisco vIOS Router RTR-BR1 1 512 4
Cisco vIOS Router RTR-BR2 1 512 4
Cisco vIOS Switch SW-ISP 1 512 8
Virtual PC (VPCS) vPC-HQ − − −
Virtual PC (VPCS) vPC-BR1 − − −
Virtual PC (VPCS) vPC-BR2 − − −

Подключения между устройствами

Наименование узла Интерфейс IP-адрес Маска подсети Шлюз по умолчанию
RTR-ISP Gi0/0 DHCP DHCP DHCP
RTR-ISP Gi0/1.99 − − −
RTR-ISP Gi0/1.100 − − −
SW-ISP Gi0/0 trunk − −
SW-ISP Gi0/1 VLAN 99 − −
SW-ISP Gi0/2 VLAN 100 − −
SW-ISP Gi0/3 VLAN 100 − −
RTR-HQ Gi0/0 PPPoE − −
RTR-HQ Gi0/1 172.16.0.1 255.255.255.0 −
RTR-HQ Tunnel0 99.99.99.1 255.255.255.0 −
RTR-BR1 Gi0/0 PPPoE − −
RTR-BR1 Gi0/1 192.168.1.1 255.255.255.0 −
RTR-BR1 Tunnel0 99.99.99.2 255.255.255.0 −
RTR-BR2 Gi0/0 PPPoE − −
RTR-BR2 Gi0/1 192.168.2.1 255.255.255.0 −
RTR-BR2 Tunnel0 99.99.99.3 255.255.255.0 −
vPC-HQ NIC 172.16.0.10 255.255.255.0 172.16.0.1
vPC-BR1 NIC 192.168.1.10 255.255.255.0 192.168.1.1
vPC-BR2 NIC 192.168.2.10 255.255.255.0 192.168.2.1

Топология сети

Настройка сети

Прежде, чем приступить к настройке, стоит заметить: основной акцент в данной практической работе направлен на настройку непосредственно маршрутизаторов, которые участвуют в создании DMVPN-сети, однако локальные сети упрощены до одного-единственного узла – vPC. Это позволит сконцентрироваться на настройке маршрутизирующего оборудования.

Сейчас необходимо настроить выход в Интернет через сеть ISP и сформировать PPPoE-сервер для подключения клиентов.

На RTR-ISP:

Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-ISP
RTR-ISP(config)#access-list 1 permit any
RTR-ISP(config)#ip nat inside source list 1 interface gi0/0 overload
RTR-ISP(config)#interface gi0/0
RTR-ISP(config-if)#no shutdown
RTR-ISP(config-if)#ip address dhcp
RTR-ISP(config-if)#ip nat outside
RTR-ISP(config-if)#exit
RTR-ISP(config)#aaa new-model
RTR-ISP(config)#aaa authentication ppp default local
RTR-ISP(config)#aaa authorization network default local
RTR-ISP(config)#ip local pool HQ_POOL 100.0.0.10 100.0.0.10 
RTR-ISP(config)#ip local pool BRANCH_POOL 100.0.100.10 100.0.100.200
RTR-ISP(config)#username rtr-hq password 0 P@ssw0rd_HQ
RTR-ISP(config)#username rtr-br1 password 0 P@ssw0rd_BR1
RTR-ISP(config)#username rtr-br2 password 0 P@ssw0rd_BR2
RTR-ISP(config)#interface loopback0
RTR-ISP(config-if)#ip address 10.0.0.1 255.255.255.255
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface loopback1
RTR-ISP(config-if)#ip address 20.0.0.1 255.255.255.255
RTR-ISP(config-if)#exit
RTR-ISP(config)#bba-group pppoe HQ
RTR-ISP(config-bba-group)#virtual-template 1
RTR-ISP(config-bba-group)#exit
RTR-ISP(config)#bba-group pppoe BRANCH
RTR-ISP(config-bba-group)#virtual-template 2
RTR-ISP(config-bba-group)#exit
RTR-ISP(config)#interface virtual-template1
RTR-ISP(config-if)#ip unnumbered lo0
RTR-ISP(config-if)#ip nat inside
RTR-ISP(config-if)#peer default ip address pool HQ_POOL
RTR-ISP(config-if)#ppp authentication chap pap ms-chap ms-chap-v2
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface virtual-template2
RTR-ISP(config-if)#ip unnumbered lo1
RTR-ISP(config-if)#ip nat inside
RTR-ISP(config-if)#peer default ip address pool BRANCH_POOL
RTR-ISP(config-if)#ppp authentication chap pap ms-chap ms-chap-v2
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface gi0/1
RTR-ISP(config-if)#no shutdown
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface gi0/1.99
RTR-ISP(config-subif)#encapsulation dot1q 99
RTR-ISP(config-subif)#no ip address
RTR-ISP(config-subif)#pppoe enable group HQ
RTR-ISP(config-subif)#exit
RTR-ISP(config)#interface gi0/1.100
RTR-ISP(config-subif)#encapsulation dot1q 100
RTR-ISP(config-subif)#no ip address
RTR-ISP(config-subif)#pppoe enable group BRANCH
RTR-ISP(config-subif)#exit
RTR-ISP(config)#do write

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

На SW-ISP:

Switch>enable
Switch#config terminal
Switch(config)#hostname SW-ISP
SW-ISP(config)#vlan 99
SW-ISP(config-vlan)#exit
SW-ISP(config)#vlan 100
SW-ISP(config-vlan)#exit
SW-ISP(config)#interface gi0/0
SW-ISP(config-if)#switchport trunk encapsulation dot1q
SW-ISP(config-if)#switchport mode trunk
SW-ISP(config-if)#exit
SW-ISP(config)#interface gi0/1
SW-ISP(config-if)#switchport access vlan 99
SW-ISP(config-if)#switchport mode access
SW-ISP(config-if)#exit
SW-ISP(config)#interface range gi0/2-3
SW-ISP(config-if-range)#switchport access vlan 100
SW-ISP(config-if-range)#switchport mode access
SW-ISP(config-if-range)#exit
SW-ISP(config)#do write

Теперь необходимо выполнить настройку главного офиса для подключения к сети ISP через PPPoE.

На RTR-HQ:

Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-HQ
RTR-HQ(config)#interface dialer1
RTR-HQ(config-if)#ip address negotiated
RTR-HQ(config-if)#mtu 1492
RTR-HQ(config-if)#encapsulation ppp
RTR-HQ(config-if)#dialer pool 1
RTR-HQ(config-if)#ppp authentication chap pap callin
RTR-HQ(config-if)#ppp chap hostname rtr-hq
RTR-HQ(config-if)#ppp chap password 0 P@ssw0rd_HQ
RTR-HQ(config-if)#ppp pap sent-username rtr-hq password P@ssw0rd_HQ
RTR-HQ(config-if)#ip nat outside
RTR-HQ(config-if)#exit
RTR-HQ(config)#access-list 1 permit any
RTR-HQ(config)#ip nat inside source list 1 interface dialer1 overload
RTR-HQ(config)#interface gi0/1
RTR-HQ(config-if)#ip address 172.16.0.1 255.255.255.0
RTR-HQ(config-if)#ip nat inside
RTR-HQ(config-if)#no shutdown
RTR-HQ(config-if)#exit
RTR-HQ(config)#inteface gi0/0
RTR-HQ(config-if)#no ip address
RTR-HQ(config-if)#no shutdown
RTR-HQ(config-if)#pppoe-client dial-pool-number 1
RTR-HQ(config-if)#exit
RTR-HQ(config)#ip route 0.0.0.0 0.0.0.0 dialer1
RTR-HQ(config)#do write

Чтобы убедиться в том, что PPPoE-соединение было установлено, можно посмотреть вывод команды «show ip interface brief» и выполнить запрос в Интернет «ping 1.1.1.1»:

По аналогии настройте маршрутизаторы филиалов RTR-BR1 и RTR-BR2!

Проверка на RTR-BR1 и RTR-BR2:

Теперь можно на vPC назначить IP-адреса и убедиться в том, что все работает:

Все vPC работают. Пора переходить к настройке DMVPN.

На RTR-HQ:

RTR-HQ>enable
RTR-HQ#config terminal
RTR-HQ(config)#crypto isakmp policy 10
RTR-HQ(config-isakmp)#encr aes 256
RTR-HQ(config-isakmp)#hash sha256
RTR-HQ(config-isakmp)#authentication pre-share
RTR-HQ(config-isakmp)#group 14
RTR-HQ(config-isakmp)#lifetime 86400
RTR-HQ(config-isakmp)#exit
RTR-HQ(config)#crypto isakmp key P@ssw0rd_VPN address 0.0.0.0 0.0.0.0
RTR-HQ(config)#crypto ipsec transform-set DMVPN-TS esp-aes 256 esp-sha256-hmac
RTR-HQ(cfg-crypto-trans)#mode transport
RTR-HQ(cfg-crypto-trans)#exit
RTR-HQ(config)#crypto ipsec profile DMVPN-PROFILE
RTR-HQ(ipsec-profile)#set transform-set DMVPN-TS
RTR-HQ(ipsec-profile)#exit
RTR-HQ(config)#interface tunnel0
RTR-HQ(config-if)#ip address 99.99.99.1 255.255.255.0
RTR-HQ(config-if)#no ip redirects
RTR-HQ(config-if)#ip nhrp authentication P@ssw0rd
RTR-HQ(config-if)#ip nhrp map multicast dynamic
RTR-HQ(config-if)#ip nhrp network-id 1
RTR-HQ(config-if)#ip ospf network point-to-multipoint
RTR-HQ(config-if)#tunnel source dialer1
RTR-HQ(config-if)#tunnel mode gre multipoint
RTR-HQ(config-if)#tunnel protection ipsec profile DMVPN-PROFILE
RTR-HQ(config-if)#exit
RTR-HQ(config)#do write

DMVPN настроен на RTR-HQ. Теперь необходимо настроить клиентов, которые будут подключаться к нему.

На RTR-BR1:

RTR-BR1>enable
RTR-BR1#config terminal
RTR-BR1(config)#crypto isakmp policy 10
RTR-BR1(config-isakmp)#encr aes 256
RTR-BR1(config-isakmp)#hash sha256
RTR-BR1(config-isakmp)#authentication pre-share
RTR-BR1(config-isakmp)#group 14
RTR-BR1(config-isakmp)#lifetime 86400
RTR-BR1(config-isakmp)#exit
RTR-BR1(config)#crypto isakmp key P@ssw0rd_VPN address 100.0.0.10
RTR-BR1(config)#crypto ipsec transform-set DMVPN-TS esp-aes 256 esp-sha256-hmac
RTR-BR1(cfg-crypto-trans)#mode transport
RTR-BR1(cfg-crypto-trans)#exit
RTR-BR1(config)#crypto ipsec profile DMVPN-PROFILE
RTR-BR1(ipsec-profile)#set transform-set DMVPN-TS
RTR-BR1(ipsec-profile)#exit
RTR-BR1(config)#interface tunnel0
RTR-BR1(config-if)#ip address 99.99.99.2 255.255.255.0
RTR-BR1(config-if)#ip nhrp authentication P@ssw0rd
RTR-BR1(config-if)#ip nhrp map 99.99.99.1 100.0.0.10
RTR-BR1(config-if)#ip nhrp map multicast 100.0.0.10
RTR-BR1(config-if)#ip nhrp network-id 1
RTR-BR1(config-if)#ip nhrp nhs 99.99.99.1
RTR-BR1(config-if)#ip nhrp registration timeout 60
RTR-BR1(config-if)#ip ospf network point-to-multipoint
RTR-BR1(config-if)#tunnel source dialer1
RTR-BR1(config-if)#tunnel mode gre multipoint
RTR-BR1(config-if)#tunnel protection ipsec profile DMVPN-PROFILE
RTR-BR1(config-if)#exit
RTR-BR1(config)#do write

Примерно то же самое необходимо сделать на RTR-BR2:

RTR-BR2>enable
RTR-BR2#config terminal
RTR-BR2(config)#crypto isakmp policy 10
RTR-BR2(config-isakmp)#encr aes 256
RTR-BR2(config-isakmp)#hash sha256
RTR-BR2(config-isakmp)#authentication pre-share
RTR-BR2(config-isakmp)#group 14
RTR-BR2(config-isakmp)#lifetime 86400
RTR-BR2(config-isakmp)#exit
RTR-BR2(config)#crypto isakmp key P@ssw0rd_VPN address 100.0.0.10
RTR-BR2(config)#crypto ipsec transform-set DMVPN-TS esp-aes 256 esp-sha256-hmac
RTR-BR2(cfg-crypto-trans)#mode transport
RTR-BR2(cfg-crypto-trans)#exit
RTR-BR2(config)#crypto ipsec profile DMVPN-PROFILE
RTR-BR2(ipsec-profile)#set transform-set DMVPN-TS
RTR-BR2(ipsec-profile)#exit
RTR-BR2(config)#interface tunnel0
RTR-BR2(config-if)#ip address 99.99.99.3 255.255.255.0
RTR-BR2(config-if)#ip nhrp authentication P@ssw0rd
RTR-BR2(config-if)#ip nhrp map 99.99.99.1 100.0.0.10
RTR-BR2(config-if)#ip nhrp map multicast 100.0.0.10
RTR-BR2(config-if)#ip nhrp network-id 1
RTR-BR2(config-if)#ip nhrp nhs 99.99.99.1
RTR-BR2(config-if)#ip nhrp registration timeout 60
RTR-BR2(config-if)#ip ospf network point-to-multipoint
RTR-BR2(config-if)#tunnel source dialer1
RTR-BR2(config-if)#tunnel mode gre multipoint
RTR-BR2(config-if)#tunnel protection ipsec profile DMVPN-PROFILE
RTR-BR2(config-if)#exit
RTR-BR2(config)#do write

Можно проверить на RTR-HQ, чтобы VPN-соединения были установлены корректно:

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

На RTR-HQ:

RTR-HQ>enable
RTR-HQ#config terminal
RTR-HQ(config)#router ospf 1
RTR-HQ(config-router)#router-id 1.1.1.1
RTR-HQ(config-router)#passive-interface gi0/1
RTR-HQ(config-router)#network 172.16.0.0 0.0.0.255 area 0
RTR-HQ(config-router)#network 99.99.99.0 0.0.0.255 area 0
RTR-HQ(config-router)#exit
RTR-HQ(config)#do write

И на маршрутизаторах филиалов.

На RTR-BR1:

RTR-BR1>enable
RTR-BR1#config terminal
RTR-BR1(config)#router ospf 1
RTR-BR1(config-router)#router-id 2.2.2.2
RTR-BR1(config-router)#passive-interface gi0/1
RTR-BR1(config-router)#network 192.168.1.0 0.0.0.255 area 0
RTR-BR1(config-router)#network 99.99.99.0 0.0.0.255 area 0
RTR-BR1(config-router)#exit
RTR-BR1(config)#do write

На RTR-BR2:

RTR-BR2>enable
RTR-BR2#config terminal
RTR-BR2(config)#router ospf 1
RTR-BR2(config-router)#router-id 3.3.3.3
RTR-BR2(config-router)#passive-interface gi0/1
RTR-BR2(config-router)#network 192.168.2.0 0.0.0.255 area 0
RTR-BR2(config-router)#network 99.99.99.0 0.0.0.255 area 0
RTR-BR2(config-router)#exit
RTR-BR2(config)#do write

Итоговая проверка связности между главным офисом и филиалами:

Как видно, связность присутствует. DMVPN настроен успешно!