[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dwa łącza i squid.



Witaj Marek,

W Twoim liście datowanym 25 września 2003 (16:19:22) można przeczytać:

MAD> Witaj Grupa!

MAD>   Posiadam dwa łącza DSL, co prawda jednego prowaidera, ale nie o to
MAD>   chodzi. Moje pytanie to jak zmusić squida żeby pracował nie na łączu
MAD>   które jest jako domyślne w tablicy routingu tylko na łączu które nie
MAD>   jest wykożystywane. Przeglądałem dokumentacje squida i nic nie
MAD>   dostrzegłem co by mogło mi pomóc, albo poprostu za słabo znam
MAD>   angielski.

Witaj Marek,

W Twoim liście datowanym 25 września 2003 (16:19:22) można przeczytać:

MAD> Witaj Grupa!

MAD>   Posiadam dwa łącza DSL, co prawda jednego prowaidera, ale nie o to
MAD>   chodzi. Moje pytanie to jak zmusić squida żeby pracował nie na łączu
MAD>   które jest jako domyślne w tablicy routingu tylko na łączu które nie
MAD>   jest wykożystywane. Przeglądałem dokumentacje squida i nic nie
MAD>   dostrzegłem co by mogło mi pomóc, albo poprostu za słabo znam
MAD>   angielski.

Diękuję wszystkich za pomoc. Jednak okazało się że po za opcją dla
squida tak jak kolega napisał tcp_outgoing_address xxx.xxx.xxx.xxx
(oraz udp_outgoing_address xxx.xxx.xxx.xxx.xxx tego już nie napisał :)
) miałem źle skonfigurowane tablice routingu w rezultacie czego nie
mogłem z routera kożystać z drugiego łącza. Tu z pomocą przyszły gogle
(chociaż znalezienie konkretnej odpowiedzi nie było łatwe) zrobiłem
wkącu tablice routingu. Tablice wykonałem na podstawie strony:
http://mr0vka.eu.org/tlumaczenia/2.4routing.html
Na początku tylko raz wykonujemy polecenie: (tego autor na stronie nie
napisał)echo "200 N1" >> /etc/iproute2/rt_tables
echo "201 N2" >> /etc/iproute2/rt_tables
te polecenia wykonujemy tylko raz.
Następnie albo klepiemy z renki albo robimy skrypcik:

-- tN.bat --

#!/bin/bash
echo "Ładuje zmienne"
IF0=eth2
IF1=eth0
IF2=eth1
IP1=<IP ŁĄCZA 1>
IP2=<IP ŁĄCZA 2>
P1=<BRAMKA ŁĄCZA 1>
P2=<BRAMKA ŁĄCZA 2>
P0_NET=<Lokalna sieć włącznie z prefixem>
P1_NET=<Sieć w której jest IP1 z prefixem>
P2_NET=<Sieć w której jest IP2 z prefixem>
echo "Etap 1"
ip route add $P1_NET dev $IF1 src $IP1 table N1
ip route add default via $P1 table N1
ip route add $P2_NET dev $IF2 src $IP2 table N2
ip route add default via $P2 table N2
echo "Etap 2"
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
echo "Etap 3"
ip route add default via $P1
# Dla automatycznego rozłożenia obciążenia zamiast linijki wyżej
# ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
# nexthop via $P2 dev $IF2 weight 1
# ale nie sprawdzałem.
echo "Etap 4"
ip rule add from $IP1 table N1
ip rule add from $IP2 table N2
echo "Etap 5"
ip route add $P0_NET dev $IF0 table N1
ip route add $P2_NET dev $IF2 table N1
ip route add 127.0.0.0/8 dev lo table N1
ip route add $P0_NET dev $IF0 table N2
ip route add $P1_NET dev $IF1 table N2
ip route add 127.0.0.0/8 dev lo table N2
echo "Etap 6"
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
echo "Flush"
ip route flush cache

-- END tN.bat --

skrypcik kasujący:

-- tNd.bat --

#!/bin/bash
echo "Ładuje zmienne"
IF0=eth2
IF1=eth0
IF2=eth1
IP1=<IP ŁĄCZA 1>
IP2=<IP ŁĄCZA 2>
P1=<BRAMKA ŁĄCZA 1>
P2=<BRAMKA ŁĄCZA 2>
P0_NET=<Lokalna sieć włącznie z prefixem>
P1_NET=<Sieć w której jest IP1 z prefixem>
P2_NET=<Sieć w której jest IP2 z prefixem>
echo "Etap 6"
ip route del default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1
echo "Etap 5"
ip route del $P0_NET dev $IF0 table N1
ip route del $P2_NET dev $IF2 table N1
ip route del 127.0.0.0/8 dev lo table N1
ip route del $P0_NET dev $IF0 table N2
ip route del $P1_NET dev $IF1 table N2
ip route del 127.0.0.0/8 dev lo table N2
echo "Etap 4"
ip rule del from $IP1 table N1
ip rule del from $IP2 table N2
echo "Etap 3"
ip route del default via $P1
echo "Etap 2"
ip route del $P1_NET dev $IF1 src $IP1
ip route del $P2_NET dev $IF2 src $IP2
echo "Etap 1"
ip route del $P1_NET dev $IF1 src $IP1 table N1
ip route del default via $P1 table N1
ip route del $P2_NET dev $IF2 src $IP2 table N2
ip route del default via $P2 table N2
echo "Flush"
ip route flush cache

-- END tNd.bat --

oraz przydają się wpisy do firewall'a:
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j SNAT \
--to $IP1
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j SNAT \
--to $IP2

Skrypt wystarczy odpalić tylko raz. Debian bez problemu zapamiętuje
wpisy nawet po restarcie.
Należy też wspomnieć że gdy chcemy skożystać z tych tablic routingu to
w pliku /etc/network/interfaces nie powinien występować wpis GATEWAY.

A dla jasności wykonałem to wszystko na Debianie 3.0 a właściwie to
Testowej upgrejdowanej na bierząco.

P.S. Podejżewam że i tak jeszcze co nie które osoby dodadzą coś od
siebie.
P.S.2 Poraz kolejny zapomniałęm zmienić pole "Do:" i wysłałem sam do
siebie. :]
-- 
Pozdrowienia,
    ******************************
    *  Marek (SirAdams) Adamski  *
    * siradams-debian@netbase.pl *
    *        ICQ:42751516        *
    *          GG:14747          *
    ******************************



Reply to: