Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: [Lug-bg] рутиране 2 ИСП 2 локални


  • Subject: Re: [Lug-bg] рутиране 2 ИСП 2 локални
  • From: "Vladimir Vitkov" <vvitkov@xxxxxxxxx>
  • Date: Tue, 15 Jan 2008 23:35:34 +0200

Здрасти, добър вечер, приятна бира и т.н.

Първо за да балансираш в кернела ти трябват няколко опции най-вече
MULTIPATH_* и поне една от MULTIPATH_ дисциплините. Лично аз съм фен
на WRR (Weighted Round Robin)

Второ в скрипта ти липсва блокиране на рутирането през доставчик т.е.
на края във всяка таблица трябва да имаш prohibit за да може все пак в
някакъв момент да се стигне и до другия доставчик.

трето http://www.getoto.net/2007/06/the-perfect-soho-router-part-4/pref/bg/
към средата на страницата има даден пример за работещо балансиране на
два доставчика със един вътрешен сегмент. Предполагам че ще ти свърши
работа. Ползвам го от доста време и работи безпроблемно (е почти,
понеже ползвам нетис и онлайн при изпадане на нетис малко бавно се
завърта трафика към онлайн но и за това си има мръсни нимера)

On 15/01/2008, valentin Petkov <skyval@xxxxxxxxx> wrote:
> Здр,
>
> Къде ли не питах и не четох ... сам тук ми остана надецдата някой да ми
> помогне.
> Ползвам скрипта по-доло за рутиране на интернета от 2 доставчика и две
> локални мрежи и се опитвам да направя load balancing обаче нещо така и не се
> получава. Нито ползва двете мрежи, нито ако дръпна едната другата да подържа
> ... с две думи нищо не прави, а видима причина за това няма? Ще съм особенно
> благодарен ако някой ми подъде едно рамо да го оправим този скрипт, че вече
> от няколко седмици си блъскам главата над него :(
> Ип адресите няма да ги пиша, то си ги има в скрипта.
>
> Та скрипта е:
>
>
>  #! /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
>  NETWORK=/etc/init.d/networking
>  IP=/sbin/ip
>  IPTABLES=/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(){
>  #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|et h2|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
>
> # end of script
>
>
> Принципно в локалната мрежа имам интернет, но и така не ми балансира м/у
> двата доставчика а си кара само на единия.
> И също един последен въпрос...
> Тъй като знам ип адресите по класове на доставчика как да ги изкарвам през
> съответния гейтуей ....???
>
> Наистина ще се надявам някой да помогне!
>
>
>
> _______________________________________________
> Lug-bg mailing list
> Lug-bg@xxxxxxxxxxxxxxxxxx
> http://linux-bulgaria.org/mailman/listinfo/lug-bg
>
>


-- 
С уважение,
Владимир Витков

http://www.netsecad.com
http://www.supportbg.com
_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg


 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.