Applicazione del NAT Traversal per collegare gli utenti in modalità passiva.

Questo articolo è una traduzione libera di un post nel blog degli sviluppatori di DC++.

Con il permesso dell'autore (e per chiarezza e curiosità) l'ho arricchito con collegamenti e aggiunto alcune osservazioni personali.

Introduzione

Attualmente almeno un utente della coppia di connessioni deve essere in modalità attiva. Il meccanismo di 'bypass' NAT sarà utile nel caso in cui nessuna delle parti abbia configurato la modalità attiva. Questo accade generalmente a causa del blocco delle connessioni in ingresso da parte di un firewall o di un dispositivo NAT.

Se entrambi i client sono in modalità attiva

Il client initiatore invia un comando contenente il proprio indirizzo IP e porta $ConnectToMe all'altro client. Utilizzando questi dati, il client che riceve il comando stabilisce la connessione con l'initiatore.

Se uno dei client è in modalità passiva

Attraverso l'hub, il client passivo A invia il comando $RevConnectToMe al client attivo B, che poi risponde con il comando $ConnectToMe.

Applicazione del NAT Traversal per collegare gli utenti in modalità passiva.
Come server S nel caso sopra funge da hub DC

Se entrambi i client sono in modalità passiva su un hub ADC

Client dietro diversi NAT A e B si sono uniti all'hub S.

Applicazione del NAT Traversal per collegare gli utenti in modalità passiva.
Ecco come appare la connessione al hub dal lato del cliente A

Il hub accetta connessioni sulla porta 1511. Il cliente A effettua connessioni in uscita dalla propria rete privata attraverso la porta 50758. Il hub, a sua volta, vede l'indirizzo dell'apparato NAT, lavora con esso e trasmette ai clienti in base ai loro identificatori.

Cliente A invia al server S un messaggio chiedendo aiuto per connettersi al cliente B.

Hub: [Outgoing][178.79.159.147:1511] DRCM AAAA BBBB ADCS/0.10 1649612991

Essendo anch'esso in modalità passiva, il cliente B, ricevuta questa istruzione, deve comunicare la propria porta privata utilizzata per la connessione al 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 prova immediatamente a stabilire una connessione con il cliente B e comunica la propria porta privata.

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 sta nel dislocare il punto finale della stessa connessione creando una nuova connessione a un indirizzo pubblico tramite una porta privata già utilizzata.

Applicazione del NAT Traversal per collegare gli utenti in modalità passiva.
Bingo!

Sicuramente, in questo caso il NAT del cliente B ha tutto il diritto di rifiutare la prima richiesta di connessione dal cliente A, ma già la sua propria richiesta si dirige verso il "foro" creato da questa stessa connessione, e la comunicazione viene comunque stabilita.

Applicazione del NAT Traversal per collegare gli utenti in modalità passiva.
Un'illustrazione adatta all'intero processo con la condizione che protocollo non utilizzi porte pubbliche aperte dalla sessione NATS, così come indirizzi privati.

Epilogo

Al momento della scrittura (dell'articolo originale), circa metà dei clienti DC opera in modalità passiva. Ciò significa che un quarto di tutte le possibili connessioni non può essere stabilito.

In futuro DC++ sarà in grado di «bypassare» il NAT, utilizzando connessioni esistenti AS e BS per stabilire una connessione diretta client-client, anche se A e B si trovano in modalità passiva.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster