On Wednesday 19 January 2005 04:16 pm, 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.
> 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.
> Inteleg ca IP-ul sursa implicit este IP1, cel primary. Deci pot pune
> GW-1 din T1 in MAIN si-mi vor functiona conexiunile cu bind() implicit
> cu IP1src - via GW-1.
> 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.

Daca chiar ai nevoie de conexiuni cu IP2 si pentru aplicatii la care nu poti 
sa specifici sursa, mai exista o posibilitate: o biblioteca care sa 
incercepteze bind/connect/socket/etc., si in functie de anumiti parametri 
(variabile de mediu de exemplu) sa forteze bind-ul. Si nu zic asta la modul 
general, chiar am folosit solutia asta intr-o situatie oarecum similara si 
merge pentru aplicatii ce folosesc TCP/UDP (lynx de exemplu). E mai complicat 
un pic la ping/traceroute.

tavi

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


Raspunde prin e-mail lui