lonely wolf wrote:

>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
>
>
>  
>
cred ca din toate astea am inteles cum se face selectia ip-ului sursa; 
rutarea efectiva o decide tabela de rutare la pct.1, ce urmeaza se pare 
ca nu era asa simplu pe cat mi-am imaginat ...

1. se afla gw din tabela de rutare pentru o anumita destinatie
2. se cauta o interfatza de iesire catre acel gw
3. daca interfatza are un singur IP, il foloseste, STOP
4. se cauta IP-uri dintre cele de pe interfatza care sa fie in acelasi 
subnet cu gw; daca e unul singur, il foloseste, STOP
5. se alege din lista de IP-uri de la 4, cel care este primary, STOP

din pacate singurul sistem a carui configuratie pot s-o modific este cel 
in cauza (LINUX), decizia in privinta IP-ului sursa folosit (altul decat 
default) va trebui luata de aplicatie...


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


Raspunde prin e-mail lui