Das Problem, das ich habe, ist, dass der DSL-Router Nachbaranforderungspakete auf eth1 sendet, wenn er eingehende Pakete vom Internet erhält, und diese Nachbaranfragen nicht von eth1 -> eth0 auf dem Linux-Router weitergeleitet werden.
Das ist normal. Nachbaranfragen funktionieren genau wie ARP-Abfragen - sie übersetzen eine IP-Adresse in eine MAC-Adresse und sind daher nur in derselben Broadcast-Domäne sinnvoll. Es macht keinen Sinn, dass ein Router sie weiterleitet.
(In manchen Situationen kann ein Router sie jedoch als Proxy verwenden, wie am Ende beschrieben, aber ... belassen Sie dies für Plan C.)
Ich denke, dass dies der Fall ist, weil der DSL-Router der Meinung ist, dass er direkt mit dem Heimnetzwerk verbunden ist (was normalerweise in 99% der Heimnetzwerke ohne einen Linux-Router in der Mitte der Fall wäre).
Ja, und du hast es nie anders gesagt .
Ihre aktuelle Situation ist also, dass das gleiche IP-Subnetz von zwei verschiedenen Netzwerken verwendet wird und Sie erwarten, dass der Linux-Router als Bridge fungiert ... Was fast das genaue Gegenteil eines Routers ist.
(Wenn der verwirrende Teil IPv6 ist, denken Sie über das gesamte Setup nach IPv4 nach, da das Routing in beiden Fällen mehr oder weniger gleich ist und ND hauptsächlich ARP entspricht. Wenn Sie also nicht dasselbe Subnetz 192.168.1.0 in verwenden würden v4 ...)
Die beste Vorgehensweise ist , eine zweite / 64 zu erhalten und diese für das eth1-Netzwerk Ihres Linux-Routers zu verwenden. (Wenn der DSL - Router seinen Präfix über DHCPv6-PD erhält, könnte es möglich sein, sie dazu zu verleiten, einen zweiten anfordern.) Der Unterschied ist aber, dass die 2. / 64 nicht direkt an einer Schnittstelle verwendet werden, sondern geroutet auf dem Adresse des Linux-Routers
Zum Beispiel:
- DSL-Router hat 2001: db8: 0: 0: a: b: c: d an der WAN-Schnittstelle.
- DSL-Router erhält 2001: db8: 10: 0 :: / 64 vom ISP, weist selbst 2001: db8: 10: 0 :: 1/64 auf der LAN-Schnittstelle zu und sendet dafür Router Advertisements.
- Linux-Router konfiguriert automatisch 2001: db8: 10: 0: x: y: z: t auf eth1 basierend auf RAs.
- Linux-Router erhält 2001: db8: 10: 1 :: / 64 vom ISP (irgendwie), weist selbst 2001: db8: 10: 1 :: 1/64 auf der eth0-Schnittstelle zu, und radvd sendet dafür Router-Anzeigen - nicht für das erste Subnetz.
- Der DSL-Router benötigt eine Route wie "2001: db8: 10: 1 :: / 64 via 2001: db8: 10: 0: x: y: z: t", damit der gesamte Verkehr für das 2. Subnetz in Richtung des Linux-Routers weitergeleitet wird .
(Entschuldigung für das nicht sehr klare Beispiel.)
Manchmal überträgt der ISP eine ganze / 60 oder sogar / 56 an Sie und leitet sie in Richtung des DSL-Routers weiter. In diesem Fall können Sie das zweite Teilnetz einfach ohne DHCPV6-PD-Magie einrichten. Wirklich, aber ich kann hier keine gute "generische" Antwort geben, da diese sowohl ISP-abhängig als auch CPE-abhängig ist.
Wenn kein zweiter / 64-Präfix erhalten werden kann, sind folgende Optionen möglich:
Verwandeln Sie das Linux-System in eine reine Bridge ohne Routing-Funktionalität.
Verwenden Sie andere Quellen, um zusätzliche / 64-Werte zu erhalten, z. B. einen Tunnelanbieter (oder 6to4). Die vorhandenen Tunneldienste werden (mit Ausnahme einiger zusätzlicher Latenzzeiten) viel zuverlässiger arbeiten als die unten beschriebenen Hacks.
Stellen Sie sicher, dass der DSL-Router nur die / 64 bezieht, aber nicht für LAN konfiguriert. (Abhängig von der Flexibilität des Routers.) Richten Sie stattdessen erneut eine Route für das / 64 über die eth0-Link-Local-Adresse Ihres Linux-Systems ein und richten Sie auf dem Linux-System ebenfalls eine Route für :: / 0 über den DSL-Router ein LAN-Link-lokale Adresse Daher wird / 64 nur im 2. Subnetz verwendet, und das 1. hat überhaupt keine öffentlichen Präfixe.
Fahren Sie mit Ihrem aktuellen Setup fort, installieren Sie jedoch 'ndppd', um das Neighbor Discovery-Proxying durchzuführen. (Nein, Multicast-Forwarding funktioniert nicht, da ND-Pakete häufig linklokale Quelladressen haben.) Seien Sie vorsichtig, dies kann zu Verwirrung führen.
Verwenden Sie private (ULA) Adressen für das 2. LAN und aktivieren Sie 1-zu-viele-NAT (Masquerading) auf dem Linux-Router. Dadurch verlieren Sie den größten Teil der Nutzbarkeit von IPv6. (Ja, NAT gibt es offiziell nicht in IPv6, aber das hat Linux netfilter / iptables nicht davon abgehalten, sich hinzugeben und zu implementieren.)