Pflicht: IPv4-Konnektivität
Wie das geht, habe ich hier beschrieben. Wenn das nicht läuft, geht auch nichts mit IPv6.
Kür: IPv6-Konnektivität
Ist eigentlich ganz einfach, wenn man weiß, dass Forwarding für das ppp-Interface ausgeschaltet sein muss. Ansonsten kann man lange auf ein Prefix warten: Man bekommt zwar eins, aber das Interface wird nicht konfiguriert!
So geht dem:
Unter Arch Linux gibt es die Datei /etc/ppp/ipv6-up.d/00-iface-config.sh. Dort trägt man Folgendes ein:
#!/bin/bash echo 1 > /proc/sys/net/ipv6/conf/$1/use_tempaddr echo 0 > /proc/sys/net/ipv6/conf/$1/forwarding echo 1 > /proc/sys/net/ipv6/conf/$1/autoconf echo 1 > /proc/sys/net/ipv6/conf/$1/accept_ra
Wichtig ist die 2. Zeile: forwarding == 0, wie schon oben erwähnt. Diese Option ist der Schlüssel zum Glück, wirklich!
use_tempaddr kann ganz nach Gusto gesetzt werden, und autoconf muss natürlich auch aktiviert sein. Bei accept_ra bin ich mir nicht sicher.
Als Nächstes braucht man rdisc6 (Arch Linux: pacman -S ndisc6). Dann legt man eine neue Datei in /etc/ppp/ip-up.d an (Name egal, Hauptsache, es ist ein ausführbares Shell-Script). Bei mir heißt sie tkom-up.sh:
#!/bin/bash rdisc6 ${IFNAME}
${IFNAME} wird von dem PPP-Gerümpel gesetzt und enthält den Namen des PPP-Interfaces (Überraschung!).
Zu guter Letzt muss man dem PPP-Dämonen noch sagen, dass er auch für IPv6 zuständig ist. Dafür fügt man die Zeile
+ipv6
irgendwo in /etc/ppp/options hinzu. Nach einem beherzten
# systemctl restart adsl
sollte eine globale IPv6-Adresse an ppp* rangeflanscht sein!
Ansonsten wäre da noch…
systemd-networkd, das standardmäßig Router-Announcements an IPv4-Only-Interfaces entgegennimmt und eine nervige Default-Route via fe80::1 setzt. Das kann man dem Trum abgewöhnen, indem man IPv6AcceptRA=false zu der .network-Unit hinzufügt. Bei mir sieht das so aus (ehemals KD, jetzt Vodafone-Verbimmelung):
[Match] Name=ext [Network] DHCP=v4 IPv6AcceptRA=false