Perché il P2P necessita di portforwarding quando si trova dietro NAT? [chiuso]

1

Correggimi se ho torto, ma se un nodo partecipa al peer-to-peer, se si trova dietro un NAT, è il port forwarding per essere in grado di connettersi. Perché è necessario il port forwarding? So che ci sono delle eccezioni a questo tipo di attraversamenti NAT, ma vorrei prima capire il problema di base. Qualcuno può spiegare in termini molto semplici?

Fondamentalmente la mia domanda è quando e perché è port forwarding nescecary?

    
posta Celeritas 07.01.2014 - 09:43
fonte

3 risposte

2

Esistono 2 tipi principali di NAT, è possibile avere NAT uno ad uno (NAT statico) in cui un indirizzo IP interno viene convertito in un IP esterno e si dispone di un NAT (Nascondi NAT) molti a uno in cui molti indirizzi IP mappano a un singolo indirizzo IP. In molti a uno NAT quando un host interno si connette a un host esterno le informazioni IP vengono inserite nelle tabelle di sessione (sto usando questo come termine generico per comprendere tutte le tabelle che un firewall può utilizzare in questo caso) in modo che il firewall sappia cosa fare con i pacchetti di ritorno.

Le cose diventano un po 'più complicate per le sessioni avviate da un host al di fuori del firewall. Con uno a uno NAT è molto semplice in quanto vi è solo un posto in cui il pacchetto può andare, ma quando ci sono molti host dietro un singolo indirizzo IP il dispositivo di routing non ha alcun indicatore di dove debba essere diretto un pacchetto in ingresso. Il port forwarding è un modo per risolvere questo problema, una regola port forward consentirà al dispositivo di eseguire la traduzione dell'indirizzo di destinazione e inoltrare il pacchetto di conseguenza.

La conversione delle porte non viene spesso utilizzata come soluzione nelle reti aziendali, anche se posso pensare ad alcune eccezioni. Le aziende di solito hanno un blocco di IP pubblicamente instradabili, quindi configureranno un NAT uno-a-uno quando un host interno richiede l'accesso da un IP esterno (o semplicemente assegnerà alla casella un IP esterno in primo luogo). La traduzione di porte è molto più di una soluzione a banda larga domestica in cui il router ha solo un indirizzo IP da utilizzare. Quando si attiva il software p2p, le connessioni avviate dall'esterno non saranno in grado di raggiungerlo a meno che non sia presente un'impostazione di port forwarding, eseguita manualmente ma più probabilmente UPnP, in cui l'applicazione comunica al router quale dovrebbe essere l'impostazione di port forwarding.

    
risposta data 07.01.2014 - 10:24
fonte
1

Supponiamo che tu abbia un software, che è in ascolto su una porta specificata. Il problema di base è che non si sa quale sarà questo numero di porta dopo NAT traversal. È importante che il software remoto lo sappia per poter creare una connessione.

(Ulteriori dettagli: devi conoscere questa porta dopo NAT traversal e inviarla al client remoto. Cosa succede se quel client si trova anche dietro un NAT?)

    
risposta data 07.01.2014 - 10:25
fonte
1

L'esempio comune di un protocollo P2P è Bittorrent. In questo protocollo le comunicazioni sono spesso gestite da un tracker. Questo significa che per il trasferimento dei dati sono necessari almeno tre nodi:

+-----+               +---------+      +------+      
|     |  1.1.1.1:500  |         |      |      |      
| You |<------------->| Tracker |<---->| Peer |
|     |               |         |      |      |      
+-----+               +---------+      +------+      

La connessione inizia con il dire al tracker il tuo indirizzo IP e la porta su cui puoi collegarti. Il tracker lo memorizza in una tabella di stato:

+--------------+------------+
| Nodes        | Completion |
| 1.1.1.1:500  | 0%         |
| 2.2.2.2:1000 | 100%       |
+--------------+------------|

Peer ha stabilito che è collegabile alla porta 1000. Torneremo su questo.

Indirizzi 1.1.1.1 e 2.2.2.2 rappresentano gli indirizzi esterni dei dispositivi NAT. Questi dispositivi sono ubiquitari nell'odierno Internet poiché quasi ogni utente ha un router installato per fornire l'accesso a diversi computer, cellulari, console di gioco ecc.

Ciò significa che dietro questi indirizzi ci sono più indirizzi, uno per ciascuno di questi dispositivi.

Tuttavia, poiché un indirizzo può essere collegato solo a una porta nell'intervallo 1-65535 , in che modo il router sa se connettere una richiesta di porta 500 al computer con il client torrent in esecuzione? Lo istruisci fornendogli una regola chiamata port forwarding per dire "qualsiasi connessione ricevuta sulla porta 500, voglio essere inoltrata a me" - dove me è il tuo indirizzo interno (uno di 10.x.x.x , 192.168.x.x o 172.16.x.x ).

Come ti sei appena unito allo "sciame" annunciando al tracker, il tracker ti manda la tabella di stato sopra. Sai che ti sei appena iscritto e hai completato lo 0%, ma che Peer ha il completamento al 100%, il che significa che se ti connetti a lui sarai in grado di iniziare a ricevere i dati.

Se Peer non ha "inoltrato" la sua porta (1000, come ha riferito al tracker quando ha annunciato), tuttavia non sarà possibile connettersi e iniziare a ricevere dati. Questo ovviamente non è desiderabile dato che ora non puoi completare il torrent perché nessuno è disponibile per condividerlo.

Se Peer non ha annunciato da quando ti sei connesso, non sa che tu esisti ancora. Tuttavia, se hai configurato correttamente il port forwarding, quando ti annuncia e ricevi la nuova tabella di stato con te, può iniziare la connessione con te. Questo funzionerà da quando la tua porta viene inoltrata.

Se entrambi di te non hanno abilitato il port forwarding, allora nonostante stavi annunciando al tracker, perché le porte che hai detto al tracker non tornano effettivamente alla tua macchina , tutte le possibili connessioni dati sono bloccate dai tuoi router / dispositivi NAT.

Quindi in breve: il port forwarding aiuta a migliorare lo scambio di dati P2P rendendo più semplice la creazione di connessioni e, a meno che ogni membro non abiliti il port forwarding di qualche tipo, è impossibile scambiare dati in modo P2P.

    
risposta data 07.01.2014 - 14:04
fonte

Leggi altre domande sui tag