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: