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/
