The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Racoon/IPSec - отказоустойчивость."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT)
Изначальное сообщение [ Отслеживать ]

"Racoon/IPSec - отказоустойчивость."  +/
Сообщение от Nerian email on 04-Фев-11, 12:40 
Добрый день!

На одной стороне стоит ZyWALL 35, с двумя внешними интерфейсами от разных провайдеров. В общем Ipsec настроен так - что удалённая сторона (к примеру Linux роутер), может на любой из двух внешних IP ZyWALL создать подключение IpSec.

Но как сделать чтобы было поднято два одновременно канала?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Racoon/IPSec - отказоустойчивость."  +/
Сообщение от Nerian email on 04-Фев-11, 15:48 
> Добрый день!
> На одной стороне стоит ZyWALL 35, с двумя внешними интерфейсами от разных
> провайдеров. В общем Ipsec настроен так - что удалённая сторона (к
> примеру Linux роутер), может на любой из двух внешних IP ZyWALL
> создать подключение IpSec.
> Но как сделать чтобы было поднято два одновременно канала?

Не стал заморачиваться. По крону каждые 30 секунд проверяю.

#!/bin/sh

# TODO: ADD FORCE OPTION FOR REPLACE

IPSEC_GW1="XX.XX.XX.XX"
IPSEC_GW2="XX.XX.XX.XX"
IPSEC_NUM="ipsec3"
REMOTE_IP="192.168.XX.XX"

FLAG_RS=0

IPSEC_CFG=/etc/sysconfig/network-scripts/ifcfg-${IPSEC_NUM}

ping -c 3 -s 100 ${IPSEC_GW1} >/dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "** PRIMARY GATEWAY ${IPSEC_GW1} is DOWN"
    ping -c 3 -s 100 ${IPSEC_GW2} >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "** BACKUP GATEWAY ${IPSEC_GW2} is DOWN!"
        echo "** ALL GATEWAY IS DOWN! QUIT"
    else
        echo "** BACKUP GATEWAY ${IPSEC_GW2} is UP!"
        echo "** SWITCHING TO BACKUP GATEWAY"
        sed -i "s/^DST=${IPSEC_GW1}$/DST=${IPSEC_GW2}/g" ${IPSEC_CFG}
        FLAG_RS=1
        echo "** DONE"
    fi
else
    echo "** PRIMARY GATEWAY ${IPSEC_GW1} is UP"
    grep "^DST=${IPSEC_GW1}$" ${IPSEC_CFG}
    if [ $? -ne 0 ]; then
        echo "** SWITCHING TO PRIMARY GATEWAY"
        sed -i "s/^DST=${IPSEC_GW2}$/DST=${IPSEC_GW1}/g" ${IPSEC_CFG}
        FLAG_RS=1
        echo "** DONE"
    else
        echo "** ALLREADY IN PRIMARY GATEWAY! QUIT"
    fi
fi

if [ $FLAG_RS -eq 0 ]; then
    echo "** PING REMOTE IP ${REMOTE_IP}..."
    ping -c 3 -s 100 ${REMOTE_IP} >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "** SET RESET FLAG PING REMOTE ADDRESS"
        FLAG_RS=1;
    fi
fi

if [ $FLAG_RS -eq 1 ]; then
        echo "** RESET SESSION"
        ifdown ${IPSEC_NUM}
        ifup ${IPSEC_NUM}
else
        echo "** NO RESET REQUIRED"
fi

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Racoon/IPSec - отказоустойчивость."  +/
Сообщение от Nerian email on 04-Фев-11, 16:34 
Более быстрый и полный скрипт (-W 1 для пинга), выполнение в самом худшем случае до 10 секунд:


#!/bin/sh

# TODO: ADD FORCE OPTION FOR REPLACE

IPSEC_GW1="XX.XX.XX.XX"
IPSEC_GW2="XX.XX.XX.XX"
IPSEC_NUM="ipsec0"
REMOTE_IP="192.168.XX.XX"

FLAG_RS=0

IPSEC_CFG=/etc/sysconfig/network-scripts/ifcfg-${IPSEC_NUM}

ping -c 3 -s 100 -W 1 ${IPSEC_GW1} >/dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "** PRIMARY GATEWAY ${IPSEC_GW1} is DOWN"
    ping -c 3 -s 100 -W 1 ${IPSEC_GW2} >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "** BACKUP GATEWAY ${IPSEC_GW2} is DOWN!"
        echo "** ALL GATEWAY IS DOWN! QUIT"
    else
        echo "** BACKUP GATEWAY ${IPSEC_GW2} is UP!"
        grep "^DST=${IPSEC_GW2}$" ${IPSEC_CFG}
        if [ $? -ne 0 ]; then
            echo "** SWITCHING TO BACKUP GATEWAY"
            sed -i "s/^DST=${IPSEC_GW1}$/DST=${IPSEC_GW2}/g" ${IPSEC_CFG}
            FLAG_RS=1
            echo "** DONE"
        else
            echo "** ALLREADY IN BACKUP GATEWAY! QUIT"
        fi
    fi
else
    echo "** PRIMARY GATEWAY ${IPSEC_GW1} is UP"
    grep "^DST=${IPSEC_GW1}$" ${IPSEC_CFG}
    if [ $? -ne 0 ]; then
        echo "** SWITCHING TO PRIMARY GATEWAY"
        sed -i "s/^DST=${IPSEC_GW2}$/DST=${IPSEC_GW1}/g" ${IPSEC_CFG}
        FLAG_RS=1
        echo "** DONE"
    else
        echo "** ALLREADY IN PRIMARY GATEWAY! QUIT"
    fi
fi

if [ $FLAG_RS -eq 0 ]; then
    echo "** PING REMOTE IP ${REMOTE_IP}..."
    ping -c 3 -s 100 -W 1 ${REMOTE_IP} >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "** SET RESET FLAG PING REMOTE ADDRESS"
        FLAG_RS=1;
    fi
fi

if [ $FLAG_RS -eq 1 ]; then
        echo "** RESET SESSION"
        ifdown ${IPSEC_NUM}
        ifup ${IPSEC_NUM}
else
        echo "** NO RESET REQUIRED"
fi

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Racoon/IPSec - отказоустойчивость."  +/
Сообщение от McLeod095 (ok) on 07-Фев-11, 15:05 
> Добрый день!
> На одной стороне стоит ZyWALL 35, с двумя внешними интерфейсами от разных
> провайдеров. В общем Ipsec настроен так - что удалённая сторона (к
> примеру Linux роутер), может на любой из двух внешних IP ZyWALL
> создать подключение IpSec.
> Но как сделать чтобы было поднято два одновременно канала?

Уважаемый! А может Вы все таки перестанете отвечать самому себе и попытаетесь внятно задать вопрос!
Сам по себе ipsec может хоть 100 подключений одновременно держать, да и от ipsec это не зависит.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Racoon/IPSec - отказоустойчивость."  +/
Сообщение от Nerian email on 07-Фев-11, 15:26 
>> Добрый день!
>> На одной стороне стоит ZyWALL 35, с двумя внешними интерфейсами от разных
>> провайдеров. В общем Ipsec настроен так - что удалённая сторона (к
>> примеру Linux роутер), может на любой из двух внешних IP ZyWALL
>> создать подключение IpSec.
>> Но как сделать чтобы было поднято два одновременно канала?
> Уважаемый! А может Вы все таки перестанете отвечать самому себе и попытаетесь
> внятно задать вопрос!
> Сам по себе ipsec может хоть 100 подключений одновременно держать, да и
> от ipsec это не зависит.

Если внятно.
На одной стороне ZyWALL35 с двумя провайдерами. Для простоты назовем их как ZW35-ISP1 и ZW35-ISP2. Во внутренней сети за ZyWALL35 есть определённый ип. Пусть будет 192.168.102.200.

На удалённой стороне, компьютер, под управлением Linux за NAT. То есть по сути имеет только один внутренний IP, пусть он будет 192.168.1.100.

Задача следующая:
обеспечить отказоустойчивую связь через IPSec с Linux компьютера 192.168.1.100, на 192.168.102.200 стоящий за ZyWALL35.

К примеру, сейчас у меня постоянно установлен только один тунель, в случае падения которого резервный вышеописанным скриптом автоматически поднимается.

Для поднятия тунеля, создал алиас на стороне линукса для интерфейса на котором ип 192.168.1.100, и прописал его как 192.168.106.200.

Итого:

192.168.106.200[any] 192.168.102.200[any] any
        in prio def ipsec
        esp/tunnel/XX.XX.XX.XX-192.168.1.100/require
        created: Feb  6 09:42:06 2011  lastused: Feb  7 15:18:15 2011
        lifetime: 0(s) validtime: 0(s)
        spid=137328 seq=27 pid=6071
        refcnt=2
192.168.102.200[any] 192.168.106.200[any] any
        out prio def ipsec
        esp/tunnel/192.168.1.100-XX.XX.XX.XX/require
        created: Feb  6 09:42:06 2011  lastused: Feb  7 15:18:15 2011
        lifetime: 0(s) validtime: 0(s)
        spid=137321 seq=21 pid=6071
        refcnt=20
192.168.106.200[any] 192.168.102.200[any] any
        fwd prio def ipsec
        esp/tunnel/XX.XX.XX.XX-192.168.1.100/require
        created: Feb  6 09:42:06 2011  lastused:
        lifetime: 0(s) validtime: 0(s)
        spid=137338 seq=15 pid=6071
        refcnt=1

route:
192.168.106.200 192.168.102.200 255.255.255.255 UGH   0      0        0 eth0

Где: XX.XX.XX.XX - ип адресс ZW35-ISP1

------

Собственно интересно, будут ли работать одновременно два маршрута, и как задать метрику в этом случае.

Вроде как всё. Более внятно рассказать не могу.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Racoon/IPSec - отказоустойчивость."  +/
Сообщение от McLeod095 (??) on 17-Фев-11, 15:49 
Ничего непонятно, но все таки.
Как я понял есть шлюз с двумя провайдерами.
Этот шлюз обеспечивает доступ сети в которой он является шлюзом к какому то ресурсу или к другой сети.

Конечно информации все таки мало и та которая есть она довольно размыта.
Что бы сделал я.
Поверх ipsec настроил бы OSPF и уже с помощью OSPF рулил бы маршрутами.
Не надо городить никаких скриптов и мало головной боли.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру