Ús de NAT Traversal per connectar usuaris en mode passiu

Aquest article és una traducció gratuïta d'una de les entrades a Bloc de desenvolupadors DC++.

Amb el permís de l'autor (així com per claredat i interès), el vaig pintar amb enllaços i el vaig complementar amb una investigació personal.

Introducció

Almenys un usuari de la parella de connexió ha d'estar en mode actiu en aquest moment. El mecanisme de travessa NAT serà útil quan el mode actiu no estigui configurat a cap dels costats. Això sol ser degut a un tallafoc o un dispositiu NAT que bloqueja les connexions entrants.

Si tots dos clients estan en mode actiu

El client iniciador envia una ordre que conté la seva pròpia adreça IP i port $ConnectToMe a un altre client. Amb aquestes dades, el client que va rebre l'ordre estableix una connexió amb l'iniciador.

Si un dels clients està en mode passiu

A través del hub, un client passiu A envia una ordre $RevConnectToMe client actiu Bque després respon amb l'ordre $ConnectToMe.

Ús de NAT Traversal per connectar usuaris en mode passiu
Com a servidor S en el cas anterior hi ha un concentrador de corrent continu

Si els dos clients estan en mode passiu activat concentrador ADC

Clients darrere de diferents NAT A и B es va unir al centre S.

Ús de NAT Traversal per connectar usuaris en mode passiu
Així és com es veu la connexió amb el concentrador des del costat del client A

El concentrador accepta connexions al port 1511. Client A fa connexions sortints des de la seva xarxa privada a través del port 50758. El concentrador, al seu torn, veu l'adreça del dispositiu NAT, treballa amb ell i l'emet als clients segons els seus identificadors.

Client A envia al servidor S missatge demanant ajuda per connectar amb un client B.

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

També en mode passiu, el client B, després d'haver rebut aquesta ordre, ha d'informar del seu port privat utilitzat per connectar-se al concentrador mitjançant NAT.

Hub: [Incoming][178.79.159.147:1511] DNAT BBBB AAAA ADCS/0.10 59566 1649612991

Després de rebre aquesta informació el client A immediatament intenta establir una connexió amb el client B i informa del seu propi port privat.

Hub:		[Outgoing][178.79.159.147:1511]	 	D<b>RNT</b> AAAA BBBB ADCS/0.10 <b>50758</b> 1649612991

Quin és l'interès? L'interès és canviar el punt final de la mateixa connexió creant una nova connexió a una adreça pública a través d'un port privat ja utilitzat.

Ús de NAT Traversal per connectar usuaris en mode passiu
Bingo!

Per descomptat, en aquest cas el client NAT B té tot el dret a rebutjar la primera sol·licitud de connexió d'un client A, però la seva pròpia petició es precipita al "forat" creat per aquesta mateixa connexió, i la connexió s'estableix.

Ús de NAT Traversal per connectar usuaris en mode passiu
Il·lustració adequada per a tot el procés amb l'advertència que protocol no utilitza ports públics oberts per la sessió NATS, així com adreces privades.

Epíleg

En el moment d'escriure l'article (original), aproximadament la meitat dels clients DC estan treballant en mode passiu. Això vol dir que no es poden fer una quarta part de totes les connexions possibles.

Més lluny DC++ podrà evitar el NATutilitzant les connexions existents AS и BS per establir una connexió directa client-client, encara que A и B estan en mode passiu.

Font: www.habr.com

Afegeix comentari