#!/bin/bash INTERFACE_1=rl0 INTERFACE_2=rl1 IP_1=0.0.0.0 IP_2=0.0.0.0 NETMASK_1=0xfffffff0 NETMASK_2=0xfffffff0 DROUTE=0.0.0.0 I1_ALIASES="" I2_ALIASES="" # IP redirection is setup as [primary outside]:[secoundary outside]:[inside] IP_REDIRECT="" # port redirection is setup as [inside]:[port]:[outside]:[port] PORT_REDIRECT="" ###################### ### end user edits ### ###################### setup_nat() { for IP_ADDY in `echo $IP_REDIRECT`; do IP_OUTSIDE=`echo $IP_ADDY | awk -F : '{ print $1 }'` IP_INSIDE=`echo $IP_ADDY | awk -F : '{ print $3 }'` REDIRECT="$REDIRECT -redirect_address $IP_INSIDE $IP_OUTSIDE" done 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_OUTSIDE" done } interface1() { ifconfig $INTERFACE_1 $IP_1 netmask $NETMASK_1 for ALIAS in $I1_ALIASES; do ifconfig $INTERFACE_1 alias $ALIAS netmask $NETMASK_1 done } interface2() { ifconfig $INTERFACE_2 $IP_2 netmask $NETMASK_2 for ALIAS in $I2_ALIASES; do ifconfig $INTERFACE_2 alias $ALIAS netmask $NETMASK_2 done } case $1 in start) interface1; interface2 ifconfig $INTERFACE_1 ifconfig $INTERFACE_2 route add default $DROUTE if [ -f /var/run/natd.pid ]; then kill -TERM `cat /var/run/natd.pid` fi setup_nat natd -n $INTERFACE_1 $REDIRECT;; stop) for IP in `ifconfig $INTERFACE_1 | grep "inet"`; do ifconfig $INTERFACE_1 delete $IP > /dev/null 2> /dev/null done for IP in `ifconfig $INTERFACE_2 | grep "inet"`; do ifconfig $INTERFACE_2 delete $IP > /dev/null 2> /dev/null done;; $INTERFACE_1) interface1;; $INTERFACE_2) interface2;; *) echo echo "usage: network_interfaces [start, stop, interface]";; esac