Автор Тема: Споделяне на интернет от 2 доставчика  (Прочетена 2010 пъти)

yuksbg

  • Участници
  • ***
  • Публикации: 7
    • Профил
Привет,
малко се порових по чичко гугъл и разбрах че това което искам малко трудно ще стане под уиндовс. Та в форумите на убунту намерих следния скрипт

Код:
#! /bin/sh
# Load balancing script by mambang
# using 4 nics, 2 isp, 2 lan segment
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
IFCONFIG=/sbin/ifconfig
IP=/sbin/ip
IPTABLES=/usr/sbin/iptables

#Device 1 connected to ISP1
DEV1=eth3
NET1=84.54.160.198
SUB1=84.54.160.0/30
GW1=84.54.160.197

#Device 2 connected to ISP2
DEV2=eth0
NET2=192.168.1.2
SUB2=192.168.1.0/24
GW2=192.168.1.1

#LAN device connected to LAN group1
DEV3=eth1
LAN1=192.168.0.1
SUB3=192.168.0.0/24

#LAN device connected to LAN group2
DEV4=eth2
LAN2=192.168.142.1
SUB4=192.168.142.0/24


#---------------------DO THIS MANUALLY------------
#echo "1 T1" >> /etc/$IProute2/rt_tables
#echo "2 T2" >> /etc/$IProute2/rt_tables
#-------------------------------------------------

START_ROUTING(){

#net

#segement1
$IP route add $SUB1 dev $DEV1 src $NET1 table T1
$IP route add $SUB3 dev $DEV3 src $LAN1 table T1
$IP route add default via $GW1 table T1

#segment2
$IP route add $SUB2 dev $DEV2 src $NET2 table T2
$IP route add $SUB4 dev $DEV4 src $LAN2 table T1
$IP route add default via $GW2 table T2

#rules for all segment
$IP rule add from $NET1 table T1
$IP rule add from $LAN1 table T1
$IP rule add from $NET2 table T2
$IP rule add from $LAN2 table T1

#using iptable to mark packets
$IPTABLES -t mangle -A OUTPUT --source $SUB3 -j MARK --set-mark 0x10
$IPTABLES -t mangle -A OUTPUT --source $SUB4 -j MARK --set-mark 0x20
$IPTABLES -t nat -A POSTROUTING -o $DEV1 -j SNAT --to-source=$NET1
$IPTABLES -t nat -A POSTROUTING -o $DEV2 -j SNAT --to-source=$NET2


#default gateway for other
$IP route add default via $GW1

#avoids incoming packets from rejected
echo 0 > /proc/sys/net/ipv4/conf/$DEV1/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/$DEV2/rp_filter

# adding rule for fwmark
$IP rule add fwmark 0x10 pri 100 table T1
$IP rule add fwmark 0x20 pri 101 table T2

# make sure packets comes and returns using same route
ip rule add from $NET1 pri 200 table T1
ip rule add from $NET2 pri 300 table T2

}

BALANCING(){
#load balancing

#$IP route add default scope global nexthop via $GW1 dev $DEV1 weight 1 nexthop via $GW2 dev $DEV2 weight 1

$IP route replace default equalize \
        nexthop via $GW1 dev $DEV1 \
        nexthop via $GW2 dev $DEV2
}


#-------------flushes all route and rule-------------------
REMOVE_TABLE(){
ALLDEV="eth0|eth1|eth2|eth3|lo"
ALLTABLES="T1|T2"
keepers="dev ($ALLDEV)"
tables="lookup ($ALLTABLES)"


echo
echo ***Before
echo "Rules..."
$IP ru sh
echo""
echo "Routes..."
$IP ro sh
echo "Rules for table T1..."
$IP ro sh table T1
echo""
echo "Rules for table T2..."
$IP ro sh table T2
echo""
$IP route delete default &>/dev/null
$IP route show | awk -v k="$keepers" '$0 !~ k \
    { print " $IP route delete " $0 | "bash" }'
for wan in ${ALLTABLES//|/ }; do
  $IP route flush table $wan &>/dev/null
done

$IP rule show | awk -v k="$tables" '$0 ~ k \
    { sub(/from all/,""); print "ip rule del " substr($0, 5) | "bash" }'
echo ""

$IP rule show | awk -v k="$tables" '$0 ~ k \
    { sub(/from all/,""); print "ip rule del " substr($0, 7) | "bash" }'
echo ""
echo "ALL Tables and Rules Deleted"

echo "Adding default gateway ....."
$IP route add default via $GW1

$IP route flush cache
echo
echo "***After"
echo "Rules..."
$IP ru sh
echo "Routes..."
$IP ro sh
echo "Rules for table T1..."
$IP ro sh table T1
echo "Rules for table T2..."
$IP ro sh table T2
}


case "$1" in
  start)
        echo "Creating new routing tables ....."
        START_ROUTING
        echo "Start load balancing rules ....."
        BALANCING
        echo "DONE....New routing has been added."
        #Flush routing cache
        $IP route flush cache
        ;;
 stop)
        REMOVE_TABLE
        echo "DONE....Default routing has been restore."
        echo ""
        echo "Flushing iptables mangle rules ....:"
        $IPTABLES -F -t mangle
        echo "DONE"
        ;;
  *)
        N=/etc/init.d/splitgateway
        echo "Cara Guna: $N {start|stop}" >&2
        exit 1
        ;;
esac

exit 0

Но това горното ми се вижда малко сложно та малко помощ ?

пс: Идеята по принцип е следната: Имаме два доставчика бтк и някакъв частен по принцип ползваме частния и бтк само при спиране на частника та идеята е малко да се автоматизира този процес. На машинката имам инсталирано Убинту сървър с последните Update.
Lan картите са 3 на брой > 1 вградена и 2 доп. добавени
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Re: Споделяне на интернет от 2 доставчика
« Отговор #1 -: Nov 21, 2008, 16:16 »
Изпълним файл /път/до/check_route
Цитат
#!/bin/sh

GW_4ASTNIK=11.12.13.14
GW_BTK=12.13.14.15

# Prevklyu4va default gateway avtomati4no
  if ping -c 3 $GW_4ASTNIK 1> /dev/null 2> /dev/null; then
  #  echo "4ASTNIKA raboti ..."
     if ! /sbin/route -n | grep $GW_4ASTNIK 1> /dev/null 2> /dev/null; then
  #     echo "... but is not default gw. Setting it default."
       route del default gw $GW_BTK
       route add default gw $GW_4ASTNIK
       cp /etc/resolv.conf.4ASTNIK /etc/resolv.conf
       echo "Default gw changed to 4ASTNIK"
     fi
  else
  #  echo "4ASTNIKa NE raboti ..."
     if /sbin/route -n | grep $GW_4ASTNIK 1> /dev/null 2> /dev/null; then
  #    echo "... but is default gw. Setting default to GW_BTK."
       route del default gw $GW_4ASTNIK
       route add default gw $GW_BTK
       cp /etc/resolv.conf.BTK /etc/resolv.conf
       echo "Default gw changed to GW_BTK"
     fi
  fi

В таблицата на crond добавяш
Цитат
1-59/2 * * * * /път/до/check_route
Скрипта се изпълнява на всеки 2 мин. Замести двата IP адреса с адресите, които трябва да са default gateway на доставчиците. Направи си два файла resolv.conf.BTK и resolv.conf.4ASTNIK като ползваш за образец файла resolv.conf и в тях постави DNS-ите на съответния доставчик. Скрипта трябва да се изпълнява с root права. Потребителят root ще получава писмо при всяка смяна на доставчика.
Един от недостатъците е, че се пингва гейта и би могло да имаш пинг, но да нямаш нет ако доставчика ти има проблем.
« Последна редакция: Nov 21, 2008, 17:01 от laskov »
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

yuksbg

  • Участници
  • ***
  • Публикации: 7
    • Профил
Re: Споделяне на интернет от 2 доставчика
« Отговор #2 -: Dec 14, 2008, 18:17 »
Благодаря ти за отговора ще го тествам другата седмица. Но днес като се рових окрих
http://ebox-platform.com/usersguide/en/html-chunk/ch03s05.html

ще пробвам и 2та варианта и ще видим какво ще излезе ;)
Активен