Добрый день!На одной стороне стоит ZyWALL 35, с двумя внешними интерфейсами от разных провайдеров. В общем Ipsec настроен так - что удалённая сторона (к примеру Linux роутер), может на любой из двух внешних IP ZyWALL создать подключение IpSec.
Но как сделать чтобы было поднято два одновременно канала?
> Добрый день!
> На одной стороне стоит 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
fiif [ $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
fiif [ $FLAG_RS -eq 1 ]; then
echo "** RESET SESSION"
ifdown ${IPSEC_NUM}
ifup ${IPSEC_NUM}
else
echo "** NO RESET REQUIRED"
fi
Более быстрый и полный скрипт (-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
fiif [ $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
fiif [ $FLAG_RS -eq 1 ]; then
echo "** RESET SESSION"
ifdown ${IPSEC_NUM}
ifup ${IPSEC_NUM}
else
echo "** NO RESET REQUIRED"
fi
> Добрый день!
> На одной стороне стоит ZyWALL 35, с двумя внешними интерфейсами от разных
> провайдеров. В общем Ipsec настроен так - что удалённая сторона (к
> примеру Linux роутер), может на любой из двух внешних IP ZyWALL
> создать подключение IpSec.
> Но как сделать чтобы было поднято два одновременно канала?Уважаемый! А может Вы все таки перестанете отвечать самому себе и попытаетесь внятно задать вопрос!
Сам по себе ipsec может хоть 100 подключений одновременно держать, да и от ipsec это не зависит.
>> Добрый день!
>> На одной стороне стоит 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=1route:
192.168.106.200 192.168.102.200 255.255.255.255 UGH 0 0 0 eth0Где: XX.XX.XX.XX - ип адресс ZW35-ISP1
------
Собственно интересно, будут ли работать одновременно два маршрута, и как задать метрику в этом случае.
Вроде как всё. Более внятно рассказать не могу.
Ничего непонятно, но все таки.
Как я понял есть шлюз с двумя провайдерами.
Этот шлюз обеспечивает доступ сети в которой он является шлюзом к какому то ресурсу или к другой сети.Конечно информации все таки мало и та которая есть она довольно размыта.
Что бы сделал я.
Поверх ipsec настроил бы OSPF и уже с помощью OSPF рулил бы маршрутами.
Не надо городить никаких скриптов и мало головной боли.