NAT-to-NAT building a TCP socket!!

Pagina: 1
Acties:

  • michaelbar
  • Registratie: April 2008
  • Laatst online: 08-05-2025
Beste Tweakers!

Ik ben bezig met een applicatie bouwen die heel afhankelijk is van peer-to-peer, makkelijk in normale situaties, zoals server zonder firewall, maar nu probeer ik iets wat volgens mijn kennis onmogelijk is, en daar zou ik graag advies over willen!

Ik wil dus in een NAT-to-NAT situatie een TCP socket opbouwen tussen de twee PCs die allebij ge-NAT zijn. Dit gaat om een proces dat dus geen gebruik maakt van nat helper, nat2nat, upnp, nat-pmp, relay servers, PNAT / port forwarding, etc.

De applicatie gebruikt een relay dienst van 1 kb/s ofzo om toch IP adressen en poort nummers en eventuele andere belangrijke connectie informatie door te voeren (server weet zo zijn externe WAN adres). Op deze manier weet de server applicatie dat de client een verbinding met hem probeert te maken maar niet verder komt dan de (serverside) NAT.

Is er een manier om de server applicatie, de (serverside) router aan te laten sturen, dat hij zodanig aan de (serverside) router vertelt, dat er dus paketten binnen komen die eigenlijk ge-forward moet worden naar de server applicatie (die dus een lokaal IP adres heeft eg. 192.168.0.X)?

Ik neem aan dat de (clientside) router, onthoud vanaf welke (interne private) client het originele verzoek komt, en dus in het geval van een reply weet waar het terug heen moet (normale NAT) waardoor de socket word opgebouwd?! Klopt dit? Als via de 1kb/s datalaag aan de server kan worden aangegeven op welk IP:POORT hij dus een ACK moet terug sturen, is dat dan al genoeg om een ACK te sturen naar de reply-afwachtende-client-router/NAT om een socket op te bouwen?

Als er fouten in mijn analize zitten hoor ik het heel graag! En sterker nog hoor ik het liefst iets over een eventueel antwoord!

MVG,

Michael Barton

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 28-02 18:05
Ja, en het heet UPNP. Elke andere manier om dit voor elkaar te krijgen is gewoon een variant hierop.

  • michaelbar
  • Registratie: April 2008
  • Laatst online: 08-05-2025
"Dit gaat om een proces dat dus geen gebruik maakt van nat helper, nat2nat, upnp, nat-pmp, relay servers, PNAT / port forwarding, etc."

Nog ander advies?

MVG,

Michael Barton

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 28-02 18:05
michaelbar schreef op zondag 16 mei 2010 @ 21:12:
Is er een manier om de server applicatie, de (serverside) router aan te laten sturen, dat hij zodanig aan de (serverside) router vertelt, dat er dus paketten binnen komen die eigenlijk ge-forward moet worden naar de server applicatie (die dus een lokaal IP adres heeft eg. 192.168.0.X)?
Oftewel: UPNP. Ik probeer je dus duidelijk te maken dat wat jij wil UPNP heet. Je hebt gewoon geen alternatief, tenzij je zowel de server als de client verbinding laat maken met een derde server die niet geNAT is, maar dat is niet wat jij hierboven beschrijft.

  • spone
  • Registratie: Mei 2002
  • Niet online
Ik denk niet dat dit mogelijk is. In den beginne zal er toch een soort van communicatie opgezet moeten worden, en die zal onherroepelijk door een NAT heen moeten. Programma's als Hamachi lossen dit op door aan de kant van de Hamachi servers wat poorten open te zetten, waar beide clients naartoe connecten. Wanneer er eenmaal een 'gat' in hun lokale NAT gateway geslagen is, kunnen ze onderling een verbinding opzetten en deze in de lucht houden.

Mogelijk is dit niet wat je bedoelt, dan graag wat verduidelijking :)

[ Voor 7% gewijzigd door spone op 16-05-2010 23:20 ]

Desktop: i5-14600K, 32GB DDR5-6000, RTX 5070 Ti; Laptop: MacBook Pro M1 Pro 14" 16/512; Server: R9-7950X, 192GB DDR5-5600


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Als je denkt dat dit zonder hulpmiddelen kan moet je toch eens wat dieper in TCP/IP en met name het gedeelte Address Translation gaan duiken :)

Hoe weet de router aan de ontvangende kant anders naar welk interne IP het pakketje moet?

Edit: oh, anders lees ik even over je "relay dienst" heen 8)7 Ja, zo werken torrent-applicaties ook, kijk anders eens in de source van een opensource bittorrent-client hoe ze verbinding maken met een adres dat ze van de tracker hebben gekregen. :)

[ Voor 34% gewijzigd door CodeCaster op 17-05-2010 09:00 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • joopv
  • Registratie: Juli 2003
  • Niet online
Leesvoer:

http://sparrow.ece.cmu.edu/~adrian/projects/natblaster.pdf

Deze techniek wordt door diverse peer-2-peer applicaties gebruikt.

  • Plopeye
  • Registratie: Maart 2002
  • Laatst online: 23-02 15:39
Maak gebruik van een STUN server...

Wordt ook gebruikt om SIP telefonie over NAT mogelijk te maken...

Unix is user friendly, it's only selective about his friends.....

Pagina: 1