среда, 23 марта 2011 г.

Технология DVPN (Dynamic VPN) на маршрутизаторах HP MSR

В данном посте будет рассмотрена технология DVPN (Dymamic VPN) в контексте реализации на маршрутизаторах HP MSR, как аналог проприетарной технологии DMVPN (Dymamic Multipoint VPN) от компании Cisco.


В настоящее время, все больше и больше предприятий используют различные варианты реализации технологии VPN  для подключения их филиалов, используя сети общего пользования. Часто, филиалы предприятий используют динамические IP-адреса для доступа к сети общего пользования, и каждый из них не имеет   возможности знать публичные IP-адреса других филиалов заранее. Такая ситуация затрудняет создание VPN-туннелей между филиалами. Теоретически, филиалам достаточно установить VPN-соединение с головным офисом, и далее посредством протокола динамического роутинга иметь возможность обмениваться информацией с другим филиалом, используя в качестве транзита маршрутизатор основного офиса (рис.1). В случае, когда количество филиалов небольшое, такое решение вполне жизнеспособно. Но когда планируется рост филиалов и активный обмен данными между филиалами ситуация выходит из-под контроля. Становится нецелесообразным пропускать транзитный шифрованный трафик через роутер головного отделения по причине большой нагрузки на него. Выход из ситуации – создание full-mesh сети, которая бы связывала филиалы между собой. Но в этом случае сложность и объем конфигурации роутера в филиале растет пропорционально с увеличением количества филиалов. Решением этой задачи стало создание технологии динамического создания VPN-туннелей. У Cisco эта технология называется DMVPN, у HP Networking похожая технология называется DVPN. Идеологически технологии похожи, но являются проприетарными в обоих случаях, поэтому не совместимыми между собой. В основе цисковского DMVPN лежит протокол NHRP, в основе HP DVPN лежит протокол VAM (VPN Address Management protocol). В дальнейшем речь пойдет о DVPN.


Протокол DVPN собирает, поддерживает и распространяет динамические публичные адреса посредством протокола VAM, что делает возможным создание туннелей между филиалами, которые имеют динамические IP-адреса.
 Когда устройство DVPN пересылает  пакет от пользователей подсети в другую подсеть, он выполняет следующие операции:
1)     получение следующего шага в частной сети через протокол маршрутизации.
2)      Получение публичного сетевого адреса маршрутизатора абонента посредством протокола VAM.
3)      Инкапсуляция пакетов, используя публичный адрес как адрес назначения туннеля (peer).
4)     Отправка пакета по туннелю до места назначения.

Ключевые понятия и роли в DVPN
1)     DVPN-node. Оконечное устройство. Это может быть сетевое устройство или хост. DVPN-node принимает участие в создании туннеля и должен быть VAM-клиентом.
2)     VAM server. Сервер получает регистрационную информацию с DVPN узлов, управляет и поддерживает базу DVPN-клиентов. Обычно это высокопроизводительный роутер.
3)     VAM client. Клиент регистрирует свой private адрес, public адрес и VAM ID на VAM сервере, а также получает информацию о других VAM-клиентах с VAM-сервера. Функции VAM-клиента должны быть реализованы на DVPN-nodes. В дальнейшем VAM клиентов я буду называть HUB (центральное устройство) и Spoke (филиальное устройство).
4)     Hub. Тип VAM клиента, центральное устройство VPN-сети, центр обмена роутинговой информацией.
5)     Spoke. Тим VAM клиента. Обычно это шлюз филиального офиса, не передает данные, полученные от других узлов.





Функционирование DVPN

DVPN представляет собой классическую модель клиент-серверного взаимодействия. Модель состоит из одного сервера (сервер может быть задублирован) и множества клиентов. Публичный ip-адрес сервера обязательно должен быть статическим. Приватные внутренние адреса клиентов должны быть статически присвоены, тогда как публичные адрес клиентов могут быть как динамическими так и статическими. Все приватные адреса узлов, составляющих DVPN должны принадлежать одному сетевому сегменту.
Каждый клиент регистрирует соответствие своего приватного адреса и публичного адреса на сервере. После того, как это соответствие появилось в базе сервера, другие клиенты могут брать публичные адреса клиента и устанавливать с ним ipsec-соединение. Все клиенты используют VAM протокол для связи с сервером. Если происходят какие либо изменения в топологии – сервер автоматически обновляет свою базу соответствий.

Сетевая структура DVPN

DVPN поддерживает два типа сетевой топологии – full mesh и Hub-Spoke.
·          Full mesh DVPN: в таком варианте топологии все филиальные роутеры (Spokes) могут устанавливать защищенные  соединения непосредственно друг с другом и Hub в основном используется как устройство обмена роутинговой информацией. Как показано на рисунке 2, после того как клиент регистрируется на VAM сервере и получает информацию о публичном и приватном адресе Hub, клиент устанавливает постоянное соединение (туннель) с Hub. Каждый spoke может устанавливать туннельное соединение друг с другом, соединения будут временными, туннели будут разрушаться по прохождению времени таймаута (idle timeout) в случае отсутствия трафика между двумя spokes



·          Hub-Spoke DVPN. В топологии Hub-spoke туннели между двумя spokes не могут быть установлены, и данные между двумя spokes должны передаваться транзитом через Hub. Каждый spoke устанавливает постоянные туннельные соединения с Hub (рис.3).

Поддерживаемые свойства DVPN

1)     Работа DVPN с NAT

В случае, когда одному из spoke нужно установить VPN-соединение с другим spoke, возможны следующие варианты:
·       Если ни один из spokes не находится за NAT, туннель может быть установлен без каких либо дополнительных условий и оговорок;
·       Если только инициатор туннеля располагается за NAT, то в этом случае туннель может быть установлен сквозь NAT
·       Если принимающая сторона туннеля располагается за NAT, то первые пакеты должны быть пересланы через хаб до того, как противоположная сторона (которая не за NAT) начнет процесс установки туннеля spoke-spoke
·       Если обе стороны находятся за NAT, то туннель между ними не сможет быть установлен и трафик между ними должен будет проходить через Hub.
2)     Поддержка динамических адресов VAM-клиентов

Так как каждый VAM клиент регистрирует свой публичный и приватный адреса на VAM сервере и может брать публичные адреса остальных VAM клиентов (peer) с сервера, при их конфигурировании нет необходимости явно указывать публичный адрес назначения (противоположной стороны туннеля). Когда публичный адрес VAM клиента меняется – он регистрирует его на VAM сервере.
3)     Поддержка AAA при аутентификации VAM клиентов на VAM сервере
После того, как инициализационный процесс закончен, VAM клиент должен зарегистрироваться на VAM сервере. В случае необходимости, можно предусмотреть аутентификацию VAM клиента в процессе процесса регистрации на сервере. Протокол VAM поддерживает аутентификацию PAP и CHAP. VAM сервер использует сервис AAA для аутентификации клиентов в VPN домене.
4)     Идентификация VAM сервера и VAM клиента посредством pre-shared key
VAM клиент и VAM сервер должны быть сконфигурированы с одинаковыми pre-shared key для генерации ключей шифрования и  целостности данных. Клиент и сервер могут определить  одинаковые ли pre-shared key на обоих сторонах путем проверки результата шифрования пакетов и проверки целостности.
5)     Шифрование пакетов VAM протокола
Пакеты VAM протокола могут быть зашифрованы алгоритмами AES-128, DES, 3DES.
6)     Защита передаваемых данных протоколом IPsec
Данные в DVPN туннелях могут быть защищены IPsec (используя ESP протокол и IKE)
7)     VAM сервер централизованно управляет всеми политиками VPN домена
8)     VAM сервер поддерживает до 10 VPN доменов.

Реализация решения на трех маршрутизаторах MSR


Лабораторная установка состоит из трех роутеров HP MSR: MSR 30-40 в качестве HUB и VAM-сервера, MSR20-11 и MSR900 в качесте spokes. Так же поднят протокол динамического роутинга OSPF. Версии ComWare на всех роутерах: ComWare 5.2 R2104P02. Более черным шрифтом выделена конфигурация, которая непосредственно касается данного решения, бледным шрифтом - то что было по умолчанию или не относятся к данному решению напрямую.

### Конфигурация MSR30-40 (HUB и VAM-сервер) ###


#
 version 5.20, Release 2104P02, Standard
#
 sysname MSR30-40
#//Адрес, с которого VAM-сервер «слушает» информацию от hubs & spokes
 vam server ip 172.24.50.228
#
 domain default enable system
#
vlan 1
#
domain system
 access-limit disable
 state active
 idle-cut disable
 self-service-url disable
#//Настройка IKE peer
ike peer vam
 pre-shared-key cipher PMEfbsX04vk=
#// ipsec proposals
ipsec proposal vam
 esp authentication-algorithm sha1
 esp encryption-algorithm aes 256
#//Профиль для ipsec туннеля
ipsec profile vamp
 pfs dh-group2
 ike-peer vam
 proposal vam
 sa duration time-based 600
#//Настройка VAM-сервера без аутентификации узлов
vam server vpn 1
 server enable
 authentication-method none
 pre-shared-key simple 123
 hub private-ip 192.168.10.1
#//Настройка VAM-клиента (хаба)
vam client name dvpn1hub
 client enable
 server primary ip-address 172.24.50.228
 vpn 1
 pre-shared-key simple 123
#
user-group system
#
local-user admin
 password cipher .]@USE=B,53Q=^Q`MAF4<1!!
 authorization-attribute level 3
 service-type telnet
local-user user1
 password cipher -_'PV5%9O`CQ=^Q`MAF4<1!!
 authorization-attribute level 3
 service-type ssh
#
interface Aux0
 async mode flow
 link-protocol ppp
#
interface Cellular0/0
 async mode protocol
 link-protocol ppp
#
interface NULL0
#// интерфейс Loopback1
interface LoopBack1
 ip address 10.0.30.1 255.255.255.255
#
interface GigabitEthernet0/0
 port link-mode route
 ip address 172.24.50.228 255.255.255.0
#
interface GigabitEthernet0/1
 port link-mode route
#//Настройка туннельного интерфейса
interface Tunnel1
 ip address 192.168.10.1 255.255.255.0
 tunnel-protocol dvpn udp
 source GigabitEthernet0/0
 ospf network-type broadcast       //Для того, чтобы были возможно соединения spoke-spoke без участия hub
 ipsec profile vamp
 vam client dvpn1hub
#//настройка OSPF area0
ospf 100
 area 0.0.0.0
  network 192.168.10.0 0.0.0.255
  network 10.0.30.1 0.0.0.0
#
ssh server enable
 ssh user user1 service-type stelnet authentication-type password
#
 load xml-configuration
#
 load tr069-configuration
#
user-interface con 0
user-interface tty 13
user-interface aux 0
user-interface vty 0 4
 authentication-mode scheme
 protocol inbound ssh
#
### Конец конфигурации MSR30-40 (HUB и VAM-сервер) ###

### Конфигурация MSR900 (Spoke1) ###
#

 version 5.20, Release 2104P02
#
 sysname MSR900
#
 domain default enable system
#
 dar p2p signature-file flash:/p2p_default.mtd
#
 port-security enable
#
vlan 1
#
domain system
 access-limit disable
 state active
 idle-cut disable
 self-service-url disable
#
ike peer vam
 pre-shared-key cipher PMEfbsX04vk=
#
ipsec proposal vam
 esp authentication-algorithm sha1
 esp encryption-algorithm aes 256
#
ipsec profile vamp
 pfs dh-group2
 ike-peer vam
 proposal vam
 sa duration time-based 600
#
vam client name dvpn1spoke1
 client enable
 server primary ip-address 172.24.50.228
 vpn 1
 pre-shared-key simple 123
#
user-group system
#
local-user admin
 password cipher .]@USE=B,53Q=^Q`MAF4<1!!
 authorization-attribute level 3
 service-type telnet
local-user user1
 password cipher -_'PV5%9O`CQ=^Q`MAF4<1!!
 authorization-attribute level 3
 service-type ssh telnet
#
cwmp
 undo cwmp enable
#
interface Cellular0/0
 async mode protocol
 link-protocol ppp
#
interface Ethernet0/0
 port link-mode route
 ip address 172.24.50.225 255.255.255.0
 ipsec no-nat-process enable
#
interface Ethernet0/1
 port link-mode route
#
interface NULL0
#
interface LoopBack1
 ip address 10.0.90.1 255.255.255.255
#
interface Vlan-interface1
 ip address 192.168.1.1 255.255.255.0
#
interface Ethernet0/2
 port link-mode bridge
#
interface Ethernet0/3
 port link-mode bridge
#
interface Ethernet0/4
 port link-mode bridge
#
interface Ethernet0/5
 port link-mode bridge
#
interface Tunnel1
 ip address 192.168.10.2 255.255.255.0
 tunnel-protocol dvpn udp
 source Ethernet0/0
 ospf network-type broadcast
 ospf dr-priority 0
 ipsec profile vamp
 vam client dvpn1spoke1
#
ospf 100
 area 0.0.0.0
  network 192.168.10.0 0.0.0.255
  network 10.0.90.1 0.0.0.0
#
 ip route-static 0.0.0.0 0.0.0.0 172.24.50.1
#
ssh server enable
 ssh user user1 service-type stelnet authentication-type password
 ssh client authentication server 172.16.1.20 assign publickey 172.16.1.20
#
 load xml-configuration
#
 load tr069-configuration
#
user-interface con 0
user-interface tty 13
user-interface vty 0 4
 authentication-mode scheme
 protocol inbound ssh
#
return


### Конец конфигурации MSR900 (Spoke1) ###

### Конфигурация MSR20-11 (Spoke2) ###

#
 version 5.20, Release 2104P02
#
 sysname MSR20-11
#
 domain default enable system
#
 dar p2p signature-file flash:/p2p_default.mtd
#
 port-security enable
#
vlan 1
#
domain system
 access-limit disable
 state active
 idle-cut disable
 self-service-url disable
#
ike peer vam
 pre-shared-key cipher PMEfbsX04vk=
#
ipsec proposal vam
 esp authentication-algorithm sha1
 esp encryption-algorithm aes 256
#
ipsec profile vamp
 pfs dh-group2
 ike-peer vam
 proposal vam
 sa duration time-based 600
#
vam client name dvpn1spoke2
 client enable
 server primary ip-address 172.24.50.228
 vpn 1
 pre-shared-key simple 123
#
user-group system
#
local-user admin
 password cipher .]@USE=B,53Q=^Q`MAF4<1!!
 authorization-attribute level 3
 service-type telnet
local-user user1
 password cipher -_'PV5%9O`CQ=^Q`MAF4<1!!
 authorization-attribute level 3
 service-type ssh
#
cwmp
 undo cwmp enable
#
interface Aux0
 async mode flow
 link-protocol ppp
#
interface Cellular0/0
 async mode protocol
 link-protocol ppp
#
interface Ethernet0/0
 port link-mode route
 ip address 172.24.50.226 255.255.255.0
#
interface Serial0/0
 link-protocol ppp
#
interface NULL0
#
interface LoopBack1
 ip address 10.0.20.1 255.255.255.255
#
interface Vlan-interface1
 ip address 192.168.1.1 255.255.255.0
#
interface Ethernet0/1
 port link-mode bridge
#
interface Ethernet0/2
 port link-mode bridge
#
interface Ethernet0/3
 port link-mode bridge
#
interface Ethernet0/4
 port link-mode bridge
#
interface Tunnel1
 ip address 192.168.10.3 255.255.255.0
 tunnel-protocol dvpn udp
 source Ethernet0/0
 ospf network-type broadcast
 ospf dr-priority 0
 ipsec profile vamp
 vam client dvpn1spoke2
#
ospf 100
 area 0.0.0.0
  network 10.0.20.1 0.0.0.0
  network 192.168.10.0 0.0.0.255
#
ssh server enable
 ssh user user1 service-type stelnet authentication-type password
#
 load xml-configuration
#
 load tr069-configuration
#
user-interface tty 12
user-interface aux 0
user-interface vty 0 4
 authentication-mode scheme
 protocol inbound ssh
#
return
### Конец конфигурации MSR20-11 (Spoke2) ###




3 комментария:

  1. Приветствую!
    А вы пробовали делать на одном WAN интерфейсе с помощью subinterface два подключения по IPSEC?

    ОтветитьУдалить
  2. С помощью subinterface нет. Два подключения по ipsec делается по другому, либо в криптомапе две (или больше) записи, либо туннельные интерфейсы, которые собственно не привязываются к физическому.

    ОтветитьУдалить
  3. лучше поздно, чем никогда =)
    если в конфигурации настроен хаб на comware v7(например msr3020) а спок на comware v5 (например msr900)
    то для того, что бы туннель поднялся надо добавлять на вам-сервере
    - vam client hub1 compatible advpn0
    вот в этом документе на стр. 50 подробней http://www8.hp.com/h20195/v2/GetPDF.aspx/4AA5-7939ENW.pdf

    ОтветитьУдалить