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

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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 03:05 pm
Powered by Dreamwidth Studios