Pull to refresh

VPN, полное покрытие

Reading time5 min
Views30K
Представьте, ваша компания набирает обороты, растут продажи, происходит открытие множества филиалов, и эти филиалы активно работают друг с другом. А это значит что вам нужно все их друг с другом связать! В качестве оборудования у нас маршрутизаторы 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.

Маршрутизатор головного офиса:
! Определяем политику 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 несколько шире, чем представлено здесь.
Tags:
Hubs:
+27
Comments43

Articles