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.

Hosted by "Internet Group" Ltd. - Stara Zagora