Verwendung von NAT Traversal fĂŒr die Verbindung von Benutzern im passiven Modus

Dieser Artikel ist eine freie Übersetzung eines Eintrags in dem Blog der DC++-Entwickler.

Mit Erlaubnis des Autors (auch zur Veranschaulichung und aus Interesse) habe ich ihn mit Links versehen und mit einigen persönlichen Erkenntnissen ergÀnzt.

EinfĂŒhrung

Derzeit muss mindestens ein Nutzer aus dem Paar, das sich verbindet, im aktiven Modus sein. Der NAT-Umgehungsmechanismus ist nĂŒtzlich, wenn bei keiner der Seiten der aktive Modus eingerichtet ist. Dies geschieht normalerweise aufgrund der Blockierung eingehender Verbindungen durch eine Firewall oder ein NAT-GerĂ€t.

Wenn beide Clients im aktiven Modus sind

sendet der initiierende Client einen Befehl, der seine eigene IP-Adresse und den Port enthÀlt, $ConnectToMe an den anderen Client. Der empfangende Client stellt unter Verwendung dieser Daten die Verbindung zum Initiator her.

Wenn einer der Clients im passiven Modus ist

ĂŒber den Hub sendet der passive Client A den Befehl $RevConnectToMe an den aktiven Clienten, Bder dann mit dem Befehl $ConnectToMe antwortet.

Verwendung von NAT Traversal fĂŒr die Verbindung von Benutzern im passiven Modus
Als Server O fungiert in obigem Fall der DC-Hub.

Wenn beide Clients im passiven Modus sind, verbinden sie sich ĂŒber den ADC-Hub.

Clients, die sich hinter unterschiedlichen NATs befinden, A und B haben sich mit dem Hub verbunden. O.

Verwendung von NAT Traversal fĂŒr die Verbindung von Benutzern im passiven Modus
So sieht die Verbindung zum Hub aus der Sicht des Clients aus. A

Der Hub akzeptiert Verbindungen am Port 1511. Der Client A stellt aus seinem privaten Netzwerk heraus ausgehende Verbindungen ĂŒber den Port 50758 her. Der Hub sieht wiederum die NAT-Adresse des GerĂ€ts, arbeitet damit und ĂŒbertrĂ€gt den Clients entsprechend ihren Identifikatoren.

Kunde A sendet eine Nachricht an den Server O mit der Bitte, die Verbindung zum Client zu unterstĂŒtzen. B.

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

Auch im passiven Modus muss der Client, Bnach Erhalt dieses Befehls, seinen privaten Port mitteilen, der fĂŒr die Verbindung zum Hub ĂŒber NAT verwendet wird.

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

Nach Erhalt dieser Informationen A versucht der Client sofort, eine Verbindung zum Client herzustellen B und gibt seinen eigenen privaten Port an.

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

Was ist da interessant? Es geht darum, den Endpunkt derselben Verbindung zu verschieben, indem eine neue Verbindung zur öffentlichen Adresse ĂŒber den bereits verwendeten privaten Port hergestellt wird.

Verwendung von NAT Traversal fĂŒr die Verbindung von Benutzern im passiven Modus
Bingo!

NatĂŒrlich hat das NAT des Clients B das volle Recht, die erste Verbindungsanfrage des Clients abzulehnen, Aaber bereits seine eigene Anfrage strömt in das 'Loch', das durch diese Verbindung geschaffen wurde, und die Verbindung wird tatsĂ€chlich hergestellt.

Verwendung von NAT Traversal fĂŒr die Verbindung von Benutzern im passiven Modus
Eine Illustration, die zu dem gesamten Prozess passt, mit der EinschrĂ€nkung, dass Protokoll keine öffentlichen Ports verwendet werden, die von einer Sitzung geöffnet sind NAT‒O, sowie private Adressen.

Epilog

Zum Zeitpunkt des Schreibens des (originalen) Artikels arbeiten etwa die HÀlfte der DC-Kunden im passiven Modus. Das bedeutet, dass ein Viertel aller möglichen Verbindungen nicht hergestellt werden kann.

ZukĂŒnftig wird DC++ in der Lage sein, NAT zu umgehen, indem bestehende Verbindungen genutzt werden A‒O und B‒O um eine direkte Client-zu-Client-Verbindung herzustellen, selbst wenn A und B sie sich im passiven Modus befinden.

Quelle: habr.com

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster