halo, salam buat semua...
di bawah ini saya lampirkan script nat saya,
siapa tahu ada yang butuh.

versi terbaru ada di :

http://www.indosarva.net/~budi/files/script-nat

# --------------------- cut di sini -----------------------
#!/bin/bash2
#
#  nat_script for Linux version 0.1 (25 September 2002)
#  Author: Budi Aditya <[EMAIL PROTECTED]>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2, or (at your option)
#  any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.



#checking system releases.
tmp=`uname -r`
tmp2=`echo $tmp | grep 2.2`
tmp3=`echo $tmp | grep 2.4`

 if   [ "$tmp2" != "" ]; then
      KERNEL="2.2"
 elif [ "$tmp3" != "" ]; then
      KERNEL="2.4"
 fi

#DEBUG STATIC
DEBUG=1

if [ $DEBUG ]; then
echo "KERNEL=$KERNEL"
fi


#static variables & common variables
VERSION=0.1


#----------------------  system config info ----------------------------#
#common info
sysconf_dir="/etc/sysconfig/network-scripts"
# masukkan interfaces2x lan anda dibawah ini
lan_if=( eth1 )
lan_count=${#lan_if[@]}

tmp=`whereis modprobe | awk '{print $2}'`
MODPROBE=$tmp

#spesific 2.2.x info
#tambahkan ipmasq modules yang anda mau load dibawah ini
ipchains_modules=( ip_masq_ftp ip_masq_irc )
ipchains_count=${#ipchains_modules[@]}
#end of special 2.2.x info

#spesific 2.4.x info
public_ip_if="eth0"
#tambahkan connection tracking helper module yang
#hendak diload dibawah ini
iptables_modules=( ip_conntrack_ftp ip_conntrack_irc )
iptables_count=${#iptables_modules[@]}
#end of special 2.4.x info

# --------------------- end system config info -------------------------#



#======== spesific 2.2.x ========#

if [ "$KERNEL" = "2.2" ]; then

#--- collecting utils info ---#
tmp=`whereis ipchains | awk '{print $2}'`
IPCHAINS=$tmp

#--- end collecting info --- #




#--- collecting interfaces info ---
i=0

 while [ $i -lt $lan_count ]
  do
    #collecting netmask for $lan_if[$i]
     tmp=`/sbin/ifconfig ${lan_if[$i]} | grep Mask | awk '{ print $4}' |
awk -F : '{print $2}'`
     lan_netmask[$i]=$tmp
    #end collecting netmask for $lan_if[$i]

    #collecting network for $lan_if[$i]
    tmp=`/sbin/route -n | grep ${lan_if[$i]} | grep ${lan_netmask[$i]} |
awk '{print $1}'`
    lan_network[$i]=$tmp

    if [ $DEBUG ]; then
    echo "${lan_network[$i]}/${lan_netmask[$i]}"
    fi

    i=$(($i+1))
 done

#--- end collecting interfaces info ---#




#----- begin modprobing ipchains modules ------#
i=0

 while [ $i -lt $ipchains_count ]
  do
    $MODPROBE ${ipchains_modules[$i]}
    i=$(($i+1))
  done

#----- end   modprobing ipchains modules ------#



#-------- begin ipmasq for 2.2.x ---------#

  #preparation for ipmasq
  i=0
  echo "1" > /proc/sys/net/ipv4/ip_forward

while [ $i -lt $lan_count ]
  do
    #checking existing ipchains rules
     tmp=`$IPCHAINS -L -n | grep ${lan_network[$i]}`

     if [ "$tmp" = "" ]; then
        $IPCHAINS -A forward -s ${lan_network[$i]}/${lan_netmask[$i]} -d !
${lan_network[$i]}/${lan_netmask[$i]} -j MASQ
     fi
   i=$(($i+1))
 done
#-------- end  ipmasq for  2.2.x ---------#


#======== end of spesific 2.2.x ========#



#======== begin spesific 2.4.x ========#
elif [ "$KERNEL" = "2.4" ]; then

#--- collecting utils info ---#
tmp=`whereis iptables | awk '{print $2}'`
IPTABLES=$tmp

#--- end collecting utils info --- #



#--- collecting interfaces info ---
 i=0

 while [ $i -lt $lan_count ]
   do

     #gathering ${lan_if[$i]} interfaces info
       #gathering network info
          tmp=`/sbin/ip route show | grep ${lan_if[$i]} | grep link | awk '{print
$1}'`
          lan_network[$i]=$tmp

       if [ $DEBUG ]; then
       echo ${lan_network[$i]}
       fi
      i=$(($i+1))
  done

  tmp=`/sbin/ip addr show | grep $public_ip_if | grep inet | awk '{print
$2}' | awk -F "/" '{print $1}'`
  public_ip=$tmp

#--- end collecting interfaces info ---


#--------- begin modprobing iptables modules --------#
i=0

 while [ $i -lt $iptables_count ]
 do
    $MODPROBE ${iptables_modules[$i]}
    i=$(($i+1))
  done

#--------- end of modprobing iptables modules --------#


#---------- begin nat'ed for 2.4.x ---------#

#preparation for nating..
  i=0
  echo "1" > /proc/sys/net/ipv4/ip_forward

while [ $i -lt $lan_count ]
  do
    #checking existing ipchains rules
     tmp=`$IPTABLES -t nat -L -n | grep ${lan_network[$i]}`

     if [ "$tmp" = "" ]; then
        $IPTABLES -t nat -A POSTROUTING -s ${lan_network[$i]} -d !
${lan_network[$i]} -j SNAT --to $public_ip
     fi

   i=$(($i+1))

  done


#---------- end of nat'ed for 2.4.x --------#
fi

#------- end spesific 2.4.x --------#

#--------------------- cut di sini --------------------------------



-- 
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3

Kirim email ke