Как-то приходилось делать что-то подобное....Firewall-1 через который все выходят в интернет. ( IP 111.111.111.66 )
Firewall-2 через rsync зеркалится с Firewall-1 . ( IP 111.111.111.67 )
если Firewall-1 неотвечает на ping от Firewall-2 ( что значит Firewall-1 умер ), то он перенимает сетевые настройки от Firewall-1.
Note: необязательно ping можно к примеру SSH Port проверять.....
На Firewall-2 создал небольшой скрипт:
file:/usr/local/bin/fwcontrol
============================================================
#!/bin/bash
cd /usr/local/bin
START="1"
HOST="111.111.111.66"
MAILTO="admin@domain.ru"
if [ -f flag ]
then
while [ -f flag ]
do
echo
echo "......NEW Firewall is OK!"
echo
sleep 2
done
else
while [ $START = "1" ]
do
ping -c 4 $HOST > _tmp
if [ "Unreachable" = "`cat _tmp | grep Unreachable |awk -F " " '{print $6}' | head -n 1`" ]
then
echo " ERROR! Host $HOST is not found..........."
echo
ifconfig eth0 111.111.111.66 netmask 255.255.255.192 up #
ifconfig eth1 222.222.222.222 netmask 255.255.255.0 up #
ifconfig eth2 123.123.123.123 netmask 255.255.255.0 up #
route add default gw 111.111.111.65 #
touch flag
echo "
Firewall-1 is down!
Firewall-2 is up.
`ifconfig`
`route -n`" | mailx -s "Firewall-1 is down" $MAILTO
/etc/init.d/fwcontrold stop
exit 0
else
echo
echo " .......Firewall is OK!"
fi
done
sleep 2
exit 0
fi
=====================================================================
который запускается как demon fwcontrold:
file:/etc/inin.d/fwcontrold
=====================================================================
#! /bin/sh
FW_BIN_DIR=/usr/local/bin
FW_BIN_PID=/var/run/fw.pid
FW_BIN=$FW_BIN_DIR/fwcontrol
. /etc/rc.status
rc_reset
case "$1" in
start)
if [ -f $FW_BIN_PID ]
then
echo -n "Daemon FW-CONTROL is running"
else
echo -n "Starting Daemon FW-CONTROL..........."
echo ""
cd $FW_BIN_DIR
$FW_BIN > /dev/null 2>&1 &
echo $! > $FW_BIN_PID
echo " started_fw. PID:$!"
fi
rc_status -v
;;
stop)
if [ ! -f $FW_BIN_PID ]
then
echo -n "Daemon FW-CONTROL is down"
if [ -f $FW_BIN_DIR/flag ]
then
rm $FW_BIN_DIR/flag
fi
else
echo -n "Shutting down FW-CONTROL "
echo ""
kill -9 `cat $FW_BIN_PID`
rm $FW_BIN_PID
if [ -f $FW_BIN_DIR/flag ]
then
rm $FW_BIN_DIR/flag
fi
echo "FW-CONTROL STOP request issued."
fi
rc_status -v
;;
restart)
$0 stop
sleep 5
$0 start
rc_status
;;
status)
echo -n "Checking for service FW-CONTROL "
checkproc $FW_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit
====================================================================
/etc/inin.d/fwcontrold start|stop|status|restart
Eсли Firewall-1 умер, то админ получает е-майл, быстренько надёргивает штанишки и бегом решать проблему. :))))
Скрипты написаны для SuSE, но при небольшой доработке можно приспособить других...