Представьте, ваша компания набирает обороты, растут продажи, происходит открытие множества филиалов, и эти филиалы активно работают друг с другом. А это значит что вам нужно все их друг с другом связать! В качестве оборудования у нас маршрутизаторы Cisco, что впрочем отменяет только конечные примеры настроек, если у вас Cisco нет, я находил в сети проект OpenNHRP.
Итак, начнем. Для начала свяжем центр с первым филиалом с использованием IPSEC.
Введем адресацию — внутренняя сеть компании 10.0.0.0/8, сеть головного офиса — 10.0.0.0/24, сеть первого филиала — 10.1.0.0/24. Внешний адрес маршрутизатора головного офиса — 172.16.0.2/30, а его маршрут по умолчанию уходит, соответственно, на 172.16.0.1. Для лучшего различения выдадим филиалу «внешний» адрес 192.168.45.14/30, а шлюзом у нас будет единственный оставшийся адрес из диапазона — 192.168.45.13.
Маршрутизатор головного офиса:
Маршрутизатор филиала настраивается по аналогии, а главное здесь это разобрать недостатки решения. Исходя из нашего предположения число филиалов быстро растет, поэтому при подключении второго филиала вам надо будет настроить еще два туннеля, при подключении третьего — 3, четвертого — 4 и так далее. Можете остановиться на 20-ом к примеру и задуматься — да разве же так оно должно быть?
А должно быть в таких случаях на порядки больше динамики — нам нужны протоколы маршрутизации и многоточечный VPN, а все вместе Cisco именует DMVPN — Dynamic Multipoint VPN. Вначале освоения мало кто понимает зачем ему нужны OSPF и сертификаты — ведь прописать ip route 10.1.0.0… гораздо проще, а заморачиваться с сертификатами, когда есть возможность просто вбить ключ на двух концах, это вообще извращение. Но вбивать один ключ на все точки недопустимо, а вбивать пары ключей на все нереально. Таким образом сертификаты придется всё таки осваивать.
Впрочем тема сертификатов в Cisco IPSEC выходит за рамки этого хабратопика — здесь я вам покажу что такое DMVPN и чем он замечателен.
Итак, DMVPN это сочетание NHRP, протокола динамической маршрутизации (EIGRP, OSPF, IS-IS — в этом вас не ограничивают) и многоточечного GRE туннеля. DMVPN позволяет свести настройку дополнительных точек к минимуму, клиенты могут иметь динамические адреса (серверу нужен постоянный, это точка входа), туннели между клиентами будут подниматься автоматически, по требованию.
Протокол NHRP — NBMA Next Hop Resolution Protocol, служит для разрешения адресов в не широковещательных сетях — в нашем случае помогает определить внешний адрес маршрутизатора, которому предназначается пакет. Разрешение осуществляет «hub», сервер, которому сообщают свои адреса и запрашивают информацию о других «spokes», клиенты.
Я использовал DMVPN когда в компании началось внедрение VoIP — чтобы не гонять голосовой трафик через центр. Например Васе из Томска понадобилось вызвать Петю из Красноярска — туннель между маршрутизаторами будет установлен динамически. У каждого маршрутизатора есть IP адрес специальной сети (например 10.0.1.0/24), и маршрутизаторы регистрируются на NHRP сервере центра (10.0.1.1). Когда требуется Томску соединиться с Красноярском он смотрит в таблицу маршрутизации и видит, что маршрут до этой сети лежит через точку 10.0.1.7. Через NHRP маршрутизатор узнает публичный IP адрес маршрутизатора и может начинать устанавливать IPSEC туннель. Звучит не очень сложно по моему.
В качестве протокола динамической маршрутизации возьмем OSPF, исходя из личных предпочтений. Легко может быть заменен на любой другой по вашему желанию.
В примере используется общий ключ, один на всех. Но так делать в реальном мире нельзя — обязательно изучите тему сертификатов.
Конфигурация центрального маршрутизатора, относящееся к делу:
Маршрутизатор филиала:
Как видите основные настройки относятся к туннельному интерфейсу Tunnel7. Первый блок — настройки NHRP.
Команды ip nhrp map задают порядок разрешения адресов. Здесь мы задаем соответствие внутреннего адреса сервера NHRP и его WAN адреса — ip nhrp map 10.0.1.1 172.16.0.2. Также по аналогии, все мультикастовые запросы адресуются туда же. Ну и ip nhrp nhs задает адрес сервера.
Заметьте, что адреса всех интерфейсов DMVPN из одной сети.
Команды ip ospf задают настройки динамической маршрутизации на интерфейсе. Здесь могут быть и ip eigrp, по вашему выбору.
Ну и tunnel protection ipsec profile BIGCOMPANY-TRSET включает шифрование, как вы догадываетесь, шаг не обязательный.
Здесь рассмотрен вариант spoke-spoke, то есть прямое соединение между клиентами DMVPN. Есть вариант hub-spoke, который служит для соединения клиентов с центром.
Надеюсь кто то, столкнувшийся с взрывным ростом бизнеса, прочтя этот топик будет знать, что делать в такой ситуации. Приведенные здесь настройки это просто пример, не используйте статью в качестве HOW-TO, читайте cisco.com.
Дополнительно могу сказать, что настройка маршрутизатора у нас занимала не более получаса — это генерация сертификата, заливка на маршрутизатор, генерация конфига (простенький bash скрипт), правка конфига напильником, упаковка в коробку.
Домашнее чтение на официальном сайте. Из документа, который вы там скачаете, видно, что возможности применение DMVPN несколько шире, чем представлено здесь.
Итак, начнем. Для начала свяжем центр с первым филиалом с использованием IPSEC.
Введем адресацию — внутренняя сеть компании 10.0.0.0/8, сеть головного офиса — 10.0.0.0/24, сеть первого филиала — 10.1.0.0/24. Внешний адрес маршрутизатора головного офиса — 172.16.0.2/30, а его маршрут по умолчанию уходит, соответственно, на 172.16.0.1. Для лучшего различения выдадим филиалу «внешний» адрес 192.168.45.14/30, а шлюзом у нас будет единственный оставшийся адрес из диапазона — 192.168.45.13.
Маршрутизатор головного офиса:
! Определяем политику ISAKMP. Главное здесь это указание, что аутентификация у нас
! с предварительно заданным ключом.
!
crypto isakmp policy 1
encr aes
authentication pre-share
group 2
lifetime 3600
!
! Задаем ключ для связи с маршрутизатором филиала.
!
crypto isakmp key MEGAKEY123 address 192.168.45.14
!
crypto ipsec transform-set BIGCOMPANY-TRSET esp-aes esp-sha-hmac
!
crypto ipsec profile BIGCOMPANY-profile
set transform-set BIGCOMPANY-TRSET
!
interface FastEthernet0/0
ip address 172.16.0.2 255.255.255.252
!
!А теперь создаем интерфейс, который будет вратами в филиал №1
!
interface Tunnel1
description Tunnel to filial №1 10.1.0.0/24
ip address 10.55.0.1 255.255.255.252
tunnel source FastEthernet0/0
tunnel destination 192.168.45.14
tunnel mode ipsec ipv4
tunnel protection ipsec profile BIGCOMPANY-profile
!
ip route 0.0.0.0 0.0.0.0 172.16.0.1
! А теперь пакеты для сети филиала пихаем на другой конец туннеля.
ip route 10.1.0.0 255.255.255.0 10.55.0.2
Маршрутизатор филиала настраивается по аналогии, а главное здесь это разобрать недостатки решения. Исходя из нашего предположения число филиалов быстро растет, поэтому при подключении второго филиала вам надо будет настроить еще два туннеля, при подключении третьего — 3, четвертого — 4 и так далее. Можете остановиться на 20-ом к примеру и задуматься — да разве же так оно должно быть?
А должно быть в таких случаях на порядки больше динамики — нам нужны протоколы маршрутизации и многоточечный VPN, а все вместе Cisco именует DMVPN — Dynamic Multipoint VPN. Вначале освоения мало кто понимает зачем ему нужны OSPF и сертификаты — ведь прописать ip route 10.1.0.0… гораздо проще, а заморачиваться с сертификатами, когда есть возможность просто вбить ключ на двух концах, это вообще извращение. Но вбивать один ключ на все точки недопустимо, а вбивать пары ключей на все нереально. Таким образом сертификаты придется всё таки осваивать.
Впрочем тема сертификатов в Cisco IPSEC выходит за рамки этого хабратопика — здесь я вам покажу что такое DMVPN и чем он замечателен.
Итак, DMVPN это сочетание NHRP, протокола динамической маршрутизации (EIGRP, OSPF, IS-IS — в этом вас не ограничивают) и многоточечного GRE туннеля. DMVPN позволяет свести настройку дополнительных точек к минимуму, клиенты могут иметь динамические адреса (серверу нужен постоянный, это точка входа), туннели между клиентами будут подниматься автоматически, по требованию.
Протокол NHRP — NBMA Next Hop Resolution Protocol, служит для разрешения адресов в не широковещательных сетях — в нашем случае помогает определить внешний адрес маршрутизатора, которому предназначается пакет. Разрешение осуществляет «hub», сервер, которому сообщают свои адреса и запрашивают информацию о других «spokes», клиенты.
Я использовал DMVPN когда в компании началось внедрение VoIP — чтобы не гонять голосовой трафик через центр. Например Васе из Томска понадобилось вызвать Петю из Красноярска — туннель между маршрутизаторами будет установлен динамически. У каждого маршрутизатора есть IP адрес специальной сети (например 10.0.1.0/24), и маршрутизаторы регистрируются на NHRP сервере центра (10.0.1.1). Когда требуется Томску соединиться с Красноярском он смотрит в таблицу маршрутизации и видит, что маршрут до этой сети лежит через точку 10.0.1.7. Через NHRP маршрутизатор узнает публичный IP адрес маршрутизатора и может начинать устанавливать IPSEC туннель. Звучит не очень сложно по моему.
В качестве протокола динамической маршрутизации возьмем OSPF, исходя из личных предпочтений. Легко может быть заменен на любой другой по вашему желанию.
В примере используется общий ключ, один на всех. Но так делать в реальном мире нельзя — обязательно изучите тему сертификатов.
Конфигурация центрального маршрутизатора, относящееся к делу:
crypto isakmp policy 1
encr aes
authentication pre-share
group 2
lifetime 3600
!
! Задаем ключ, один для всех
!
crypto isakmp key MEGAKEY123 address 0.0.0.0 0.0.0.0
!
crypto ipsec transform-set BIGCOMPANY-TRSET esp-aes esp-sha-hmac
!
crypto ipsec profile BIGCOMPANY-profile
set transform-set BIGCOMPANY-TRSET
!
interface FastEthernet0/0
description WAN interface
ip address 172.16.0.2 255.255.255.252
!
interface Tunnel101
ip address 10.0.1.1 255.255.0.0
no ip redirects
ip mtu 1440
ip nhrp authentication KUKU321
ip nhrp map multicast dynamic
ip nhrp network-id 1
ip nhrp holdtime 3600
ip nhrp cache non-authoritative
ip tcp adjust-mss 1360
no ip mroute-cache
ip ospf network broadcast
ip ospf hello-interval 30
ip ospf priority 2
delay 1000
tunnel source Vlan1
tunnel mode gre multipoint
tunnel key KUKU
tunnel protection ipsec profile BIGCOMPANY-TRSET
!
ip route 0.0.0.0 0.0.0.0 172.16.0.1
!
Маршрутизатор филиала:
interface Tunnel7
ip address 10.0.1.2 255.255.255.0
no ip redirects
ip nhrp authentication KUKU321
ip nhrp map multicast dynamic
ip nhrp map multicast 172.16.0.2
ip nhrp map 10.0.1.1 172.16.0.2
ip nhrp network-id 1
ip nhrp holdtime 3600
ip nhrp nhs 10.0.1.1
no ip route-cache cef
no ip route-cache
ip tcp adjust-mss 1360
no ip mroute-cache
ip ospf network broadcast
ip ospf hello-interval 30
ip ospf priority 0
delay 1000
tunnel source FastEthernet0/0
tunnel mode gre multipoint
tunnel key KUKU
tunnel protection ipsec profile BIGCOMPANY-TRSET
Как видите основные настройки относятся к туннельному интерфейсу Tunnel7. Первый блок — настройки NHRP.
Команды ip nhrp map задают порядок разрешения адресов. Здесь мы задаем соответствие внутреннего адреса сервера NHRP и его WAN адреса — ip nhrp map 10.0.1.1 172.16.0.2. Также по аналогии, все мультикастовые запросы адресуются туда же. Ну и ip nhrp nhs задает адрес сервера.
Заметьте, что адреса всех интерфейсов DMVPN из одной сети.
Команды ip ospf задают настройки динамической маршрутизации на интерфейсе. Здесь могут быть и ip eigrp, по вашему выбору.
Ну и tunnel protection ipsec profile BIGCOMPANY-TRSET включает шифрование, как вы догадываетесь, шаг не обязательный.
Здесь рассмотрен вариант spoke-spoke, то есть прямое соединение между клиентами DMVPN. Есть вариант hub-spoke, который служит для соединения клиентов с центром.
Надеюсь кто то, столкнувшийся с взрывным ростом бизнеса, прочтя этот топик будет знать, что делать в такой ситуации. Приведенные здесь настройки это просто пример, не используйте статью в качестве HOW-TO, читайте cisco.com.
Дополнительно могу сказать, что настройка маршрутизатора у нас занимала не более получаса — это генерация сертификата, заливка на маршрутизатор, генерация конфига (простенький bash скрипт), правка конфига напильником, упаковка в коробку.
Домашнее чтение на официальном сайте. Из документа, который вы там скачаете, видно, что возможности применение DMVPN несколько шире, чем представлено здесь.