hugme: (Default)
[personal profile] hugme
This is the network fail over script that I promised you all a few weeks back..
sorry it took so long to post. I have another script that sets up these interfac
es on boot. along with natd... I will send another lj entry with that info... /e
tc/rc.[anything] is a hideous monstrosity... I really need to sit down some time
and rewrite them... maybe one day... la la la...




#!/bin/bash
 
INTERFACE_1="rl0"
I1ROUTE="[default route for interface 1]"
INTERFACE_2="rl1"
I2ROUTE="[default route for interface 2]"
 
# redirection is setup as [primary outside]:[secoundary outside]:[inside]
IP_REDIRECT=""
 
# port redirection is setup as [inside]:[port]:[outside]:[port]
PORT_REDIRECT=""
 
 
setup_nat()
        {
        for ADDY in `echo $IP_REDIRECT`; do
                if [ "$OTHER_INTERFACE" = "$INTERFACE_1" ] ; then
                        IP_OUTSIDE=`echo $ADDY | awk -F : '{ print $1 }'`
                elif [ "$OTHER_INTERFACE" = "$INTERFACE_2" ] ; then
                        IP_OUTSIDE=`echo $ADDY | awk -F : '{ print $2 }'`
                else
                        echo "redirect interface not found" >> /var/log/netfix
                fi
        IP_INSIDE=`echo $ADDY | awk -F : '{ print $3 }'`
        REDIRECT="$REDIRECT -redirect_address $IP_INSIDE $IP_OUTSIDE"
        if [ "$OTHER_INTERFACE" = "$INTERFACE_1" ] ; then
                for PORT_ADDY in `echo $PORT_REDIRECT`; do
                        IP_OUTSIDE=`echo $PORT_ADDY | awk -F : '{ print $3":"$4
}'`
                        IP_INSIDE=`echo $PORT_ADDY | awk -F : '{ print $1":"$2 }
'`
                        REDIRECT="$REDIRECT -redirect_port tcp $IP_INSIDE $IP_OU
TSIDE"
                done
        fi
        done
        }
 
DATE=`date`
CURR_INTERFACE=`ps -ax | awk '$5 ~ /^natd/ { print $7 }'`
if [ "$CURR_INTERFACE" = "$INTERFACE_1" ] ; then
        OTHER_INTERFACE=`echo "$INTERFACE_2"`
        CURR_ROUTE=`echo "$I1ROUTE"`
        OTHER_ROUTE=`echo "$I2ROUTE"`
elif [ "$CURR_INTERFACE" = "$INTERFACE_2" ] ; then
        OTHER_INTERFACE=`echo "$INTERFACE_1"`
        CURR_ROUTE=`echo "$I2ROUTE"`
        OTHER_ROUTE=`echo "$I1ROUTE"`
else
        echo "$date $CURR_INTERFACE interface unknown" >> /var/log/netfix
        exit
fi
 
if [ "$CURR_INTERFACE" = "$INTERFACE_2" ] ; then
        ifconfig $INTERFACE_1 up
        route add 128.9.0.107 $I1ROUTE > /dev/null
        TEST2=`ping -c 3 -t 3 128.9.0.107 | grep "bytes from"`
        if [ "TEST2" = "" ] ; then
                route delete 128.9.0.107 > /dev/null
                ifconfig $INTERFACE_1 down
        else
                route delete 128.9.0.107 > /dev/null
                ifconfig $INTERFACE_2 down
        fi
fi

TEST=`ping -c 3 -t 3 198.41.0.4 | grep "bytes from"`
if [ "$TEST" = "" ] ; then
        echo "$DATE changing from interface $CURR_INTERFACE to $OTHER_INTERFACE"
>> /var/log/netfix
        # wipe out old interface
        kill -TERM `cat /var/run/natd.pid`
        route delete default > /dev/null
        ipfw delete 50
        ifconfig $CURR_INTERFACE down
        # set up new interface
        ifconfig $CURR_INTERFACE up
        ipfw add 50 divert natd all from any to any via $OTHER_INTERFACE >> /dev
/null 2>> /var/log/netfix
        route add default $OTHER_ROUTE >> /dev/null 2>> /var/log/netfix
        sleep 10
        setup_nat
        natd -n $OTHER_INTERFACE $REDIRECT >> /dev/null 2>> /var/log/netfix
fi

Profile

hugme: (Default)
hugme

April 2011

S M T W T F S
     12
3456789
10111213141516
17 181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 8th, 2026 02:55 pm
Powered by Dreamwidth Studios