Anvendelse af NAT Traversal til at forbinde brugere i passiv tilstand

Denne artikel er en fri oversættelse af et indlæg i bloggen for DC++-udviklerne.

Med tilladelse fra forfatteren (og for tydelighedens og interesse skyld) har jeg farvet den med links og tilføjet nogle personlige overvejelser.

Introduktion

I øjeblikket skal mindst én bruger af de to forbindende være i aktiv tilstand. NAT-bypassets mekanisme vil være nyttig, når ingen af parterne har aktiveret aktiv tilstand. Dette sker normalt på grund af blokering af indgående forbindelser af en firewall eller en NAT-enhed.

Hvis begge klienter er i aktiv tilstand

Sender initiativ-klienten en kommando, der indeholder dens egen IP-adresse og port til $ConnectToMe den anden klient. Ved hjælp af disse data etablerer den modtagende klient forbindelse til initiativtageren.

Hvis en af klienterne er i passiv tilstand

Sender den passive klient A igennem hubben kommandoen $RevConnectToMe til den aktive klient, Bsom derefter svarer med kommandoen $ConnectToMe.

Anvendelse af NAT Traversal til at forbinde brugere i passiv tilstand
Som server Angreb op til 1,2 i ovenstående tilfælde fungerer DC-hubben

Hvis begge klienter er i passiv tilstand på ADC-hubben

Klienter bag forskellige NAT'er, A og B der er tilsluttet hubben. Angreb op til 1,2.

Anvendelse af NAT Traversal til at forbinde brugere i passiv tilstand
Sådan ser forbindelsen til hubben ud fra klientens side. A

Hubben accepterer forbindelser på port 1511. Klienten A foretager udgående forbindelser fra sit private netværk gennem port 50758. Hubben ser i sin tur NAT-enhedens adresse, arbejder med den og transmitterer til klienterne i overensstemmelse med deres identifikatorer.

Kunde A Sender til serveren Angreb op til 1,2 en besked, der beder om hjælp til at forbinde med klienten. B.

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

Idet den også er i passiv tilstand, skal klienten, Befter at have modtaget denne kommando, informere om sin private port, der bruges til at forbinde til hubben gennem NAT.

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

Efter at have modtaget disse oplysninger A forsøger klienten straks at etablere forbindelse med klienten B og oplyser sin egen private port.

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

Hvad er interessen? Interessen ligger i at flytte slutpunktet for den samme forbindelse ved at oprette en ny forbindelse til den offentlige adresse gennem en allerede anvendt privat port.

Anvendelse af NAT Traversal til at forbinde brugere i passiv tilstand
Bingo!

Uden tvivl har klientens NAT B fuld ret til at afvise den første forbindelseanmodning fra klienten, Amen allerede dennes egen anmodning strømmer ind i det "hul", der er oprettet af denne forbindelse, og forbindelsen etableres.

Anvendelse af NAT Traversal til at forbinde brugere i passiv tilstand
Illustration, der passer til hele processen med den bemærkning, at protokol bruger ikke offentlige porte, der åbnes af sessionen NAT‒Angreb op til 1,2, samt private adresser.

Epilog

På tidspunktet for skrivningen af den (oprindelige) artikel arbejder omkring halvdelen af DC-kunderne i passiv tilstand. Det betyder, at en fjerdedel af alle mulige forbindelser ikke kan etableres.

Fremadrettet vil DC++ kunne "omgå" NAT, ved at bruge eksisterende forbindelser A‒Angreb op til 1,2 og B‒Angreb op til 1,2 for at etablere en direkte forbindelse klient-til-klient, selv når A og B de er i passiv tilstand.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster