Поиск по этому блогу

среда, 20 января 2010 г.

Запасной VPN (ipsec failover high ava...


Запасной VPN (ipsec failover high availability stateless)




0. Вводная

Думаю не нужно объяснять зачем это нужно и где применяется.  Всё просто
- если для вас потеря vpn соединения критична и работа останавливается,
возможно стоит подумать о конфигурировании некоторой избыточности.
Основных подходов в данном случае два:



- отказоустойчивый узел из двух или более устройств при этом активным
является только одно устройство и данные о сессиях протокола более
высокого уровня не синхронизируются между устройствами (stateless);

- отказоустойчивый узел из двух или более устройств, активно только одно, данные о сессиях синхронизированы (stateful).



Как очевидно основное отличие между двумя подходами в том, что при
переключении с основного на резервное устройство и наборот текущие
сессии ipsec сбрасываются. Конечно ситуация отрабатывается протоколами
инкапсулироваными в ipsec пакеты, как tcp/udp, и скорее всего
произойдет только некоторое "замораживание" соединения. Из опыта могу
сказать, что задержка обычно немногим больше задержки возникающей при
создании нового туннеля. Для большинства приложений этого достаточно.



1. Схема













Шифрации подлежит трафик

10.10.200.0/24  <-> 10.10.1.0/24

10.10.100.0/24  <-> 10.10.1.0/24



2. Конфигурация



Удивительно, но процесс настройки оказался достаточно простым. Основой всего является протокол HSRP
(если словосочетание незнакомо, крайне рекомендую пройтись по ссылке) и
ipsec собственно. Я не буду вдаваться в нюансы настройки HSRP или
ipsec, для этого были написаны специальные заметки -
HSRP, static ipsec . :)



По сути изменяется всего две команды.

В первую очередь необходимо добавить имя в конфигурацию hsrp



//конфигурация hsrp, добавлено имя

vpn0(config-if)#standby version 2
vpn0(config-if)#standby 100 ip 10.10.11.1
vpn0(config-if)#standby 100 priority 150
vpn0(config-if)#standby 100 preempt
vpn0(config-if)#standby 100 name vpn

Вторая
команда - при применении crypto map к интерфейсу указывается имя hsrp
группы которая будет обеспечивать отказоустойчивость.

//применение отказоустойчивого vpn
vpn0(config-if)#crypto map cr_outside redundancy vpn

В качестве дополнения приведу полную конфигурацию.

vpn0

Базовая конфигурация





crypto isakmp policy 200
 encr aes
 authentication pre-share
 group 2
crypto isakmp key MyKey address 10.10.10.10
!
crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac
!
crypto map cr_outside 200 ipsec-isakmp
 set peer 10.10.10.10
 set transform-set ts-aes-sha
 match address 120
!
interface FastEthernet0/0
 ip address 10.10.11.10 255.255.255.0
 duplex auto
 speed auto
 standby version 2
 standby 100 ip 10.10.11.1
 standby 100 priority 150
 standby 100 preempt
 standby 100 name vpn
 crypto map cr_outside redundancy vpn
!
access-list 120 permit ip 10.10.200.0 0.0.0.255 10.10.1.0 0.0.0.255
access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.200.0 0.0.0.255
access-list 120 permit ip 10.10.100.0 0.0.0.255 10.10.1.0 0.0.0.255
access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.100.0 0.0.0.255







vpn1
Совершенна идентична vpn0 за исключением адреса интерфейса и приоритета hsrp


crypto isakmp policy 200
 encr aes
 authentication pre-share
 group 2
crypto isakmp key MyKey address 10.10.10.10
!
crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac
!
crypto map cr_outside 200 ipsec-isakmp
 set peer 10.10.10.10
 set transform-set ts-aes-sha
 match address 120


interface FastEthernet0/0
 ip address 10.10.11.20 255.255.255.0
 duplex auto
 speed auto
 standby version 2
 standby 100 ip 10.10.11.1
 standby 100 priority 101
 standby 100 preempt
 standby 100 name vpn
 crypto map cr_outside redundancy vpn


access-list 120 permit ip 10.10.200.0 0.0.0.255 10.10.1.0 0.0.0.255
access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.200.0 0.0.0.255
access-list 120 permit ip 10.10.100.0 0.0.0.255 10.10.1.0 0.0.0.255
access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.100.0 0.0.0.255




client1
Простейшее из возможного

crypto isakmp policy 200
 encr aes
 authentication pre-share
 group 2
crypto isakmp key MyKey address 10.10.11.1
!
crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac
!
crypto map cr_outside 200 ipsec-isakmp
 set peer 10.10.11.1
 set transform-set ts-aes-sha
 match address 120

interface FastEthernet0/0
 ip address 10.10.10.10 255.255.255.0
 duplex auto
 speed auto
 crypto map cr_outside

access-list 120 permit ip 10.10.200.0 0.0.0.255 10.10.1.0 0.0.0.255
access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.200.0 0.0.0.255
access-list 120 permit ip 10.10.100.0 0.0.0.255 10.10.1.0 0.0.0.255
access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.100.0 0.0.0.255



3. Проверка
Проверялось
всё это хозяйство путем установки telnet сессии с маршрутизатора srv на
client1 и принудительной остановкой интерфейса
FastEthernet0/0 на vpn0. Показательно, что сессия telnet при этом не разорвалась хотя "замерла" на примерно 10-15 секунд.

Также
необходимо обратить внимание на правильную маршрутизацию внутри vpn
рутеров, в моём случае это сделано с помощью простейшей конфигурации
ospf, подобной описанной в одной из прошлых заметок, однако можно использовать тот же hsrp с опцией трекинга outside интерфейса.