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

 

начало

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

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

семинари ...

документи

как да ...

 

 

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

Re: lug-bg: Рутиране към втори доставчик


  • Subject: Re: lug-bg: Рутиране към втори доставчик
  • From: Dimitar Terziev <mitak@xxxxxxxxxxx>
  • Date: Mon, 11 Apr 2005 00:01:59 +0300

Едно *работещо* решение на проблема.
Това услях да измисля за 10-тина минути миналия ден,
задачата беше: Има два доставчика. Българският трафик да минава през единия, 
всичко останало - през другия.
Решението в няколко думи:
Слагаме defult gw - този на доставчика, през който ще минава "всичко 
останало". С iproute2 правим таблица, в която се дават правила за 
"българският" трафик, който ще минава през втория доставчик. Нещата изглеждат 
така (скрипта е малко дълъг, има някои неточности, но работи. Ще се радвам на 
всякакви забележки и поправки към него):

[cut]
#!/bin/bash
echo "Setting variables"
ISP1IP=111.222.333.444
ISP1GW=111.222.333.1
ISP1NET=111.222.333.0/24
ISP1DEV=eth0
ISP1NAME=ISP-BG

ISP2IP=222.333.444.555
ISP2GW=222.333.444.1
ISP2NET=222.333.444.0/24
ISP2DEV=eth1
ISP2NAME="ISP-INT"

LOCALIP=192.168.0.1
LOCALNET=192.168.0.0/24
LOCALDEV=eth2

BG=/etc/routing/ip.bg #tuka e spisuka na bulgarskite mreji (ot ip.ludost.net)

case "$1" in
'flush')
 echo "Flush All"
 ip route flush all
 echo "Add connected network"
 ip r a $ISP1NET dev $ISP1DEV proto kernel src $ISP1IP
 ip r a $ISP2NET dev $ISP2DEV proto kernel src $ISP2IP
 ip r a $LOCALNET dev $LOCALDEV proto kernel src $LOCALIP

 echo "Removing OLD rules ..."
 ip ru d prio 201 from $ISP1NET
 ip ru d prio 202 from $ISP2NET
 ip ru d prio 211

 echo "Flush Tables ..."
 ip r f t 200
 ip r f t 201
 ip r f t 202
 ip r f t 211


;;
'start')
 $0 flush
 echo "Table 201 $ISP1NAME"
 ip ru a prio 201 from $ISP1NET t 201
 ip r a 0/0 via $ISP1GW proto static t 201
 ip r append prohibit default table 201 metric 1 proto static

 echo "Table 202 $ISP2NAME"
 ip ru a prio 202 from $ISP2NET t 202
 ip r a 0/0 via $ISP2GW proto static t 202
 ip r append prohibit default table 202 metric 1 proto static
 echo "end"

 echo "Table 211 $ISP1NAME"
 ip ru a prio 211 t 211
 echo "Add BG Peering to $ISP1NAME"
 if [ -f  /etc/routing/ip.bg ] ; then
 for IP in `cat  /etc/routing/ip.bg|awk '{print $1}'`; do
 ip r a $IP via $ISP1GW proto static table 211
 iptables -t nat -I POSTROUTING -s $LOCALNET -d $IP -j SNAT --to-source 
$ISP1IP
 done
 fi

 ip r f c
#route del default gw $ISP1GW
route add default gw $ISP2GW
;;
'stop' )
 $0 flush
 ip r a 0/0 via $ISP2GW
 ;;
'*')
 echo "Usage: $0 start|stop"
exit 1
;;
esac

[/cut]

On Sunday 10 April 2005 17:36, Danail Petrov wrote:
> Danail Petrov wrote:
> > Здравей,
> > Имаш няколко варианта да направиш това.
> > 1. using netfilter / iptables /
> > iptables -t nat -I PREROUTING -p tcp --dport 80 -d `host
> > free._xxx_.xxx` -j SNAT --to x.x.x.x /* където х.х.х.х е ип-то през
> > което искаш да го изкараш */
>
> [snip]
>     Да се чете `POSTROUTING'
> [/snip]
>
> > 2. using proxy /* squid */
> > Тука ма марзи да пиша acl-и , затова иди виж на www.squid-cache.org
> >
> > 3. iproute2 /* него можеш да го комбинираш с нетфилтъра , стават
> > чудеса :)) , на  lartc.org има доста подробни описания*/
> >
> > 4. BGP /* zebra */

-- 
-
public key: http://unix-bg.org/mitak.asc

Attachment: pgpDnWN9eRbmx.pgp
Description: PGP signature



 

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

 

линукс за българи
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.