Eduard Gheorghiu wrote:
>Revin cu o reformulare a problemei
>Am un LAN cu:
>- calculatorul LINUX
>- 2 routere cu IP-urile GW1 si GW2
>LINUX are doua IP-uri pe aceeasi placa de retea, IP1 si IP2
>GW1, GW2, IP1 si IP2 sunt in acelasi subnet.
>Pe LINUX am definit source-routing cu doua reguli si doua tabele de
>rutare T1 si T2 pentru aceste reguli. Tabelele contin rute default, astfel:
>sursa IP1 --- lookup T1 --- default via GW1
>sursa IP2 --- lookup T2 --- default via GW2
>Situatia e cumva anormala pentru ca exista o suprapunere de IP-uri in
>alte subnet-uri, care sunt dincolo de GW1 si GW2.
>Un client IPCA-IP1 care e dincolo de GW1, ajunge la IP1 prin GW1 iar
>intoarcerea trebuie sa se faca tot prin GW1; daca se face prin GW2
>raspunsul ajunge la IPCB-IP1 (da, tot IP1).
>Intrucat nu pot elimina aceasta suprapunere de adrese, am recurs la
>varianta cu source-routing pe LINUX. Solutia merge perfect atunci cand
>sesiunile TCP sunt initiate din afara.
>
>
esti SIGUR ca nu poti elimina? nici macar facind un iptables DNAT pe
undeva ? eu de pilda evaluez in clipa asta cu foarte mult interes
optiunea "netmap" din patch-o-matic.
ca paranteza: problema mea este
- am 2 subneturi, aflate in locatii diferite (fie ele S1 si S2)
- una dintre locatii are 2 conexiuni la internet, pt redundanta
- openswan nu ma lasa sa am 2 tunele diferite intre aceleasi doua
subneturi, astfel incit nu pot defini 2 tunele S1 <-->Gw1.....GW_remote
<->S2 si S1 <-->Gw2.....GW_remote<->S2
ceea ce vreau sa fac este ca S1 sa fie mapat automat de iptables intr-un
S3 de aceeasi dimensiune, si sa definesc al doilea tunel S3
<-->Gw1.....GW_remote <->S2.
>Problema e ca source-routing-ul nu functioneaza pentru sesiuni initiate
>de pe LINUX si pentru care nu specifica in bind() ce adresa sursa sa fie
>utilizata. Ca sa rezolv sunt nevoit sa pun in MAIN ruta catre GW1 dar
>asta inseamna ca nu pot initia conexiuni de pe LINUX decat catre IP-uri
>care sunt dincolo de GW1.
>
>
pai nu vad ce mecanism ar putea ghici in locul tau cu ce IP vrei sa iesi.
ai putea sa pui niste reguli de genul
ip rule to o_clasa_de_ip table T2
dar asta ar presupune sa stii in avans adresele din spatele fiecarui
gateway. ceea ce din cite inteleg de la tine, nu iti convine
asa ca problema se pune simplu: care e algoritmul pe baza caruia decizi
cu ce IP iti doresti sa plece pachetele pt conexiuni initiate de linuxul
tau ?
>Practic pot renunta la T1 si pot face source-routing doar pentru IP-2
>iar daca vreau sa initiez conexiuni cu IP2 ca sursa, n-am decat sa caut
>aplicatii la care se poate specifica ip-ul sursa.
>In concluzie:
>- ip-ul default e cel primary
>
>
corect (cred)
>- nu pot initia conexiuni cu ip default daca nu am rute in MAIN
>
>
aproape corect. nu poti intia conexiuni pt care nu ai ruta. daca vreuna
din tabele (nu neaparat main sau T1 sau T2) are o ruta default care sa
poata fi utilizata, e OK.
>- daca o aplicatie trebuie sa plece cu ip-ul secondary, trebuie sa il
>dea ca parametru la bind(IP2)
>
>
in cazul tau, da
>- trebuie sa fac source-routing doar pe IP2 (IP1 merge pe tabela MAIN)
> /lonely wolf/ ai dreptate,
>
nu am :)
eu intelesem ca ai un unic gateway.
> problema nu poate fi rezolvata numai din rutare; fiind o situatie de situatie
> de suprapunere a ip-urilor, numai
>aplicatia poate sti la care din IPCA/B sa se conecteze, adica ce ip
>sursa trebuie sa foloseasca
>
cam asa pare.
mai gindeste-te o data daca nu poti modifica/simplifica problema. poate
folosind tunele ( de pilda), sau un program de rutare dinamica prin care
sa specifici o anumita preferinta pt o ruta sau alta.
repet: gindeste-te intii care e algoritmul de selectie a rutei/ip-ului sursa
--
Brain:The apparatus with which we think that we think.
---
Detalii despre listele noastre de mail: http://www.lug.ro/