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/
