URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 16309
[ Назад ]

Исходное сообщение
"удерживать ipsec туннель поднятым без внутренего трафика"

Отправлено philippov , 20-Май-08 03:32 
Подключение lan-2-multilan. С одной стороны Cisco ASA в пассивном режиме. С другой - Linux клиент с установленым ipsec-tools, инициирует соединение. На клиенте запускаем setkey и racoon. В логах видим: ISAKMP-SA Established, IPsec-SA Established ESP/Tunnel между публичными адресами хостов. Если нет трафика из внутренней сети клиента в туннель, то setkey -D выдает No SAD Entries. Доступа из сетей "за Cisco" в сеть клиента нет. Стоит сделать пинг из сети клиента в любую сеть "за Cisco" - сразу появляются записи SAD для этой сети и туннель работает в обоих направлениях. В моей ситуации - сетей "за Cisco" много, потому делать пинг в каждую из них - невозможно.

Вопрос. Как автоматически поднимать туннель для всех сетей, если во внутренней сети нет траффика ? В некоторых железячных клиентах есть такие опции в конфигурации.

- If a packet matches this “eroute” and no SA exists then try to create one: ON
- Continually try to keep the tunnel (IPSec session) up regardless of whether we have any data to route: ON

Спасибо.


Содержание

Сообщения в этом обсуждении
"удерживать ipsec туннель поднятым без внутренего трафика"
Отправлено philippov , 21-Май-08 10:42 
Например, параметр Dead Peer Detection в настройках racoon.conf, как работает ?
Нашел в одном мануале следующее: "Для регулярной проверки соединения используется расширение IKE, называемое Dead Peer Detection (DPD). DPD способно проверять доступность крайних точек с кратностью в несколько секунд"

Если DPD проверяет доступность крайних точек, генерирует ли он трафик в туннеле ?
Выставляю dpd_delay 2; dpd_retry 5; dpd_maxfail 5;
Траффика нет. Базы SAD не появляются. Как тогда DPD должен отреагировать, на недоступность точек ??


"удерживать ipsec туннель поднятым без внутренего трафика"
Отправлено SergTel , 23-Май-08 06:49 
>[оверквотинг удален]
>Нашел в одном мануале следующее: "Для регулярной проверки соединения используется расширение IKE,
>называемое Dead Peer Detection (DPD). DPD способно проверять доступность крайних точек
>с кратностью в несколько секунд"
>
>Если DPD проверяет доступность крайних точек, генерирует ли он трафик в туннеле
>?
>Выставляю dpd_delay 2; dpd_retry 5; dpd_maxfail 5;
>Траффика нет. Базы SAD не появляются. Как тогда DPD должен отреагировать, на
>недоступность точек ??
>

1)Доступность проверяется не по туннелю
2)2+2


"удерживать ipsec туннель поднятым без внутренего трафика"
Отправлено philippov , 23-Май-08 13:14 
>>Если DPD проверяет доступность крайних точек, генерирует ли он трафик в туннеле
>>?
>>Выставляю dpd_delay 2; dpd_retry 5; dpd_maxfail 5;
>>Траффика нет. Базы SAD не появляются. Как тогда DPD должен отреагировать, на
>>недоступность точек ??
>>
>
>1)Доступность проверяется не по туннелю
>2)2+2

Спасибо за ответ. Немного не понял второй пункт.

Путем изучения дебуг-логов и многочисленных экспериментов, удалось выявить закономерность - тунель обрывается через 30 минут после последнего пройденого пакета по тунелю. Обрыв происходит путем ISAKMP-SA Expired (фаза 1). Что скорее всего обсловлено настройками DPD на Cisco (к которому у меня нет доступа). Эта проблема, впринципе, решается выставлением на клиенте (racoon.conf) параметров lifetime со значениеми меньшим чем 30 минут. Т.е. клиент обновляет базы SAD SPD раньше чем тунель оборвет Cisco из-за ситуации "мертвый клиент" и таким образом генерируется трафик. Т.е. после создания тунеля - он автоматечески удерживается частыми (меньше 30 минут) обновлениями ключей первой и второй фазы.

Остается открытым вопрос - как поднять тунель, без трафика из сети со стороны клиента при автоматическом (запланированом или случайном) перезапуске сервиса или всей системы в целом. Первое, что приходит в голову - однократный пинг по тунелю. Проблема, - а если сетей за тунелем несколько - 5 или 15. Пинг необходимо делать в каждую сеть, к определенному хосту (для получения ответа), который может не быть оперативным в этот момент и к тому же система усложняется при увеличении кол-ва сетей. Этот вариант остается как запасной, но думаю есть более верные решения.

Какие есть мнения ???    


"удерживать ipsec туннель поднятым без внутренего трафика"
Отправлено SergTel , 23-Май-08 13:24 
>[оверквотинг удален]
>стороны клиента при автоматическом (запланированом или случайном) перезапуске сервиса или всей
>системы в целом. Первое, что приходит в голову - однократный пинг
>по тунелю. Проблема, - а если сетей за тунелем несколько -
>5 или 15. Пинг необходимо делать в каждую сеть, к определенному
>хосту (для получения ответа), который может не быть оперативным в этот
>момент и к тому же система усложняется при увеличении кол-ва сетей.
>Этот вариант остается как запасной, но думаю есть более верные решения.
>
>
>Какие есть мнения ???

ICMP пакет рулит!



"удерживать ipsec туннель поднятым без внутренего трафика"
Отправлено philippov , 24-Май-08 10:11 
>>5 или 15. Пинг необходимо делать в каждую сеть, к определенному
>>хосту (для получения ответа), который может не быть оперативным в этот
>>момент и к тому же система усложняется при увеличении кол-ва сетей.
>>Этот вариант остается как запасной, но думаю есть более верные решения.
>>
>>Какие есть мнения ???
>
>ICMP пакет рулит!
>

Последним экспериментом (с короткими lifetime 25 и 20 минут) удерживаю тунель уже на протяжении 8 часов без трафика, что и требовалось доказать. Для поднятия тунеля сделал небольшой скрипт исполняемый после запуска racoon. Скрипт поочередно считывает все сети описанные в setkey.conf и делает ping -c 1 -I eth0 $net_rem
Базы SAD появляются даже если $net_rem находится в виде 10.0.0.0, грубо говоря, нет необходимости пинговать определенный хост. Но грызут меня сомнения, неужели железячные рутеры-клиенты с ценой в 700 евро, у которых есть встроеная опция удерживать тунель и создавать SAD автоматически (без трафика) - также используют пинг ???