Kezdőoldal » Számítástechnika » Programozás » Hogyan kell NAT-ot lyukasztani...

Hogyan kell NAT-ot lyukasztani TCP-n?

Figyelt kérdés

Amikor a kliens csatlakozik egy publikus portal rendelkező szerverre megpróbálok létrehozni egy szervert a kliensen ami azon a porton figyel amivel csatlakozott a publikus szerverre.

Viszont az a gond, hogy amikor megpróbálom létrehozni ezt a szervert mindig olyan hibát kapok, hogy a port már használatban van.

Ez a módszer csakis MacOS operációs rendszeren működik ott nem ad ilyen hibát, Android/iOS/Windows/Linux-on viszont igen.

Mit kellene másképp csinálnom?



2020. ápr. 21. 23:30
 1/5 anonim ***** válasza:
82%

Adatkapcsolati szinten (layer 2) tudod figyelni az adatforgalmat, csak akkor neked kell kihámozni a keretből az IP címet és port számot. (Ld. network sniffing)

(Windows alatt kicsit macerásabb a raw socket-ek használata, Linux ebben megengedőbb.)


"NAT-ot lyukasztani"

?? :o

2020. ápr. 22. 00:01
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

Lehet nem NAT lyukasztásnak nevezik, egy régebbi prog.hu-s cikkben olvastam így róla.


A lényeg, hogy szeretnék peer-to-peer kapcsolatot létrehozni két kliens között, viszont nem hozható létre közvetlen PTP kapcsolat ha mindkét kliens NAT mögött van.

Találtam egy "hole punching" nevezetű megoldást amikor a két kliens csatlakozik egy szerverre ott adatot cserélnek, hogy ki milyen ipvel és portal csatlakozott a szerverre és utána a csomagokat már arra az ipre és portra küldik tovább amit megkaptak egymástól.

De ahhoz, hogy valamelyik kliens tudja fogadni a csomagokat kell indítania egy szervert közvetlen a publikus szerverre kapcsolódás után ugyanazzal a belső ipvel és portal amivel elindította a kommunikációt a publikus szerver felé, és itt a gond.

Nem lehet létrehozni szervert ugyanazzal az ipvel és portal amíg aktív a socket amivel kapcsolódott a publikus szerverre mert visszadob 'EADDRINUSE' hibával.

Találtam egy példát: [link]

A clientA.js-ben található a gond amikor a szervert megpróbálja létrehozni a c.localPort, c.localAddress változókkal.

2020. ápr. 22. 11:27
 3/5 anonim ***** válasza:
84%

Neked tűzfal lyukasztás vagy IP forward kell.


IPv4-nek van NAT hálózata, ami kintről nézve 1 IP-t takar. Így ezt az IP-t "meglőve" adott porton a Router nem tudja, mely NAT alatti gépnek küldje tovább. Ezt külön be kell állítani, hogy egy [külsőIP:10000]-res portra érkező mely [melsőIP:PORT]-ra továbbítsa. Nyilván a külső IP adott. Tehát a külső portot és a belső IP+portot kell megadni.

Ofc, a külső portnak nem kell feltétlen a szerveren figyelt portnak megfelelnie. Azaz simán lehet egy kulso-ip:5000 -> belso-ip:443 is.

2020. ápr. 22. 13:07
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

A belső-ip:port-ot, hogy adom meg a csomagnak?

És ezt nem a NAT-oló gép fogja eldönteni, hogy külső-ip:port-ra érkező csomagokat irányítsa belső-ip:port-ra?


Közben az 'EADDRINUSE' problémára találtam megoldást, viszont a csomagok sehogy nem jutnak be a NAT-olt eszközhöz.

2db telenor mobilinternetes telefont szeretnék összekötnni.

Lehetséges, hogy a telenor NAT-oló gépe ezt teljesen letiltja, hogy más ip és portról fogadjon csomagokat?

2020. ápr. 28. 08:34
 5/5 anonim ***** válasza:
69%

???


Mind 2 telenoros mobilnet oszt hálózatot egy mögötte lévő gép-nek? (ezt eddig miért nem mondtad?)

Telefonon NAT konfiguráció nem hiszem, hogy fogsz csinálni. Akkor csinálnék egy a két gép között egy pont-pont kapcsolatú VPN-t.

2020. ápr. 28. 09:31
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!