Eine der jüngsten Erfahrungen der Linux Plumbers Conference hat mich davon überzeugt, dass Sie, wenn Sie Teil einer echten Open-Source-WebRTC-basierten Peer-to-Peer-Audio / Video-Interaktion sein möchten, eine Internetadresse benötigen, die sich nicht hinter einem NAT befindet. In Wirklichkeit funktioniert das Protokoll immer noch, solange Sie sich an einen Stun-Server wenden können, um Ihnen Ihre externe Adresse mitzuteilen, und möglicherweise an einen Turn-Server, um die Pakete zu proxyen, wenn beide Endpunkte vernetzt sind. Die Lösung für all dies besteht darin, eine Verbindung über IPv6 herzustellen, das über einen Adressraum verfügt, der groß genug ist, um jedes Gerät auf dem Planeten mit einer eigenen Adresse zu unterstützen. Alle modernen Linux-Distributionen unterstützen IPv6 sofort, sodass Sie es wahrscheinlich versehentlich verwendet haben, ohne es jemals zu bemerken, was eine der Schönheiten der IPv6-Autokonfiguration ist (es soll einfach funktionieren).
Ich bin jedoch kürzlich umgezogen und habe meine Glasfaser-Internetverbindung an Kabel verloren, aber Kabel, das mit einer IPv6-Adresse geliefert wurde. Wenn Sie sich nicht wirklich für die Protokollgrundlagen interessieren, können Sie zum Wie springen. Dieses Handbuch konzentriert sich auch auf eine „Dual-Stack“ -Konfiguration (eine, die sowohl IPv6- als auch IPv4-Adressen hat). Reine IPv6-Konfigurationen sind möglich, aber da einige Teile des Internets immer noch nur IPv4 sind, sind sie nicht vollständig, es sei denn, Sie richten eine IPv4-Kapselungsbrücke ein.
- Die Grundlagen von IPv6
- Wie funktioniert IPv6?
- Multicast und Nachbarerkennung
- Router Discovery
- Globale Adresskonfiguration
- Das Wie: Konfigurieren Sie Ihren eigenen Heimrouter
- Präfixdelegierung
- Konfigurieren des Routers für die Präfixdelegierung
- Delegierte Präfixe verteilen
- Werbung als Router
- SLAAC oder DHCPv6 (oder beides)
- Firewall-Konfiguration
- : IPv6-Verbindung der Clients herstellen
- Fazit
Die Grundlagen von IPv6
IPv6 ist seit langem ein ausgereiftes Protokoll, daher habe ich fälschlicherweise angenommen, dass es eine Menge guter HOWTOs dazu geben würde. Nachdem ich jedoch 20 verschiedene Beschreibungen der Funktionsweise des 128-Bit-IPv6-Adressraums gelesen hatte und nicht viel anderes, gab ich verzweifelt auf und las stattdessen die RFCs. Ich gehe davon aus, dass Sie mindestens eines dieser HOWTOS gelesen haben, sodass ich nicht auf IPv6-Adresspräfixe, Suffixe, Schnittstellen-IDs oder Subnetze eingehen muss, damit ich dort beginne, wo die meisten HOWTOs enden.
Wie funktioniert IPv6?
In IPv4 gibt es ein Protokoll namens Dynamic Host Configuration Protocol (DHCP). Solange Sie einen DHCP-Server finden, können Sie alle Informationen abrufen, die Sie für die Verbindung benötigen (lokale Adresse, Router, DNS-Server, Zeitserver usw.). Dieser Dienst muss jedoch von jemandem eingerichtet werden, und IPv6 dient dazu, ein Netzwerk ohne ihn zu konfigurieren.
Die erste Annahme, die IPv6 StateLess Address AutoConfiguration (SLAAC) macht, ist, dass es sich um ein / 64-Subnetz handelt (also enthält jedes Subnetz in IPv6 1010-mal so viele Adressen wie das gesamte IPv4-Internet). Dies bedeutet, dass die meisten realen Subnetze, da sie < 100 Systeme enthalten, einfach eine zufällige Adresse auswählen können und es sehr unwahrscheinlich ist, dass sie mit den vorhandenen Systemen kollidieren. In der Tat gibt es drei aktuelle Möglichkeiten, eine Adresse in der /64:
- EUI-64 (RFC 4291) basierend auf der MAC-Adresse, die im Grunde der MAC mit einem Bit umgedreht und ff: fe in der Mitte platziert ist.
- Stable Private (RFC 7217), das aus einem Hash generiert, der auf einem statischen Schlüssel, einer Schnittstelle, einem Präfix und einem Zähler basiert (der Zähler wird erhöht, wenn ein Konflikt auftritt). Diese werden den EUI-64-Adressen vorgezogen, die jede mit der MAC-Adresse verbundene Konfiguration preisgeben (z. B. welche Art von Netzwerkkarte Sie haben)
- Datenschutzerweiterungsadressen (RFC 4941), die stabilen privaten Adressen sehr ähnlich sind, außer dass sie sich im Laufe der Zeit mithilfe des IPv6-Adressverfallsmechanismus ändern und für Clientsysteme gedacht sind, die die Anonymität wahren möchten.
Das nächste Problem in Linux ist, wer die Schnittstelle konfiguriert? Der Kernel-IPv6-Stack ist eigentlich dafür ausgelegt und wird angewiesen, dies nicht zu tun, aber die meisten modernen Netzwerkcontroller (wie NetworkManager) sind Kontrollfreaks und deaktivieren die automatische Konfiguration des Kernels, damit sie dies selbst tun können. Sie verwenden standardmäßig auch eine stabile private Adressierung mit einem statischen Geheimnis, das im Dateisystem verwaltet wird (/ var / lib / NetworkManager / secret_key ).
Das nächste, was man über IPv6-Adressen verstehen muss, ist, dass sie in Bereiche unterteilt sind, von denen die wichtigsten die lokalen (nicht routierbaren) Adressen sind, die üblicherweise immer das Präfix fe80 ::/64 haben. Die lokale Link-Adresse wird zuerst mit einer der oben genannten Methoden konfiguriert und dann zum Testen des Netzwerks verwendet.
Multicast und Nachbarerkennung
Im Gegensatz zu IPv4 verfügt IPv6 über keine Broadcast-Funktion, sodass die gesamte Erkennung über Multicast erfolgt. Knoten, die im Netzwerk auftauchen, abonnieren bestimmte Multicast-Adressen über spezielle Pakete, die vom Switch abgefangen werden, und empfangen kein Multicast, für das sie nicht abonniert sind. Herkömmlicherweise haben alle lokalen Link-Multicastadressen das Präfix ff02::/64 (für andere Arten von Multicastadressen siehe RFC 4291). Alle Knoten abonnieren die Multicast-Adresse „Alle Knoten“ ff02 :: 1 und müssen auch ihre eigene angeforderte Knoten-Multicast-Adresse bei ff02 :: 1: ffXX: XXXX abonnieren, wobei die letzten 24 Bits den niedrigsten 24 Bits der IPv6-Adresse des Knotens entsprechen. Letzteres dient dazu, die Störung zu vermeiden, die früher in IPv4 durch ARP-Broadcasts auftrat, da Sie jetzt eine bestimmte Teilmenge von Knoten für die Adressauflösung anvisieren können.
Das IPV6-Adressauflösungsprotokoll heißt Neighbor Solicitation (NS), beschrieben in RFC 4861 und es wird mit SLAAC verwendet, beschrieben in RFC 4862, und wird durch Senden eines Multicasts an die Neighbor Solicitation-Adresse des Knotens, den Sie ermitteln möchten, der die vollständige IPv6-Adresse enthält, die Sie wissen möchten, ein Knoten mit der passenden Adresse antwortet mit seiner Link Layer (MAC) -Adresse in einem Neighbor Advertisement (NA) -Paket.
Sobald ein Knoten seine lokale Link-Adresse ausgewählt hat, sendet er zuerst ein NS-Paket an seine gewählte Adresse, um zu sehen, ob jemand antwortet, und wenn niemand dies tut, geht er davon aus, dass es in Ordnung ist, es zu behalten, andernfalls folgt er dem Kollisionsvermeidungsprotokoll, das seiner bestimmten Adressform zugeordnet ist. Sobald eine eindeutige Adresse gefunden wurde, konfiguriert der Knoten diese lokale Linkadresse und sucht nach einem Router. Beachten Sie, dass, wenn kein IPv6-Netzwerk vorhanden ist, die Erkennung hier beendet wird, weshalb die meisten Netzwerkschnittstellen immer eine lokale Link-IPv6-Adresse anzeigen.
Router Discovery
Sobald der Knoten seine eigene eindeutige lokale Link-Adresse hat, sendet er damit Router Solicitation (RS) -Pakete an die Multicast-Adresse „Alle Router“ ff02 ::2. Jeder Router im Netzwerk antwortet mit einem Router Advertisement (RA) -Paket, das (unter anderem) die Lebensdauer des Routers, die Netzwerk-MTU, einen Satz von einem oder mehreren Präfixen, für die der Router verantwortlich ist, die Linkadresse des Routers und eine Reihe von Optionsflaggen einschließlich des M (Verwaltet) und O (Andere Konfiguration) Flags und möglicherweise eine Reihe von DNS-Servern.
Jedes angekündigte Präfix enthält das Präfix und die Präfixlänge, eine Reihe von Flags, einschließlich A (autonome Konfiguration) und L (Link local), sowie eine Reihe von Lebensdauern. Der Link Lokale Präfixe sagen Ihnen, welche globalen Präfixe die lokalen Netzwerkbenutzer haben (es kann mehr als einen geben) und ob Sie SLAAC für das globale Präfix ausführen dürfen (wenn das Flag A klar ist, müssen Sie den Router mit DHCPv6 nach einer Adresse fragen). Wenn der Router eine Lebensdauer ungleich Null hat, können Sie davon ausgehen, dass es sich um einen Standardrouter für das Subnetz handelt.
Nachdem der Knoten einen oder mehrere Router entdeckt hat, kann er seine eigene globale Adresse konfigurieren (beachten Sie, dass jeder IPv6-routingfähige Knoten mindestens zwei Adressen hat: eine lokale und eine globale Verbindung). Wie dies geschieht, hängt von den Router- und Präfixflags ab
Globale Adresskonfiguration
Das erste, was ein Knoten wissen muss, ist, ob SLAAC für die globale Adresse oder DHCPv6 verwendet werden soll. Dies wird vollständig durch das A-Flag eines beliebigen lokalen Link-Präfixes im RA-Paket bestimmt. Wenn A gesetzt ist, kann der Knoten SLAAC verwenden, und wenn A klar ist, muss der Knoten DHCPv6 verwenden, um eine Adresse zu erhalten. Wenn A gesetzt ist und auch das Flag M (Managed), kann der Knoten entweder SLAAC oder DHCPv6 (oder beides) verwenden, um eine Adresse abzurufen, und wenn das Flag M klar ist, aber das Flag O (Other Config) vorhanden ist, muss der Knoten SLAAC verwenden, kann jedoch DHCPv6 verwenden, um andere Informationen über das Netzwerk abzurufen (normalerweise DNS).
Sobald der Knoten eine globale Adresse hat, benötigt er jetzt eine Standardroute. Es bildet die Standardroutenliste aus den RA-Paketen, die eine Router-Lebensdauer ungleich Null haben. Alle diese werden als Standardrouten zu ihrer lokalen Link-Adresse mit der zuvor angegebenen Hop-Anzahl konfiguriert. Schließlich kann der Knoten spezifische Präfixrouten aus RA-Paketen mit null Router-Lebensdauern, aber nicht lokalen Präfixen hinzufügen.
DHCPv6 ist ein ziemlich komplexes Konfigurationsprotokoll (siehe RFC 8415), kann jedoch weder die Präfixlänge (dh alle erhaltenen Adressen sind als / 128 konfiguriert) noch die Routen (diese müssen aus RA-Paketen abgerufen werden) angeben. Wenn Sie also sowohl nach SLAAC als auch nach DHCPv6 konfigurieren, wird die SLAAC-Adresse als / 64 und die DHCPv6-Adresse als / 128 hinzugefügt, was bedeutet, dass Ihre ausgehende IP-Adresse immer die DHCPv6-Adresse ist (obwohl, wenn eine externe Entität Ihre SLAAC-Adresse kennt, sie Sie trotzdem erreichen können).
Das Wie: Konfigurieren Sie Ihren eigenen Heimrouter
Eines der Dinge, die Sie von oben denken würden, ist, dass IPv6 immer automatisch konfiguriert wird, und obwohl es wahr ist, dass, wenn Sie Ihren Laptop einfach an den Ethernet-Port eines Kabelmodems anschließen, es nur automatisch konfiguriert wird, haben die meisten Leute ein komplexeres Heim-Setup mit einem Router, der eine spezielle Überredung benötigt, bevor es funktioniert. Das bedeutet, dass Sie zusätzliche Funktionen von Ihrem ISP mithilfe spezieller DHCPv6-Anforderungen erhalten müssen.
Dieser Abschnitt ist aus meiner eigenen Sicht geschrieben: Ich habe ein ziemlich komplexes IPv4-Netzwerk mit einem vollständig offenen, aber auf nicht vertrauenswürdige Clients beschränkten WLAN-Netzwerk und mehreren geschützten internen Netzwerken (eines für mein Labor, eines für meine Telefone und eines für die Haushaltsvideokameras) Ich benötige mindestens 4 Subnetze, um jedem Gerät in meinem Haus eine IPv6-Adresse zu geben. Ich verwende OpenWRT auch als meine Router-Distribution, daher sind alle IPv6-Konfigurationsinformationen sehr spezifisch dafür (obwohl zu beachten ist, dass Dinge wie NetworkManager auch all dies tun können, wenn Sie bereit sind, in der Dokumentation zu graben).
Präfixdelegierung
Da DHCPv6 nur eine /128-Adresse ausgibt, ist dies nicht ausreichend, da es sich um die IP-Adresse des Routers selbst handelt. Um ein Router zu werden, müssen Sie die Delegierung eines Teils des IPv6-Adressraums über die Option Identity Association for Prefix Delection (IA_PD) von DHCPv6 anfordern. Sobald dies erledigt ist, wird die Router-IP-Adresse vom ISP als Route für alle delegierten Präfixe angenommen. Die Subtilität hier ist, dass Sie, wenn Sie mehr als ein Subnetz wünschen, speziell danach fragen müssen (der Client muss die genaue Präfixlänge angeben, nach der er sucht) und da es sich um eine Präfixlänge handelt und Ihr Standardsubnetz / 64 sein sollte, wenn Sie eine Präfixlänge von 64 anfordern, haben Sie nur ein Subnetz. Wenn Sie 63 anfordern, haben Sie 2 und so weiter. Das Problem ist, wie Sie wissen, wie viele Subnetze der ISP bereit ist, Ihnen zu geben? Leider gibt es keine Möglichkeit, dies zu finden (ich musste eine Internetsuche durchführen, um festzustellen, dass mein ISP, Comcast, bereit war, eine Präfixlänge von 60 zu delegieren, was 16 Subnetze bedeutet). Wenn Ihnen die Suche nicht sagt, wie viel Ihr ISP zu delegieren bereit ist, können Sie versuchen, bei 48 zu beginnen und sich in Schritten von 1 bis 64 durchzuarbeiten, um zu sehen, mit welcher größten Delegation Sie davonkommen können (Es gab Berichte von ISPs, die Sie bei Ihrer ersten delegierten Präfixlänge sperren, beginnen Sie also nicht bei 64). Die letzte Subtilität ist, dass das Präfix, das Sie delegiert haben, möglicherweise nicht dasselbe Präfix ist wie die Adresse, die Ihr Router erhalten hat (meine aktuelle Comcast-Konfiguration hat meinen Router bei 2001: 558: 600a: … aber mein delegiertes Präfix ist 2601: 600: 8280: 66d0: / 60). Hinweis Sie können odhcp6c manuell mit der Option -P ausführen, wenn Sie Ihren ISP untersuchen müssen, um herauszufinden, welche Präfixgröße Sie erhalten können.
Konfigurieren des Routers für die Präfixdelegierung
In OpenWRT-Begriffen wird die Konfiguration des Routers WAN DHCP(v6) von /etc/default/network gesteuert. Sie haben bereits eine WAN-Schnittstelle (wahrscheinlich ‚wan‘ genannt) für DHCPv4, also fügen Sie einfach eine zusätzliche ‚wan6‘-Schnittstelle hinzu, um ein zusätzliches IPv6 zu erhalten und Dual-Stack zu werden. In meiner Konfiguration sieht das so aus
config interface 'wan6' option ifname '@wan' option proto 'dhcpv6' option reqprefix 60
Die leichte Kuriosität ist der ifname: @wan weist die Konfiguration einfach an, denselben ifname wie die ‚wan‘-Schnittstelle zu verwenden. Es ist wichtig, es so zu benennen, wenn Ihr WAN eine Bridge ist, aber es ist trotzdem eine gute Praxis. Die andere Option ‚reqprefix‘ weist DHCPv6 an, eine / 60-Präfixdelegierung anzufordern.
Delegierte Präfixe verteilen
Dies erweist sich als bemerkenswert einfach. Zuerst müssen Sie jeder Ihrer anderen Schnittstellen auf dem Router ein delegiertes Präfix zuweisen, aber Sie können dies tun, ohne für jede von ihnen eine neue OpenWRT-Schnittstelle hinzuzufügen. Mein internes IPv4-Netzwerk verfügt über alle statischen Adressen, sodass Sie jeder der Schnittstellen drei Anweisungen hinzufügen:
config interface 'lan' ... interface designation (bridge for me) option proto 'static' ... ipv4 addresses option ip6assign '64' option ip6hint '1' option ip6ifaceid '::ff'
ip6assign ‚N‘ bedeutet, dass Sie ein / N Netzwerk sind (das ist also immer / 64 für mich) und ip6hint ‚N‘ bedeutet, dass Sie N als Subnetz-ID verwenden und ip6ifaceid ‚S‘ bedeutet, dass Sie S als IPv6-Suffix verwenden (Dies ist standardmäßig :: 1. Wenn Sie damit einverstanden sind, lassen Sie diese Anweisung weg). Wenn ich also ein Präfix 2601:600:8280:66d0::/60 habe, lautet die globale Adresse dieser Schnittstelle 2601:600:8280:66d1::ff . Wenn Sie dies richtig verstanden haben, sollte diese globale Adresse von überall im IPv6-Internet aus angepinggt werden können (wenn dies nicht der Fall ist, handelt es sich wahrscheinlich um ein Firewall-Problem, siehe unten).
Werbung als Router
Einfach delegiert werden Ein delegiertes Präfix auf einer lokalen Router-Schnittstelle reicht nicht aus . Jetzt müssen Sie Ihren Router dazu bringen, auf Router-Anfragen auf ff02 :: 2 zu antworten und optional DHCPv6 auszuführen. Leider hat OpenWRT dafür zwei Mechanismen, die normalerweise beide installiert sind: odhcpd und dnsmasq. Was ich fand, war, dass keine meiner Anweisungen in /etc/ config/dhcp wirksam werden würde, bis ich odhcpd vollständig deaktiviert habe
/etc/init.d/odhcpd stop/etc/init.d/odhcpd disable
und da ich dnsmasq ausgiebig an anderer Stelle verwende (Split DNS für interne / externe Netzwerke), passte mir das gut. Ich werde zuerst beschreiben, welche Optionen Sie in dnsmasq benötigen und zweitens, wie Sie dies mithilfe von Einträgen in der Datei OpenWRT /etc/config/dhcp erreichen können (ich finde das nützlich, weil es immer ratsam ist, zu überprüfen, was OpenWRT in /var/etc/dnsmasq .conf-Datei).
Die erste dnsmasq-Option, die Sie benötigen, ist ‚enable-ra‘, ein globaler Parameter, der dnsmasq anweist, Router-Werbung zu verarbeiten. Der nächste Parameter, den Sie benötigen, ist der ra-param pro Schnittstelle, der die globalen Router-Anzeigenparameter angibt und für jede Schnittstelle, auf der Sie Werbung schalten möchten, einmal angezeigt werden muss. Schließlich ermöglicht die Option ‚dhcp-range‘ eine detailliertere Konfiguration des Typs der RA-Flags und des optionalen DHCPv6.
SLAAC oder DHCPv6 (oder beides)
In vielerlei Hinsicht ist dies eine Frage der persönlichen Wahl. Wenn Sie SLAAC zulassen, können Hosts, die Datenschutzerweiterungsadressen verwenden möchten (wie Android-Telefone), dies tun, was eine gute Sache ist. Wenn Sie auch die DHCPv6-Adressauswahl zulassen, haben Sie eine Liste von Adressen, die Hosts zugewiesen sind, und dnsmasq führt die DNS-Auflösung für sie durch (obwohl es DNS für SLAAC-Adressen tun kann, vorausgesetzt, es wird über sie informiert). Für die Option ‚dhcp-range‘ existiert ein spezieller Tag ‚constructor‘, der angibt, dass die angegebene Adresse (für RA oder DHCPv6) aus dem globalen IPv6-Präfix der angegebenen Schnittstelle erstellt werden soll. Die Modi für ‚dhcp-range‘ sind ‚ra-only‘, um DHCPv6 vollständig zu verbieten, ’slaac‘, um die DHCPv6-Adressauswahl zuzulassen, und ‚ra-stateless‘, um die DHCPv6-Adressauswahl zu verbieten, aber andere DHCPv6-Konfigurationsinformationen zuzulassen.
Basierend auf Versuch und Irrtum (und schließlich der Untersuchung des Skripts in /etc/init.d / dnsmasq) Die OpenWRT-Optionen, die erforderlich sind, um die obigen dnsmasq-Optionen zu erreichen, sind
config dhcp lan option interface lan option start 100 option limit 150 option leasetime 1h option dhcpv6 'server' option ra_management '1' option ra 'server'
mit ‚ra_management‘ als Schlüsseloption, wobei ‚0‘ SLAAC mit DHCPv6-Optionen bedeutet, ‚1‘ SLAAC mit vollem DHCPv6, ‚2‘ DHCPv6 und ‚3‘ nur SLAAC. Eine weitere OpenWRT-Kuriosität ist, dass es anscheinend keine Möglichkeit gibt, den Lease-Bereich festzulegen: Er ist standardmäßig immer nur statisch oder :: 1000 bis :: ffff .
Firewall-Konfiguration
Eines der Dinge, die die Leute stolpern, ist die Tatsache, dass Linux zwei völlig getrennte Firewalls hat: eine für IPv4 und eine für IPv6. Wenn Sie jemals benutzerdefinierte Regeln für sie geschrieben haben, haben Sie dies wahrscheinlich in OpenWRT / etc / firewall getan.benutzerdatei und Sie haben den Befehl iptables verwendet, dh Sie haben nur die Regeln zur IPv4-Firewall hinzugefügt. Um dieselbe Regel für IPv6 hinzuzufügen, müssen Sie sie mit dem Befehl ip6tables duplizieren. Ein weiteres erhebliches Problem, wenn Sie eine Verbindungsverfolgung für die Port-Klopferkennung verwenden, wie ich es bin, ist, dass die Linux-Verbindungsverfolgung Schwierigkeiten mit IPv6-Multicast hat, sodass Pakete, die an einen Multicast gesendet werden, aber als Unicast zurückkommen (wie die meisten Erkennungsprotokolle) den falschen Conntrack-Status erhalten. Um dies zu beheben, musste ich schließlich eine Eingaberegel haben, die nur alle ICMPv6 und DHCPv6 (UDP-Ports 546 und 547) akzeptierte. Die anderen Firewall-Überlegungen sind, dass jetzt jeder seine eigene IP-Adresse hat, es gibt keine Notwendigkeit zu NAT (OpenWRT kann überredet werden, sich automatisch darum zu kümmern, aber wenn Sie die IPv4-Regeln manuell duplizieren, duplizieren Sie nicht die NAT-Regeln). Der letzte ist wahrscheinlich besser auf mich anwendbar: meine WiFi-Schnittstelle ist als Erweiterung des lokalen Internets konzipiert, und von allen Maschinen, die eine Verbindung herstellen, wird erwartet, dass sie sich selbst schützen können, da sie in so feindliche Umgebungen wie Flughafen-WLAN migrieren. Für meine internen Geräte habe ich eine VERWANDTE, FESTGELEGTE Regel, um sicherzustellen, dass sie nicht untersucht werden, da sie nicht für die Migration vom internen Netzwerk ausgelegt sind.
Nun die Probleme mit OpenWRT: da Sie NAT auf IPv4, aber nicht auf IPv6 möchten, müssen Sie zwei separate WAN-Zonen für sie haben: Wenn Sie versuchen, sie zu kombinieren (wie ich es zuerst getan habe), fügt OpenWRT eine UNGÜLTIGE IPv6 –ctstate-Regel hinzu, die verhindert, dass die Erkennung aufgrund der Conntrack-Probleme mit IPv6-Multicast funktioniert, sodass meine WAN-Zonen (nun, das ist eine Lüge, weil meine Firewall jetzt handgefertigt ist, aber das habe ich überprüft, bevor ich die handgefertigte Firewall):
config zone option name 'wan' option network 'wan' option masq '1' ...config zone option name 'wan6' option network 'wan6' ...
Und die Routing-Regeln für die LAN-Zone (vollständig zugänglich) lauten
config forwarding option src 'lan' option dest 'wan'config forwarding option src 'lan' option dest 'wan6'config forwarding option src 'wan6' option dest 'lan'
: IPv6-Verbindung der Clients herstellen
Nachdem Sie Ihren Router konfiguriert haben, sollte alles funktionieren. Wenn dies der Fall ist, sollte Ihre Laptop-WLAN-Schnittstelle jetzt eine globale IPv6-Adresse
ip -6 address show dev wlan0
Wenn diese leer ist, müssen Sie IPv6 in Ihrer Distribution aktivieren. Wenn nur eine Link Local-Adresse (fe80 :: prefix) vorhanden ist, ist IPv6 aktiviert, Ihr Router macht jedoch keine Werbung (Verdacht auf Firewall-Probleme mit Erkennungspaketen oder dnsmasq-Fehlkonfiguration). Wenn Sie eine globale Adresse sehen, sind Sie fertig. Jetzt sollten Sie in der Lage sein, zu https://testv6.com zu gehen und sich eine 10/10-Punktzahl zu sichern.
Das letzte Puzzleteil besteht darin, Ihre neue IPv6-Verbindung zu bevorzugen, wenn DNS eine Auswahl an IPv4- oder IPv6-Adressen bietet. Alle modernen Linux-Clients sollten IPv6 bevorzugen, wenn verfügbar, wenn sie mit einem Dual-Stack-Netzwerk verbunden sind, also versuchen Sie es … wenn Sie pingen, sagen wir, www.google.com und sehen Sie eine IPv6-Adresse, die Sie fertig sind. Wenn nicht, müssen Sie in die trübe Welt der IPv6-Adresskennzeichnung (RFC 6724) und Gai einsteigen.conf.
Fazit
Das Hinzufügen von IPv6 zu einem bestehenden IPv4-Setup ist derzeit kein einfacher Plug-In-and-Go-Vorgang. Vorausgesetzt, Sie verstehen einige Unterschiede zwischen den beiden Protokollen, ist dies auch kein unüberwindbares Problem. Ich habe auch viele der Probleme, die Sie mit Ihrem ISP haben könnten, beschönigt. Einige Leute haben berichtet, dass ihre ISPs nur eine IPv6-Adresse ohne Präfix-Delegation verteilen, in diesem Fall denke ich, dass es am klügsten wäre, einen neuen ISP zu finden. Andere berichten, dass der ISP nur ein / 64-Präfix delegiert, sodass Sie hier entweder nur ein Subnetz ausführen (wahrscheinlich ausreichend für viele Heimnetzwerke) oder ein Subnetz mit mehr als / 64 und SLAAC verbieten, was definitiv nicht der Fall ist eine empfohlene Konfiguration. Vorausgesetzt, Ihr ISP ist vernünftig, sollte dieser Blogbeitrag Ihnen zumindest den Einstieg erleichtern.