Alex wrote:
> Se da un ruter cu 3 placi de retea in fundulet. Una conectata direct la un
> modem de cablu, a doua conectata la un switch prin care ajunge apoi spre un
> adsl si a treia conectata la acelasi switch pentru reteaua locala.
sper ca interfetele pt reteaua locala si adsl sint in vlanuri separate. 
daca nu, gindeste-te ce se intimpla daca un computer din reteaua locala 
capata ip din aceeasi clasa cu adsl-ul si GW asignat tie de provider-ul adsl

> Tot pe
> ragalia asta de ruter ruleaza un squid. De vreo 6 ore ma chinui sa fac sa
> mearga un soi de load balancing, practic trebuie sa folosesc simultan ambele
> linkuri la net pentru squid. Statusi ci citisi iarasi http://lartc.org/howto
> dar....
> Am facut un script exact, step by step, identic cu info din howto, i-am dat
> un chmod 700, l-am pornit... nu da erori, in schimb un ping pe gateway de la
> isp2 nu misca deloc. Scriptul pe care-l folosesc l-am turnat mai jos. Daca
> aveti ceva idei....
> 
incearca te rog micile modificari sugerate de mine mai jos
> Alex
> 
> ---script start----
> #!/bin/bash
> IF0="eth0"
> IF1="eth2"
> IF2="eth1"
> IP0="192.168.254.125"
> IP1="1.2.3.4"
> IP2="5.6.7.8"
> P1="1.2.3.1"
> P2="5.6.7.1"
> P0_NET="192.168.254.0"
P0_NET="192.168.254.0/24"
> P1_NET="1.2.3.0"
P1_NET="1.2.3.0/24"
> P2_NET="5.6.7.0"
P2_NET="5.6.7.0/24"

ideea e ca sistemul la pornire stie ce netmask ai pt placile de retea si 
pune si rutele adecvate. Scriptul tau insa nu o face. iar la modul cum 
ai facut tu, _daca_ pune rutele le pune la stilul
ip route add 5.6.7.0/32 dev eth2 table t2

> #
> ip route add $P1_NET dev $IF1 src $IP1 table T1
> ip route add default via $P1 table T1
> ip route add $P2_NET dev $IF2 src $IP2 table T2
> ip route add default via $P2 table T2
> #
> ip route add $P1_NET dev $IF1 src $IP1
> ip route add $P2_NET dev $IF2 src $IP2
> #
> ip rule add from $IP1 table T1
> ip rule add from $IP2 table T2
> #
> ip route add $P0_NET     dev $IF0 table T1
esti sigur ca vrei ca pachetele pt reteaua locala sa treaca prin T1 si 
nu prin tabela main sau default ?

> ip route add $P2_NET     dev $IF2 table T1
> ip route add 127.0.0.0/8 dev lo   table T1
din cite stiu eu,asta nu e necesara. sau altfel formulat, mie imi merge fara

> ip route add $P0_NET     dev $IF0 table T2
> ip route add $P1_NET     dev $IF1 table T2
> ip route add 127.0.0.0/8 dev lo   table T2
nici asta

> #
> ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop
> via $P2 dev $IF2 weight 1
> 
> 
> 
> 
> --- 
> Detalii despre listele noastre de mail: http://www.lug.ro/
> 
> 
> 
nu uita de un
        ip route flush cache
cind faci modificari


Si inca niste chestii
1) ai grija ca din firewall sa aranjezi ca pachetele din 
192.168.254.x/24 sa fie mascaradate (SNAT-ate..) la iesirea din ruter 
spre fiecare dintre provideri cu ip-ul de pe acea interfata
    iptables -t nat -A POSTROUTING -s $P0_NET/24 -o $IF2 -j SNAT --to $IP2
    iptables -t nat -A POSTROUTING -s $P1_NET/24 -o $IF1 -j SNAT --to $IP1
Evident, regulile astea nu au efect asupra pachetelor generate pe ruter, 
ci numai pt cei din retea

2)socoteala ta cu load balancing e relativ corecta.... dar cum decizi pe 
care dintre intefete sa iasa pachetele, cind se initiaza o conexiune din 
reteaua locala? Hint: va trebui sa pui tu rute specifice care sa spuna 
care pachete pe unde sa o ia.
partea cu scriptul de mai sus rezolva mai mult problema raspunsurilor 
ruterului tau la initiari de conexiune facute din exterior catre 
ip-urile de pe interfetele externe ale ruterului.
3) pt depanare,
a)stai cu tcpdump pe fiecare dintre interfetele externe (2 interfete -> 
2 console <-> 2 tcpdump) si  apoi da ping din o a treia. si vezi ce se 
intimpla. aproape sigur pachetele tale ies toate prin una din conexiuni 
inclusiv cu ip-ul care ar trebui sa fie pe cealalta, iar modemul (sau 
poate ruterul) de deasupra le filtreaza fiindca nu au ip-ul corect.
b)poti pune niste reguli de loging din iptables:
   iptables -A OUTPUT (sau chiar POSTOUTING) -t mangle -o $IF1 -j LOG
   iptables -A OUTPUT (sau chiar POSTOUTING) -t mangle -o $IF2 -j LOG
si pe masura ce se face trafic il urmaresti in /var/log/messages (sau 
unde ai setat tu sa se scrie...). Evident, nu iti doresti sa pui asa 
reguli generale daca ai trafic mult, dar atentie daca pui reguli mai 
specifice sa fie chiar cele dorite si sa nu pierzi din log anumite 
pachete. Spre pilda in mod special nu am pus match dupa IP in cele 2 
reguli, ci doar dupa interfata. Astfel se poate vedea daca ajung in 
interfata pachete cu IP eronat.
4)o ultima chestie: maaaare mare atentie la ordinea de parcurgere a 
regulilor din iptables si iproute2. eu mi-am spart creierii o saptamina 
(abia am lipit dupa aia cioburile la loc) cu o problemutza oarecum 
similara si nu stiu daca o rezolvam fara niste hinturi de pe aici, care 
chiar daca nu s-au potrivit toate ca o manusa, mi-au dat directia pt 
sapaturi (mersi Alin N si Radu G.)

-- 
Computers are devices for converting data into error messages



--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui