ИВАН ПАНИН, инженер по технической информационной безопасности.
Сфера интересов: сетевые технологии, защита информации
Эффективный инструмент
для создания единой корпоративной сети
Сокращаем затраты на организацию межсетевого взаимодействия в части бизнес-процессов для территориально распределенной компании с помощью Virtual Private Network.
Экономическая выгода от использования технологии VPN довольно ощутима. Нет необходимости в дорогостоящих «чистых» каналах для создания единой корпоративной среды. Пользователями VPN могут быть как небольшие компании с несколькими офисами или торговой сетью в черте города, так и крупные холдинговые компании. За счет шифрования создаются закрытые каналы, позволяющие объединить территориально разрозненные подразделения организации в единую сеть. Причем именно для крупных компаний наиболее востребовано эффективное и безопасное межсетевое взаимодействие, позволяющее создать оптимальную корпоративную сеть, как с технической, так и с экономической точек зрения. (Начало статьи читайте в предыдущих номерах [1, 2].)
Point-to-Point GRE over IPsec
На рис. 1 представлена p2p GRE over IPsec [3, 4] топология с двумя центральными маршрутизаторами – основным и резервным. На каждом центральном настроен отдельный туннельный интерфейс для каждого периферийного. На периферийных в свою очередь настроено по два туннельных интерфейса, к основному и резервному. Headend-1 – является активным и пропускает трафик, в то время как резервный поддерживает дополнительные p2p GRE (Generic Routing Encapsulation) [5] туннели. Посредством протокола динамической маршрутизации определяется, какой из туннелей является активным либо можно выполнить балансировку нагрузки. Число Headend может быть сколь угодно большим, и они могут быть территориально разнесены.
В качестве протокола динамической маршрутизации используется EIGRP (Enhanced Interior Gateway Routing Protocol) [6], можно применить и другой, например OSPF [7]. В случае если активный Headend стал недоступен, активным становится резервный туннель. Если метрика для туннелей к Headend-1 и 2 одинакова, то после восстановления работоспособности первого маршрутизатора активным он не станет. Для автоматического переключения на основной Headend, после его восстановления, необходимо уменьшить метрику на основном туннельном интерфейсе по сравнению с резервным. Например, увеличить задержку на резервном туннельном интерфейсе периферийного маршрутизатора. По умолчанию для подсчета метрики используются bandwidth и delay.
Настройка p2p GRE на Headend-1
Создаем туннельный интерфейс для взаимодействия с Branch-1:
interface Tunnel1
description Tunnel_to_Branch-1
! Полоса пропускания 10000 Кбит
bandwidth 10000
ip address 10.1.1.1 255.255.255.0
! Поместим в таблицу маршрутизации как внутренний маршрут
ip summary-address eigrp 1 10.1.1.0 255.255.255.0
! Интервал 30 секунд для вычисления загрузки интерфейса,
! по умолчанию установлено значение 5 минут
load-interval 30
! Настройка соответствия между туннельным интерфейсом
! и физическим. В качестве адреса отправителя
! в выходящем пакете будет использоваться IP-адрес
! физического интерфейса(source), адрес получателя
! указываем при помощи параметра destination
tunnel source 172.16.1.1
tunnel destination 172.16.1.101
Создаем туннельный интерфейс для Branch-2, для Branch-n действуем аналогично:
interface Tunnel2
description Tunnel_to_Branch-2
bandwidth 10000
ip address 10.1.2.1 255.255.255.0
ip summary-address eigrp 1 10.1.2.0 255.255.255.0
tunnel source 172.16.1.1
tunnel destination 172.16.1.102
Создаем политику ISAKMP, которая будет использоваться при подключении Branch.
crypto isakmp policy 1
hash md5
encryption 3des
authentication pre-share
group 2
crypto isakmp key cisco123 address 0.0.0.0 0.0.0.0
Определяем список выполняемых операций для установки подлинности данных, конфиденциальности и сжатия:
crypto ipsec transform-set rtpset esp-des esp-md5-hmac
Создаем списки доступа для удаленных Branch. Весь трафик между сайтами инкапсулируется в p2p GRE-пакет дочпроцесса шифрования, поэтому необходимо открыть только GRE-протокол:
access-list 111 permit gre host 172.16.1.1 host 172.16.1.101
access-list 112 permit gre host 172.16.1.1 host 172.16.1.102
Для каждого Branch cоздаем динамическую крипто-карту rtp:
crypto map rtp 1 ipsec-isakmp
set peer 172.16.1.101
set transform-set rtpset
match address 111
crypto map rtp 2 ipsec-isakmp
set peer 172.16.1.102
set transform-set rtpset
match address 112
Внешний сетевой интерфейс: включаем VPN сервер, назначаем ACL, меняем значение MTU, MSS [8]:
access-list 101 remark 'External interface'
access-list 101 permit udp 172.16.1.0 0.0.0.255 host 172.16.1.1 eq isakmp
access-list 101 permit esp 172.16.1.0 0.0.0.255 host 172.16.1.1
access-list 101 permit ahp 172.16.1.0 0.0.0.255 host 172.16.1.1
access-list 101 deny ip any any log
int fa0/0
ip address 172.16.1.1 255.255.255.0
ip access-group 101 in
load-interval 30
ip mtu 1300
ip tcp adjust-mss 1260
crypto map rtp
Динамическая маршрутизация:
router eigrp 1
network 10.1.1.0 0.0.0.255
network 10.1.2.0 0.0.0.255
network 192.168.1.0 0.0.0.255
no auto-summary
Конфигурация Headend-2 аналогична Headend-1, отличия лишь в IP-адресах, согласно рис. 1.
Рисунок 1. p2p GRE over IPsec Failover Headend topology
Настройка p2p GRE на Branch-1
Для задействования механизма автоматического переключения на основной маршрутизатор изменяем задержку пропускной способности туннельных интерфейсов. Для tunnel 1 установлено значение 100, а для tunnel 2 – 200, таким образом уменьшаем метрику к Headend-1 по сравнению с Headend-2.
crypto isakmp policy 1
hash md5
encryption 3des
authentication pre-share
group 2
crypto isakmp key cisco123 address 172.16.1.1
crypto isakmp key cisco123 address 172.16.1.2
crypto ipsec transform-set rtpset esp-des esp-md5-hmac
access-list 111 permit gre host 172.16.1.101 host 172.16.1.1
access-list 112 permit gre host 172.16.1.101 host 172.16.1.2
crypto map rtp 1 ipsec-isakmp
set peer 172.16.1.1
set transform-set rtpset
match address 111
crypto map rtp 2 ipsec-isakmp
set peer 172.16.1.2
set transform-set rtpset
match address 112
access-list 101 remark 'External interface'
access-list 101 permit udp 172.16.1.0 0.0.0.255 host 172.16.1.101 eq isakmp
access-list 101 permit esp 172.16.1.0 0.0.0.255 host 172.16.1.101
access-list 101 deny ip any any log
int fa0/0
ip address 172.16.1.101 255.255.255.0
ip access-group 101 in
ip mtu 1400
ip tcp adjust-mss 1360
load-interval 30
crypto map rtp
interface Tunnel1
description Tunnel_to_Headend-1
bandwidth 100
! Задержка пропускной способности интерфейса
delay 100
ip address 10.1.1.2 255.255.255.0
ip summary-address eigrp 1 10.1.1.0 255.255.255.0
tunnel source 172.16.1.101
tunnel destination 172.16.1.1
interface Tunnel2
description Tunnel_to_Headend-2
bandwidth 1000
delay 200
ip address 10.2.1.2 255.255.255.0
ip summary-address eigrp 1 10.2.1.0 255.255.255.0
load-interval 30
tunnel source 172.16.1.101
tunnel destination 172.16.1.2
router eigrp 1
network 10.1.1.0 0.0.0.255
network 10.2.1.0 0.0.0.255
network 192.168.101.0 0.0.0.255
no auto-summary
Конфигурация Branch-2(n) аналогична Branch-1, отличия лишь в IP-адресах, согласно рис. 1.
Преимущества: Сеть может быть построена как с использованием одного, так и нескольких центральных узлов для обеспечения резервирования устройств и каналов связи. Пересылка информации об IP-сетях осуществляется по зашифрованным туннелям между подразделениями компании при помощи протоколов динамической маршрутизации. Поддерживается на всех IOS-маршрутизаторах. Возможность назначить отдельную QoS-политику для каждого туннеля. Обеспечивает передачу широковещательного и маршрутизируемого трафика через туннели. Основным преимуществом и отличием от технологии IPSec VPN Site-to-Site является поддержка протоколов динамической маршрутизации IP multicast-трафик может передаваться через VPN-туннель.
Недостатки: Основным недостатком является статическая конфигурация каждого p2p GRE-туннельного интерфейса, вследствие чего при добавлении нового Branch необходимо настраивать каждый Headend-маршрутизатор. То есть реализует функции, аналогичные DMVPN, но требует более объемной и детальной конфигурации.
IPSec Virtual Tunnel Interface
IPSec virtual tunnel interfaces (VTIs) [9] имеет множество преимуществ перед другими вариантами IPsec, включая динамическую маршрутизацию и передачу информации без дополнения p2p GRE и mGRE (используемого в DMVPN). При создании VPN мы должны четко разграничить центральный и периферийные узлы, так как их конфигурация может значительно различаться, а именно использование динамических и статических VTI.
Static VTI (SVTI) очень похож на реализацию point-to-point GRE туннеля. С технической точки зрения, у этого решения те же самые преимущества и недостатки, как и у реализации GRE, отличие заключается лишь в том, что VTIs поддерживает только IP (unicast и multicast), в то время как GRE поддерживает и другие протоколы (non -ip). С точки зрения конфигурации, отличие от p2p GRE, будет заключаться в другом способе настройки туннельного интерфейса.
Dynamic VTI (DVTI) реализован через virtual-templates, расширяющегося до индивидуальных virtual-access, и очень похож на реализацию DMVPN. Конфигурация virtual-access-интерфейса клонируется для каждого периферийного узла из virtual-template.
Статическая конфигурация туннелей требует наличия большого количества туннельных интерфейсов. Замена индивидуальных SVTI на DVTI на центральных узлах позволит значительно упростить конфигурацию. Комбинация DVTI-SVTI [9, 10] требует минимальной конфигурации по сравнению с p2p GRE и DMVPN. В таблице приведены дополнительные комбинации.
Таблица 1. Комбинации VTI
Центральный узел
|
Периферийный узел
|
Static VTI
|
Static VTI
|
Dynamic VTI
|
Static VTI
|
Dynamic VTI
|
Static crypto map
|
Dynamic VTI
|
Easy VPN remote
|
Пример использования отказоустойчивой схемы DVTI [11, 12] на центральных узлах и SVTI на периферийных узлах представлен на рис. 2.
Рисунок 2. IPSec VTI Failover Headend topology
Настройка DVTI на Headend-1
Список контроля доступа для внешнего сетевого интерфейса. Открываем только необходимые порты: Authentication Header Protocol(AHP), ESP и UPD ISAKMP:
access-list 101 remark 'Ext int'
access-list 101 permit udp 172.16.1.0 0.0.0.255 host 172.16.1.1 eq isakmp
access-list 101 permit esp 172.16.1.0 0.0.0.255 host 172.16.1.1
access-list 101 permit ahp 172.16.1.0 0.0.0.255 host 172.16.1.1
access-list 101 permit icmp 172.16.1.0 0.0.0.255 172.16.1.0 0.0.0.255 echo
access-list 101 permit icmp 172.16.1.0 0.0.0.255 172.16.1.0 0.0.0.255 echo-reply
Политика инспектирования трафика:
ip inspect name FW isakmp
ip inspect name FW icmp
ip inspect name FW udp
ip inspect name FW tcp
Внешний сетевой интерфейс: назначаем список доступа, устанавливаем значения MTU, MSS и интервал для вычисления загрузки интерфейса, ассоциируем политику инспектирования FW.
int fa0/0
ip address 172.16.1.1 255.255.255.0
ip inspect FW out
ip access-group 101 in
load-interval 30
ip mtu 1300
ip tcp adjust-mss 1260
Для быстрой коммутации IP-пакетов необходимо включить Cisco Express Forwarding:
ip cef
Создаем политику ISAKMP, которая будет использоваться при подключении Branch.
crypto isakmp policy 1
hash md5
encryption 3des
authentication pre-share
group 2
crypto isakmp key cisco123 address 0.0.0.0 0.0.0.0
crypto isakmp invalid-spi-recovery
crypto isakmp keepalive 120 30 periodic
Определяем группу Diffie-Hellman, указываем алгоритмы хеш-функции и шифрования, разрешаем аутентификацию с любого IP-адреса с ключом cisco123. Ресинхронизация базы SA в случае потери peer и keepalive, интервал для Dead Peer Detection (DPD):
Включаем виртуальные профили:
virtual-profile virtual-template 1
ISAKMP-профиль [13] необходим для ассоциации параметров с IPSEC-туннелем. Связываем динамический VTI-интерфейс с IP-адресом внешнего физического интерфейса.
crypto isakmp profile isakmp_prof
keyring default
match identity address 0.0.0.0
virtual-template 1
local-address 172.16.1.1
Определяем список выполняемых операций для установки подлинности данных, конфиденциальности и сжатия:
crypto ipsec transform-set rtp_set esp-des esp-md5-hmac
IPSec-профиль [11] определяет параметры, которые будут использоваться для шифрования между IPSEC-маршрутизаторами. Необходим для ассоциации isakmp-профиля, transform-set и Perfect Forward Secrecy (PFS)[11] с VTI:
crypto ipsec profile ipsec_prof
set transform-set rtp_set
set pfs group2
set isakmp-profile isakmp_prof
Создание ключа для аутентификации EIGRP:
key chain vti_chain
key 10
key-string cisco101
Loopbaсk-интерфейс для Virtual-Template. Каждый интерфейс в сети с последовательными линиями связи будет требовать отдельную подсеть. Так как каждая последовательная линия связи имеет лишь два узла, то остаются неиспользованными 252 адреса на каждой последовательной линии. Непронумерованные (unnumbered) IP позволяют «позаимствовать» адрес у интерфейса локальной сети для использования в качестве исходного адреса для маршрутизируемых обновлений и пакетов с этого интерфейса.
interface Loopback1
ip address 10.1.1.1 255.255.255.255
Создаем Virtual-Template интерфейс:
interface Virtual-Template1 type tunnel
! Полоса пропускания
bandwidth 10000
! Ассоциация с loopback
ip unnumbered Loopback1
! Ассоциация с созданным ранее ключом vti_chain для аутентификации EIGRP-cоседей
ip authentication mode eigrp 1 md5
ip authentication key-chain eigrp 1 vti_chain
! Добавляем в таблицу маршрутизации как внутренний маршрут
ip summary-address eigrp 1 10.1.1.1 255.255.255.255
! Ведение журнала UPDOWN состояний подинтерфейсов
logging event subif-link-status
! Соответствие между туннельным интерфейсом и физическим интерфесом
tunnel source fa0/0
! Режим инкапсуляции туннеля
tunnel mode ipsec ipv4
! Ассоциация с ipsec-профилем
tunnel protection ipsec profile ipsec_prof
Динамическая маршрутизация:
router eigrp 1
network 10.1.1.1 0.0.0.0
network 192.168.1.0 0.0.0.255
no auto-summary
Конфигурация Headend-2 аналогична Headend-1, отличия лишь в IP-адресах согласно рис. 2.
Настройка SVTI на Branch-1
Механизм переключения на основной Headend-маршрутизатор аналогичен реализованному в p2p GRE over IPsec:
access-list 101 remark 'Ext int'
access-list 101 permit udp 172.16.1.0 0.0.0.255 host 172.16.1.101 eq isakmp
access-list 101 permit esp 172.16.1.0 0.0.0.255 host 172.16.1.101
access-list 101 permit ahp 172.16.1.0 0.0.0.255 host 172.16.1.101
access-list 101 permit icmp 172.16.1.0 0.0.0.255 172.16.1.0 0.0.0.255 echo
access-list 101 permit icmp 172.16.1.0 0.0.0.255 172.16.1.0 0.0.0.255 echo-reply
int fa0/0
ip access-group 101 in
ip access-group 101 in
load-interval 30
ip mtu 1300
ip tcp adjust-mss 1260
key chain vti_chain
key 10
key-string cisco101
crypto isakmp policy 1
hash md5
encryption 3des
authentication pre-share
group 2
crypto isakmp key cisco123 address 172.16.1.1
crypto isakmp key cisco123 address 172.16.1.2
crypto isakmp invalid-spi-recovery
crypto isakmp keepalive 120 30 periodic
crypto ipsec transform-set rtp_set esp-des esp-md5-hmac
crypto ipsec profile ipsec_prof
set transform-set rtp_set
set pfs group2
interface Loopback1
ip address 10.1.1.101 255.255.255.255
interface Loopback2
ip address 10.1.2.101 255.255.255.255
interface Tunnel1
description Tunnel_to_Headend-1
bandwidth 1000
delay 100
ip unnumbered Loopback1
ip authentication mode eigrp 1 md5
ip authentication key-chain eigrp 1 vti_chain
tunnel source fa0/0
tunnel destination 172.16.1.1
tunnel mode ipsec ipv4
tunnel path-mtu-discovery
tunnel protection ipsec profile ipsec_prof
interface Tunnel2
description Tunnel_to_Headend-2
bandwidth 1000
delay 200
ip unnumbered Loopback2
ip authentication mode eigrp 1 md5
ip authentication key-chain eigrp 1 vti_chain
tunnel source fa0/0
tunnel destination 172.16.1.2
tunnel mode ipsec ipv4
tunnel path-mtu-discovery
tunnel protection ipsec profile ipsec_prof
router eigrp 1
network 10.1.1.101 0.0.0.0
network 10.1.2.101 0.0.0.0
network 192.168.101.0 0.0.0.255
no auto-summary
Конфигурация Branch-2(n) аналогична Branch-1, отличия лишь в IP-адресах согласно рис. 2.
Преимущества: Гибкость dynamic VTI в комбинациях с static crypto maps, static VTIs и Easy VPN, поддержка IP multicast, динамические протоколы маршрутизации, все туннели (основные и резервные) предустановленны. Работа VTI подобна работе реального интерфейса, т.е. могут быть применены QoS, firewall, ACL, Netflow. По сравнению с DMVPN конфигурация периферийных узлов проще, т.к. нет необходимости использовать mGRE и NHRP.
Недостатки: Отсутствует поддержка non-IP протоколов. Сложность поиска неисправностей по сравнению с p2p GRE over IPsec.
***
VTI – сравнительно новая технология, может быть использована при тех же требованиях, как p2p GRE over IPsec и DMVPN. Перечень платформ, поддерживающих технологию, доступен по адресу [3].
- Панин И. Корпоративные VPN на базе Cisco. //Системный администратор, №6, 2009 г. – С. 78-84.
- Панин И. WebVPN на базе Cisco IOS. //Системный администратор, №7, 2009 г. – С. 66-69.
- IPsec VPN WAN Design Overview – http://www.cisco.com/en/US/docs/solutions/Enterprise/WAN_and_MAN/IPSec_Over.html.
- Point-to-Point GRE over IPSec – http://www.cisco.com/en/US/docs/solutions/Enterprise/WAN_and_MAN/P2P_GRE_IPSec/p2pGRE.pdf.
- Generic Routing Encapsulation – http://ru.wikipedia.org/wiki/GRE.
- EIGRP – http://xgu.ru/wiki/EIGRP.
- OSPF – http://xgu.ru/wiki/OSPF.
- Resolve IP Fragmentation, MTU, MSS – http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml.
- IPSec Virtual Tunnel Interface – http://www.cisco.com/en/US/docs/ios/12_3t/ 12_3t14/feature/guide/gtIPSctm.htm.
- Configuring Cisco Easy VPN with IPSec Dynamic Virtual Tunnel Interface (DVTI) – https://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6586/ps6635/prod_white_paper0900aecd803645b5.html.
- Configuring Dual Tunnel with Cisco IOS Easy VPN Using Auto Configuration Update – http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6586/ps6635/prod_white_paper0900aecd8039e301_ps6659_Products_White_Paper.html.
- Hub and Spoke VPN with VTI, dual hubs, spokes with redundant internet access – http://inetpro.org/wiki/Hub_and_Spoke_VPN_with_VTI,_dual_hubs,_spokes_with_redundant_internet_access#Spoke_Internet_uplinks.
- Cisco IOS Security Command Reference – http://www.cisco.com/en/US/docs/ios/security/command/reference/sec_book.html.