Come faccio a far funzionare un server TCP dietro un router (NAT) senza alcuna configurazione di reindirizzamento necessaria

StackOverflow https://stackoverflow.com/questions/1511562

  •  19-09-2019
  •  | 
  •  

Domanda

Lo scenario è il seguente. Ho due macchine A e B: A: client (dietro NAT) B: Server (dietro NAT)

Voglio che B sia in grado di ascoltare su una determinata porta, in modo che A possa inviare pacchetti a B attraverso quella porta TCP specifica e ricevere qualsiasi risposta. Se entrambe le macchine non sono dietro un Nat, è un processo foward piuttosto dritto. Tuttavia, come faccio a farlo funzionare in modo che funzioni anche quando B è dietro un router, senza che lui debba cambiare la configurazione del router abilita un po 'di port forward, ecc ...

Ad esempio, in che modo i programmi peer-to-peer come i client torrent funzionano senza che l'utente abbia qualcosa da configurare?

È stato utile?

Soluzione

Un'alternativa a un server proxy è un server di matching. Invece di proxare tutto il traffico, il match maker negozia fino a quando i pari non potranno parlare tra loro. Ciò implica trovare gli IP pubblici esterni dei coetanei e parlare con ciascuno in modo che il firewall/router sappia che i coetanei desiderano comunicare.

Questo è chiamato foro pugno E spesso deve essere fatto dal match maker piuttosto che dai coetanei stessi. Una volta che il foro viene preso a pugni, il match maker può raccontare i coetanei l'uno sull'altro e può comunicare direttamente.

Altri suggerimenti

Per rispondere all'esempio dei programmi peer to peer e in generale: esiste una tecnologia chiamata Plug and play universali che i router Nat possono utilizzare per consentire ai clienti dietro di loro di esporre le porte all'esterno. Questo è ciò che i client BitTorrent possono utilizzare in modo che gli altri client possano connettersi direttamente ad essi.

Dovrai:

  1. Imposta l'inoltro di porta dal gateway NAT di fronte al server nella macchina è in esecuzione il software del server e fai connettere il client all'indirizzo IP di quel gateway.

  2. Crea un server proxy seduto tra i 2 gatewy NAT in modo che sia il server che il client possano connettersi a quello. Sia il server che il client devono impostare una connessione a quel proxy che mediano i dati tra tali 2 connessioni.

Il pulizia del foro è moderatamente ben compreso per la comunicazione UDP, ma può essere utilizzato in modo affidabile anche per impostare flussi TCP peer-to-peer. Ecco l'articolo ben dettagliato su TCP e UDP:

http://www.brynosaurus.com/pub/net/p2pnat/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top