NAT Traversal'i rakendamine passiivses režiimis ühenduste loomiseks

See artikkel on vabalt tõlgitud ühest postitusest DC++ arendajate blogis.

Autori loal (ja ka silmade avardamiseks ja huvi pärast) olen selle täiendavatele linkidele värvinud ja mõned isiklikud tähelepanekud lisanud.

Sissejuhatus

Praegu peab vähemalt üks paarist ühenduvast kasutajast olema aktiivses režiimis. NAT'i „ümbersõidumehhanism” on kasulik siis, kui kumbki osapool ei ole aktiivse režiimiga seadistatud. See juhtub tavaliselt siis, kui tulekahju või NAT seade blokeerib sissetulevad ühendused.

Kui mõlemad kliendid on aktiivses režiimis

Alustaja klient saadab käsu, mis sisaldab tema enda IP-aadressi ja porti $ConnectToMe teisele kliendile. Saades selle teabe, loob vastuvõttev klient ühenduse algataja kohta.

Kui üks klient on passiivses režiimis

Keskuse kaudu saadab passiivne klient A käsu $RevConnectToMe aktiivsele kliendile B, kes seejärel vastab käsuga $ConnectToMe.

NAT Traversal'i rakendamine passiivses režiimis ühenduste loomiseks
Serverina S mängib üleval DC hub

Kui mõlemad kliendid on passiivses režiimis ADC hubis

Erinevates NAT-se asuvad kliendid A ja B ühendatud hubiga S.

NAT Traversal'i rakendamine passiivses režiimis ühenduste loomiseks
Nii näeb kliendi poolt hubiga ühendus välja A

Hub võtab ühendusi vastu porti 1511. Klient A teeb väljaminevaid ühendusi oma eravõrgust porti 50758 kaudu. Hub näeb omakorda NAT-seadme aadressi, töötab sellega ja edastab klientidele vastavalt nende identifikaatoritele.

Klient A saadab serverile S sõnumi abipalvega ühendada klientidega B.

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

Olles samuti passiivses režiimis, klient B, saades selle käsu, peab teatama oma eraportaali, mida kasutatakse hubiga ühenduse loomiseks NAT-i kaudu.

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

Pärast selle teabe saamist klient A ütleb kohe üritab luua ühendust kliendiga B ja teatab oma eraportaali.

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

Mis on huvi? Huvi seisneb sama ühenduse lõpp-punkti nihutamises, luues uue ühenduse avalikku aadressi kaudu juba kasutatava eraportaali.

NAT Traversal'i rakendamine passiivses režiimis ühenduste loomiseks
Bingo!

Kindlasti, samas kliendi NAT B on täielik õigus esimest ühenduspäringut kliendilt tagasi lükata A, kuid tema enda päring suundub selle ühenduse tekitatud "auku" ja ühendus siiski luuakse.

NAT Traversal'i rakendamine passiivses režiimis ühenduste loomiseks
Illustratsioon, mis sobib kogu protsessi juurde, tingimusel et protokoll ei kasuta avalikke porte, mida sessioon avab NATS, samuti privaatseid aadresse.

Epilog

Artikli (originaali) kirjutamise ajal töötas umbes poole DC klientidest passiivses režiimis. See tähendab, et neljandik kõigist võimalikest ühendustest ei tohi teostuda.

Edasi DC++ suudab "ümber minna" NAT-ile, kasutades olemasolevaid ühendusi AS ja BS otsepöördumise loomiseks klient-client, isegi kui A ja B need on passiivses režiimis.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster