Új hozzászólás Aktív témák

  • cinemazealot

    addikt

    válasz PistiSan #44343 üzenetére

    Sajnos ha NAT-olva vagy, elég macerás lesz bejutni kívülről. A TeamViewer is a külső szerverét használja arra, hogy összekösse a klienseket, legyenek azok akárhány NAT mögött is. A módszer viszont -- amit ők alkalmaznak -- házilag is kialakítható (nekem már sikerült Android alatt, ahol akárhol, akármilyen mélyen működő klienseket tudtam összekötni), noha nem feltétlenül lesz általános célra felhasználható, hiszen a kapcsolódás után a kommunikációs protokollt Neked kell diktálnod: UDP Hole Punching. Ez az eljárás tehát csak a kapcsolódást biztosítja, hogy milyen protokoll alatt folytatod a kommunikációt, az már Rajtad múlik. Továbbá szükséged lesz egy kinti szerverre (ez lehet bármilyen apró VPS), ami folyamatosan tárolja, hogy az otthoni neted milyen publikus IP cím alól érhető el.

    Az eljárás lényege voltaképpen a kapcsolódás útválasztóinak átverésén alapul. Egy router ugyanis csak akkor enged vissza (kintről befelé) egy csomagot, ha tudja róla arról, hogy az egy korábbi kifelé irányú csomagra adott válasz. A cél tehát az, hogy elhitessük vele azt, hogy ami kívülről próbál bejönni (Te próbálsz haza "telefonálni"), az egy bentről induló "kiabálásra" adott válasz. Ezért miután mindkét fél megismeri a másik fél publikus IP címét, elkezdik egymást megsorozni apró UDP csomagokkal (fontos, hogy nagyjából egyszerre kezdjék ezt el). Ha az "elárasztás" kellően sikeres, a kapcsolódásban részt vevő routerek idővel elhiszik, hogy a bentről és kintről érkező csomagok egymáshoz tartoznak, így a kapcsolat idővel fixálódik, a két fél (a NAT mögötti otthoni géped és Te kintről) pedig képes lesz tartósan is kommunikálni. Innentől már csak a hogyan a kérdés. :)

    Az implementálásban engem egyébként ez a cikk segített.

    A probléma persze még mindig az, hogy a kapcsolódáshoz valahogy kezdeményezned kell otthonról a csomagküldést, máskülönben nem fogsz tudni kivel összekapcsolódni. Tehát a lyukütéshez fog kelleni egy olyan csatornán indított trigger (pl. mobilon, mobilneten vagy akár vezetékes telefonon keresztül), ami az otthoni netedtől független.

Új hozzászólás Aktív témák