#!/bin/sh # dual gateway using 3 nic and 4 ips with one alias # isp1 on eth0 # isp2 on eth1 # eth2 = for LAN group1 # eth2:1= for LAN group2 # # Created by mambang 2007 # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin IFCONFIG=/sbin/ifconfig NETWORK=/etc/init.d/networking IP=/sbin/ip IPTABLES=/sbin/iptables NAME="MULTI-GATEWAY" DESC1="ROUTING TABLE" GATEWAY1=192.168.1.1 GATEWAY2=192.168.2.1 NET1=192.168.1.11 #ip eth0 NET2=192.168.2.22 #ip eth1 LAN1=10.0.0.1 #ip LAN1 = eth2 LAN2=176.16.0.1 #ip LAN2 = eth2:1 SUB1=192.168.1.0/24 #sub local SUB2=192.168.2.0/24 #sub local SUB3=10.0.0.0/24 #subnet client LAN1 SUB4=176.16.0.0/24 #subnet client LAN2 DEV1=eth0 DEV2=eth1 DEV3=eth2 DEV4=eth2 #walaupun kita guna eth2:1 tetapi in real world eth2 yg dibaca case "$1" in start) echo -n "Memulakan $DESC1: " # Setup source IP routing rules for DSL 1 and DSL 2 # anda perlu masukkan table ke iproute2 sebelun run script ini # echo "1 T1" >> /etc/iproute2/rt_tables # echo "2 T2" >> /etc/iproute2/rt_tables #Set routing tables for dev and router $IP route add $SUB1 dev $DEV1 src $NET1 table T1 $IP route add default via $GATEWAY1 table T1 $IP route add $SUB2 dev $DEV2 src $NET2 table T2 $IP route add default via $GATEWAY2 table T2 $IP route add $SUB1 dev $DEV1 src $NET1 $IP route add $SUB2 dev $DEV2 src $NET2 $IP route add default $GATEWAY1 $IP route add default $GATEWAY2 $IP rule add from $NET1 table T1 $IP rule add from $NET2 table T2 #Set routing for LAN $IP route add $SUB3 dev $DEV3 table T1 $IP route add $SUB2 dev $DEV2 table T1 $IP route add 127.0.0.0/8 dev lo table T1 $IP route add $SUB4 dev $DEV4 table T2 $IP route add $SUB1 dev $DEV1 table T2 $IP route add 127.0.0.0/8 dev lo table T2 # Load balancing $IP route replace default equalize \ nexthop via $GATEWAY1 dev $DEV1 \ nexthop via $GATEWAY2 dev $DEV2 #route add -net $NETMASK1 10.0.0.0 gw $GATEWAY1 #route add -net $NETMASK2 172.16.0.0 gw $GATEWAY2 #route del default gw $GATEWAY1 #Flush routing cache $IP route flush cache #Load balancing #$IP route replace default equalize \ # nexthop via $MULTIROUTE_EXT_ROUTER1 dev $MULTIROUTE_EXT_IF1 \ # nexthop via $MULTIROUTE_EXT_ROUTER2 dev $MULTIROUTE_EXT_IF2 #$IP route add default nexthop via $GATEWAY1 dev $DEV1 #untuk load balancing #$IP route add nexthop via $GATEWAY2 dev $DEV2 #untuk load balancing #$IPTABLES -t nat -A POSTROUTING -s $LAN1 -o $DEV1 -j SNAT --to $GATEWAY1 #$IPTABLES -t nat -A POSTROUTING -s $LAN2 -o $DEV2 -j SNAT --to $GATEWAY2 #$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE #$IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE #$IPTABLES -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT #$IPTABLES -A FORWARD -i eth0 -o eth3 -m state --state RELATED,ESTABLISHED -j ACCEPT #$IPTABLES -A FORWARD -i eth2 -o eth0 -j ACCEPT #$IPTABLES -A FORWARD -i eth3 -o eth1 -j ACCEPT echo "$NAME" ;; stop) echo "Menghentikan $DESC1 $NAME ... " $IP route flush all $IFCONFIG $NET1 down $IFCONFIG $NET2 down $IFCONFIG $LAN1 down $IFCONFIG $LAN2 down $NETWORK restart echo "Default routing table restored" ;; *) N=/etc/init.d/splitgateway echo "Cara Guna: $N {start|stop}" >&2 exit 1 ;; esac exit 0