AnonymFlow
securite-reseauINFO

IPv6-Leck trotz VPN: Dein System bevorzugt IPv6, und genau deshalb leckt es

Ein IPv6-Leck ist kein Fehler deines VPN. Es ist dein Betriebssystem, das RFC 6724 befolgt, die ihm sagt, IPv6 gegenüber IPv4 zu bevorzugen. Trägt der Tunnel nur IPv4, führt der bevorzugte Weg daran vorbei. Wie du prüfst, und die eine Zeile, die es bei WireGuard behebt.

Von Eric Gerard · Redakteur · AnonymFlow5 Min. LesezeitFoto via Pexels

Dein VPN ist verbunden. Der Tunnel steht, der Client meldet geschützt, und dein IPv4-Verkehr läuft tatsächlich hindurch. Und eine Website, die du besuchst, protokolliert trotzdem deine echte Adresse, weil sie dich über IPv6 erreicht hat.

Hier ist kein Fehler zu finden. Das sind zwei korrekte Systeme, die sich uneinig sind, und diese Uneinigkeit steht in einem Standard.

Dein System verhält sich nicht falsch, es befolgt RFC 6724

Wenn ein Ziel sowohl über IPv4 als auch über IPv6 erreichbar ist, muss etwas entscheiden. Dieses Etwas ist RFC 6724, die eine Standard-Policy-Tabelle für die Adressauswahl definiert. Drei ihrer Zeilen zählen hier:

Prefix        Precedence Label
::1/128               50     0
::/0                  40     1
::ffff:0:0/96         35     4

::/0 steht für IPv6 allgemein. ::ffff:0:0/96 ist die Art, wie IPv4-Adressen in dieser Tabelle dargestellt werden. Vierzig schlägt fünfunddreißig, und die Regel zur Zielauswahl ist eindeutig: bei Precedence(DA) > Precedence(DB) ist DA zu bevorzugen.

Die RFC nennt die Folge im Klartext, statt sie dich erschließen zu lassen: ein weiterer Effekt der Standard-Policy-Tabelle ist, die Kommunikation über IPv6-Adressen der über IPv4-Adressen vorzuziehen, sofern passende Quelladressen verfügbar sind.

Für jede Dual-Stack-Seite, die du besuchst, greift dein Betriebssystem also zuerst zu IPv6. Das ist korrektes Verhalten, und es ist weit älter als dein VPN.

Warum daraus ein Leck wird

Setze nun ein VPN darüber, das nur IPv4 transportiert.

Deine Maschine behält eine native IPv6-Adresse von deinem Provider. Der Tunnel beansprucht den IPv6-Verkehr nicht, also fängt ihn nichts ab. Dein System bevorzugt nach obiger Regel IPv6 für jedes Ziel, das es anbietet. Das Ergebnis: Dein bevorzugter Weg ist derjenige, der am Tunnel vorbeiführt, und der geschützte Weg bekommt nur das, was IPv6 nicht bedienen konnte.

Deshalb übersieht man dieses Leck so leicht. Es sieht nicht nach einer Störung aus. Dein VPN meldet verbunden, weil es das ist. Deine IPv4-Prüfungen bestehen, weil sie wirklich bestehen. Der entweichende Verkehr ist genau der, den dein System für den besten hielt.

Ein Techniker vor einem offenen Netzwerkschrank, beide Hände in einem Bündel weißer und blauer Patchkabel, die in einen Switch führen, dessen Anzeigen hinter der Verkabelung zu sehen sind.
Ein Techniker vor einem offenen Netzwerkschrank, beide Hände in einem Bündel weißer und blauer Patchkabel, die in einen Switch führen, dessen Anzeigen hinter der Verkabelung zu sehen sind.

Prüfen, und der Fehler, der die Prüfung wertlos macht

Die Prüfung ist einfach: mit verbundenem VPN nachsehen, was eine Website tatsächlich sieht, und dabei gezielt die IPv6-Zeile lesen, statt kurz auf die IPv4-Zeile zu schauen und weiterzugehen.

Gehört die angezeigte IPv6-Adresse zu deinem Anschluss statt zum VPN-Anbieter, liegt IPv6 außerhalb des Tunnels. Erscheint gar keine IPv6-Adresse, hat dein Netz entweder keine oder sie wird blockiert, und beides ist aus Leck-Sicht unbedenklich.

Zwei Dinge ruinieren diese Prüfung in der Praxis:

Vor dem Verbinden testen. Die Frage ist nicht, wie du ungeschützt aussiehst. Sie lautet, was entweicht, während du dich geschützt glaubst.

Nur einmal testen. Eine Konfiguration, die heute IPv6 führt, kann nach einer erneuten Verbindung, einem Netzwerkwechsel oder dem Umschalten von WLAN auf Mobilfunk damit aufhören, weil sich die verfügbaren Adressen mit dem Netz ändern. Ein einzelnes sauberes Ergebnis beweist, dass die Einrichtung in einem Netz zu einem Zeitpunkt korrekt war.

Die eine Zeile, bei WireGuard

WireGuard macht die Ursache ungewöhnlich gut lesbar, weil dieselbe Einstellung sowohl bestimmt, was hereinkommt, als auch, wohin Dinge hinausgehen. Das wg-Handbuch definiert AllowedIPs als eine kommagetrennte Liste von IP-Adressen (v4 oder v6) mit CIDR-Masken, von denen eingehender Verkehr für diesen Peer erlaubt ist und zu denen ausgehender Verkehr für diesen Peer geleitet wird, und ergänzt, dass der Sammelausdruck 0.0.0.0/0 für alle IPv4-Adressen und ::/0 für alle IPv6-Adressen angegeben werden kann.

Lies das als Routing-Anweisung, denn genau das ist es. Ein Peer, der nur 0.0.0.0/0 führt, leitet IPv4 in den Tunnel und sagt nichts über IPv6, das damit weiter den normalen Weg nimmt. Ein zusätzliches ::/0 leitet auch IPv6 hinein.

Eine Bedingung gilt: Der Tunnel braucht dafür eine eigene IPv6-Adresse. Vergibt dein Anbieter keine, erzeugt das Routen von ::/0 in einen Tunnel ohne IPv6-Endpunkt keine IPv6-Konnektivität. Genau dann wird das Blockieren von IPv6 zum ehrlichen Rückfall statt zur Abkürzung.

IPv6 blockieren wirkt, und kostet etwas

IPv6 auf der Maschine zu deaktivieren entfernt den bevorzugten Weg, alles fällt auf IPv4 und damit in den Tunnel zurück. Das ist wirksam, und mehrere VPN-Clients tun genau das unter der Bezeichnung IPv6-Leckschutz.

Der Preis ist allerdings real. Du verlierst IPv6 für alles andere auf dieser Maschine, auch in Netzen, in denen es der einzige nutzbare Transport ist, und die Einstellung überlebt den Anlass, aus dem du sie geändert hast. Ein halbes Jahr später wird ein völlig unabhängiges Verbindungsproblem sehr schwer zu diagnostizieren, weil niemand mehr weiß, dass IPv6 abgeschaltet war.

IPv6 durch den Tunnel zu routen erhält die Fähigkeit und löst dasselbe Problem. Bevorzuge es, wann immer dein Anbieter es unterstützt, und behandle das Blockieren als Rückfall für die Fälle, in denen er es nicht tut.

Der Kill Switch deckt das nicht ab

Getrennt zu sagen, weil beides auf derselben Einstellungsseite verwechselt wird.

Ein Kill Switch wartet darauf, dass der Tunnel ausfällt, und kappt dann den Verkehr. Ein IPv6-Leck geschieht bei stehendem Tunnel. Es gibt keinen Abbruch zu erkennen, kein Ausfallereignis, nichts, worauf der Schalter reagieren könnte. Ein einwandfrei arbeitender Kill Switch wird tadellos seinen Dienst tun, während IPv6-Verkehr an ihm vorbeigeht.

Bietet dein Client IPv6-Leckschutz als eigenen Schalter an, ist das ein anderer Mechanismus, und das eine zu haben verschafft dir nicht das andere.

Kurz gefasst

Ein IPv6-Leck ist kein kaputtes VPN. Es sind RFC 6724, die deinem System sagt, IPv6 zu bevorzugen, ein Tunnel, der nur IPv4 trägt, und die vollkommen logische Folge dieser beiden Tatsachen.

Prüfe mit verbundenem VPN, lies die IPv6-Zeile, und wiederhole es nach einem Netzwerkwechsel. Bei WireGuard entscheidet AllowedIPs, und ::/0 ist es, was IPv6 in den Tunnel leitet. Wo der Tunnel kein eigenes IPv6 hat, ist das Blockieren von IPv6 ein legitimer Rückfall mit einem Preis, den du dir dort notieren solltest, wo du ihn wiederfindest.

Die Standard-Policy-Tabelle, die Precedence-Werte, die Regel zur Zielauswahl und die Aussage, dass die Tabelle IPv6-Kommunikation gegenüber IPv4 bevorzugt, stammen aus RFC 6724. Die Definition von AllowedIPs und die Sammelnotation für 0.0.0.0/0 und ::/0 stammen aus der Handbuchseite wg(8). Beide wurden zum Zeitpunkt der Abfassung geprüft.

Verwandte Leitfäden

Redaktionelle Wahl
4.6 / 5

Sichere deine Verbindung mit NordVPN

Threat Protection blockiert Tracker & Malware · Kill Switch · 30 Tage Geld-zurück

Deloitte-Prüfung 202430-Tage-Garantie14M+ Nutzer
Angebot ansehen
Alles, was Sie wissen müssen.

Häufig gestellte Fragen

Was ist ein IPv6-Leck genau?

Es ist Verkehr, der deine Maschine über IPv6 verlässt, während dein VPN nur IPv4 transportiert. Der Tunnel steht, dein IPv4-Verkehr ist geschützt, alles wirkt normal, aber jede über IPv6 erreichbare Website sieht deine echte Adresse. Nichts ist fehlgeschlagen. Dein VPN tut, wofür es konfiguriert wurde, und dein Betriebssystem tut, was der Standard ihm vorgibt. Die beiden sind sich nur nicht einig darüber, welche Wege existieren.

Warum bevorzugt mein System überhaupt IPv6?

Weil RFC 6724 es so vorsieht. Die dort definierte Standard-Policy-Tabelle gibt ::/0 eine Precedence von 40 und den IPv4-abgebildeten Adressen (::ffff:0:0/96) eine Precedence von 35, und die Regel zur Zielauswahl besagt, dass bei Precedence(DA) > Precedence(DB) DA zu bevorzugen ist. Die RFC formuliert die Absicht unmissverständlich: ein weiterer Effekt der Standard-Policy-Tabelle ist, die Kommunikation über IPv6-Adressen der über IPv4-Adressen vorzuziehen, sofern passende Quelladressen verfügbar sind. Für jedes Dual-Stack-Ziel gewinnt IPv6 also konstruktionsbedingt.

Woran erkenne ich, dass ich lecke?

Verbinde das VPN und sieh dann nach, was eine Website tatsächlich sieht. Gehört die angezeigte IPv6-Adresse zu deinem eigenen Anschluss statt zum VPN-Anbieter, liegt dein IPv6-Verkehr außerhalb des Tunnels. Prüfe das mit verbundenem VPN, nicht vorher, denn worum es geht, ist genau das, was entweicht, während du dich geschützt glaubst. Einmal prüfen genügt auch nicht: Ein Leck kann nach einer erneuten Verbindung, einem Netzwerkwechsel oder dem Umschalten von WLAN auf Mobilfunk auftreten.

Wie behebe ich es bei WireGuard?

Indem du IPv6 ebenfalls in den Tunnel routest. Das wg-Handbuch definiert AllowedIPs als eine kommagetrennte Liste von IP-Adressen (v4 oder v6) mit CIDR-Masken, von denen eingehender Verkehr für diesen Peer erlaubt ist und zu denen ausgehender Verkehr für diesen Peer geleitet wird, und merkt an, dass der Sammelausdruck 0.0.0.0/0 für alle IPv4-Adressen und ::/0 für alle IPv6-Adressen angegeben werden kann. Eine Konfiguration, die nur 0.0.0.0/0 führt, schickt IPv4 durch den Tunnel und überlässt IPv6 sich selbst. Ein zusätzliches ::/0 leitet auch IPv6 hinein, sofern der Tunnel tatsächlich über eine IPv6-Adresse verfügt.

Sollte ich IPv6 nicht einfach deaktivieren?

Das funktioniert, und es ist das grobe Werkzeug. IPv6 zu deaktivieren entfernt den bevorzugten Weg, alles fällt also auf IPv4 und damit in den Tunnel zurück. Der Preis ist, dass du IPv6 auf dieser Maschine für alles andere verlierst, auch in Netzen, in denen es der einzige nutzbare Transport ist, und dass du dich daran erinnern musst. IPv6 durch den Tunnel zu routen erhält die Fähigkeit und löst dasselbe Problem, weshalb es die bessere Voreinstellung ist, wenn dein Anbieter es unterstützt.

Schützt mich ein Kill Switch vor einem IPv6-Leck?

Nicht für sich allein, und dieses Missverständnis lohnt sich auszuräumen. Ein Kill Switch reagiert darauf, dass der Tunnel AUSFÄLLT. Ein IPv6-Leck geschieht, während der Tunnel einwandfrei STEHT: Es gibt keinen Ausfall zu erkennen und nichts zu kappen. Manche Clients blockieren IPv6 separat unter der Bezeichnung IPv6-Leckschutz, was ein anderer Mechanismus als der Kill Switch ist, selbst wenn dieselbe Einstellungsseite beide nebeneinander zeigt.