Questo articolo è una traduzione libera di una delle voci in
Con il permesso dell'autore (oltre che per chiarezza e interesse), l'ho colorato di link e integrato con alcune ricerche personali.
Introduzione
Almeno un utente della coppia di connessione deve essere in modalità attiva in questo momento. Il meccanismo di attraversamento NAT sarà utile quando la modalità attiva non è configurata su nessuno dei due lati. Ciò è solitamente dovuto a un firewall o un dispositivo NAT che blocca le connessioni in entrata.
Se entrambi i client sono in modalità attiva
Il client che ha avviato invia un comando contenente il proprio indirizzo IP e la propria porta
Se uno dei client è in modalità passiva
Attraverso l'hub, un client passivo A invia un comando
Come servitore S nel caso sopra è presente un hub DC
Se entrambi i client sono in modalità passiva, attivo
Client dietro diversi NAT A и B si è unito all'hub S.
Ecco come appare la connessione all'hub dal lato client A
L'hub accetta connessioni sulla porta 1511. Client A effettua connessioni in uscita dalla sua rete privata tramite la porta 50758. L'hub, a sua volta, vede l'indirizzo del dispositivo NAT, lavora con esso e lo trasmette ai client in base ai loro identificatori.
Cliente A invia al server S messaggio che chiede aiuto per connettersi con un cliente B.
Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991
Anche in modalità passiva, il client B, ricevuto questo comando, dovrà segnalare la propria porta privata utilizzata per connettersi all'hub tramite NAT.
Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991
Dopo aver ricevuto queste informazioni il cliente A tenta immediatamente di stabilire una connessione con il client B e segnala il proprio porto privato.
Hub: [Outgoing][178.79.159.147:1511] D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991
Qual è l'interesse? L'interesse è spostare l'endpoint della stessa connessione creando una nuova connessione ad un indirizzo pubblico attraverso una porta privata già utilizzata.
Bingo!
Naturalmente, in questo caso il client NAT B ha tutto il diritto di rifiutare la prima richiesta di connessione da parte di un client A, ma la sua stessa richiesta si precipita nel “buco” creato proprio da questa connessione, e la connessione viene stabilita.
Illustrazione adatta all'intero processo con l'avvertenza che
Finale
Al momento della stesura dell'articolo (originale), circa la metà dei client DC lavora in modalità passiva. Ciò significa che un quarto di tutti i collegamenti possibili non può essere realizzato.
In futuro
Fonte: habr.com