Verwendung von IPv6 mit Advanced Direct Connect

Es ist interessant, die Entwicklung des Filesharing-Netzwerks zu beobachten, aber noch interessanter ist es, daran teilzunehmen.

Heute installieren und starten Sie ein modernes NMDC Hub erhält der frischgebackene Administrator Zugriff auf nahezu alle Entwicklungen und Erfahrungen seiner Vorgänger in diesem Bereich. Es verfügt über ein System, das sich erweitern und anpassen lässt, auch mithilfe zahlreicher Skripte.

С ADC Naben sonst. Der Entwurf dieses Protokolls soll erweiterbar sein. Möchten Sie eine neue Funktion? Nun, bieten Sie es an, bewerben Sie es, implementieren Sie es, implementieren Sie es, nutzen Sie es.

Ins Englische übersetzen

Infolgedessen können Sie natürlich einen fertigen Hub aus der Box bekommen, aber ihn einfach zu starten und zu vergessen, wird nicht gut sein. Erweiterbarkeit bedeutet im historischen Kontext auch, dass je nach Version unterschiedlich viele unterschiedliche Funktionen von Client- und Serversoftware vorhanden sind. Und was für einen Benutzer problemlos funktioniert, kann mit dem Client eines anderen nicht kompatibel sein, und dies muss berücksichtigt werden.

Dies geschah mit IPv6. Der alte Mann NMDC weiß im Prinzip nicht, wie es geht, aber ADC selbst ist dazu bereit. Allerdings ist nicht alles so einfach.

Nur eine kleine Theorie

Der „aktive“ Benutzer kann eingehende Verbindungen annehmen. Tatsächlich ist die daraus resultierende Verbindungsanforderung tatsächlich Einladung.

Ein „passiver“ Benutzer kann grundsätzlich nur ausgehende Anfragen nutzen. Durch den Hub er просит Der aktive Benutzer sendet eine Einladung – und die Verbindung wird hergestellt.

Verwendung von IPv6 mit Advanced Direct Connect

Und ja, dieser Mechanismus hängt nicht von der Version des verwendeten IP-Protokolls ab.

Swan, Krebs und Hecht

Lassen Sie uns über Client-Software sprechen.

IPv6-Unterstützung DC ++ ist experimenteller Natur. Es gibt keine separaten Einstellungen dafür, und umso überraschender war es für mich, unterschiedliche Betriebsmodi für verschiedene IP-Versionen zu sehen, mit Passiv nur für die sechste, aber das ist nicht korrekt.

Es war nicht möglich, den aktiven Modus während der manuellen Konfiguration zu erhalten, selbst wenn explizit eine IP-Domäne mit einem AAAA-Eintrag als WAN verwendet wurde, aber im automatischen Modus mit UPnP funktionierte alles wie erwartet.

AirDC ++ unterstützt auch IPv6-Verbindungen und ist völlig unabhängig von IPv4 implementiert. Darüber hinaus modifiziert dieser Client Benutzer-Tags so, dass Betriebsmodi für beide IP-Protokolle gleichzeitig angezeigt werden. Die Hubs selbst wissen (noch) nicht, wie das geht, was schade ist.

Ich muss sofort einen Vorbehalt machen: AirDC++ macht das alleine und für sich. Der Einfachheit halber werde ich in Zukunft Kombinationen wie verwenden AP oder AA als Hinweis auf aktive bzw. passive Betriebsmodi für IPv4 bzw. IPv6 und nicht deren Anzeige im realen Client-Tag auf dem realen Hub. Es ist wichtig.

In unserem Experiment werden wir verwenden FlylinkDC++ als Client, der mit IPv6 überhaupt nicht vertraut ist. Es sollte auch beachtet werden, dass Unterstützung NATT Für ihn war dieser Artikel zum Zeitpunkt des Schreibens nirgendwo implementiert.

Hauptseite

Zunächst betrachten wir offensichtlich unmögliche Verbindungen zwischen Benutzern verschiedener Versionen des IP-Protokolls. Wird für den Test verwendet IPv6-fähiger Hub mit Ressourcen-A- und AAAA-Einträgen für den Domänennamen, der als Adresse fungiert.

Verwendung von IPv6 mit Advanced Direct Connect

Bitte beachten Sie, dass beim (tatsächlichen) Versuch, einen Benutzer mit einer IP-Adresse der Version XNUMX zu kontaktieren, ein Fehler angezeigt wird.

Hub:	[Outgoing][IPv4:412]	 	DRCM AACX AACU ADCS/0.10 337151563
Hub:	[Incoming][IPv4:412]	 	DCTM AACU AACX ADCS/0.10 1988 337151563
Hub:	[Outgoing][IPv4:412]	 	DSTA AACX AACU 240 IPsunknown

In menschlicher Übersetzung klingt es so

P4: – Kann ich mich an dir festhalten?
A6: – Festhalten!
P4: – Leben ist Schmerz 0_0

Bei Bedarf ein kurzes Wörterbuch, hier.

Und wenn es umgekehrt ist und die Verbindung hergestellt wird A4, dann wird kein Fehler angezeigt und die Verbindung hängt einfach.

Hub:	[Outgoing][IPv4:412]	 	DCTM AACX AACU ADCS/0.10 1993 3871342713

Sein, nicht scheinen

Wichtig ist der auf dem Hub angezeigte Verbindungsmodus.

Clients ohne IPv6-Unterstützung müssen Benutzer, die über IPvXNUMX verbunden sind, als eindeutig passiv betrachten, einfach weil der Hub für sie nicht aktiv ist I4 oder I6 Feld entsprechend aus.

Verwendung von IPv6 mit Advanced Direct Connect
FlylinkDC++ vs. IPv6

In Wirklichkeit ist die Situation einfacher und komplexer zugleich.

Verwendung von IPv6 mit Advanced Direct Connect
AirDC++ vs. IPv6

Einfacher, weil IPv6 Vorrang vor IPv4 hat, und das ist verständlich. Dadurch wird die Verbindung zum Hub hergestellt (obwohl eine Überschreibung mit der entsprechenden Option möglich ist) und der aktive Client bietet sie dem passiven Client zur Verbindung an.

Schwieriger ist es, denn wenn es auf dem Hub Benutzer mit IPv6-Unterstützung gibt, diese aber ausschließlich über eine IPv4-Adresse verbunden sind, dann...

Verwendung von IPv6 mit Advanced Direct Connect

... dann können Sie sich (zufällig) mit ihnen verbinden, ohne überhaupt IPv4 zu haben.

Bitte beachten Sie, dass der Remote-Client sich selbst als Vermögenswert bezeichnet, aber als Verbindlichkeit behandelt wird. Warum?

Wirf ihn in eine Schaukel

Versuchen wir nun, Clients mit unterschiedlichen, aber im Hinblick auf IPv4 gemeinsamen Sätzen der IP-Protokollunterstützung miteinander zu verbinden.

Verwendung von IPv6 mit Advanced Direct Connect

Ja, es ist schade, dass Passivnutzer am Spielfeldrand rauchen müssen. Daran lässt sich jedoch nichts ändern, da ihre sichtbare IP-Adresse nicht besonders wichtig ist – deshalb handelt es sich um Verbindlichkeiten.

Verwendung von IPv6 mit Advanced Direct Connect

Bah! Der aktive Client sendet passiver Befehl?.. Es wäre logisch, eine „festsitzende“ Verbindung zu erwarten, aber nein, es stellt sich unter den gegebenen Bedingungen heraus A4.

Warum so? Wir kontaktieren den Entwickler und erhalten die Antwort:

CTM ist nicht gut, wenn der andere Benutzer IPv6 nicht unterstützt

Und man kann nicht streiten! Dies erfordert jedoch eine interne Logik, unabhängig vom Hub (siehe Code). hier и hier). Es ist immer noch unmöglich, Passiven zu helfen, weil

Aktiver Modus = TCPx+IPx

Versuche, eine Verbindung zwischen Clients mit gemeinsamen IPv6-IP-Unterstützungssätzen herzustellen, sehen folgendermaßen aus. Ich möchte Sie daran erinnern: Erreichen PA Für DC++ ist es mir nicht gelungen.

Verwendung von IPv6 mit Advanced Direct Connect

Und wieder eine Überraschung. Es stellt sich heraus, dass der passive Modus für IPv6, den DC++ demonstriert, entweder eine absichtliche Fälschung oder ein Fehler ist.

Was kommt als nächstes?

Derzeit gibt es genau zwei Möglichkeiten, alle möglichen Probleme bei der Verbindung von Benutzern in unterschiedlichen Modi und mit unterschiedlicher IP-Protokollunterstützung zu lösen.

Die erste besteht darin, IPv6 ganz auszuschalten oder umgekehrt einen Hub zu erstellen, der nur über IPvXNUMX funktioniert.

Der zweite ist dieser Erweiterung, das sich gerade der Testphase nähert.

Wenn Sie zu faul sind, den aktiven Modus für die Arbeit in DC einzurichten, denken Sie daran:

Wer hat, dem wird gegeben, und wer nicht hat, dem wird auch das genommen, was er zu haben glaubt. OK. 8:18

Source: habr.com

Kommentar hinzufügen