Wie vor längerer Zeit schon mal vorgestellt, benutze ich einen kleinen Zotac mit zwei Ethernet-Schnittstellen als Router. Dieser läuft nun auch schon ein Jahr mit IPv4 über den Internetprovider Deutsche Glasfaser. Nun habe ich mir endlich die Zeit genommen, auch den IPv6-Anschluss zu vollenden. Ein großer Dank geht dabei an das „Glasfaserforum„, die mir bei der Einrichtung stark unter die Arme gegriffen haben.
Es gibt dabei mehrere Schritte, die ich nacheinander absolviert habe. Ich beschreibe kurz die Probleme und im Anschluss meine Lösungen. Vielleicht hilft es ja jemanden bei seiner Einrichtung. Falls ihr Verbesserungsvorschläge habt: Immer her damit!
Kurze Begriffsklärung: Bei mir ist die Internetschnittstelle mit „eth-wan“ und die LAN-Schnittstelle mit „eth-lan“ bezeichnet.
IP-Adresse bekommen
Der erste Schritt ist es, eine IPv6-Adresse auf dem Router zu bekommen. Dafür muss man die folgende Firewall-Regeln setzen:
# Auf Pings für IPv4 und IPv6 reagieren icmp type echo-request limit rate 10/second counter accept icmpv6 type echo-request limit rate 10/second counter accept # IPv6 NDP erlauben icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } counter accept # DHCPv6 erlauben iifname eth-wan ip6 daddr fe80::/10 ip6 saddr fe80::/10 udp dport 546 udp sport 547 counter accept comment "dhcp6" # DHCP erlauben iifname eth-wan udp dport 68 accept
Nun muss man die Schnittstellen in /etc/network/interfaces
konfigurieren
auto eth-wan iface eth-wan inet dhcp # ipv4 soll über DHCP konfiguriert werden iface eth-wan inet6 dhcp # ipv6 soll über SLAAC und DHCPv6 konfiguriert werden request_prefix 1 # es soll sich auch ein Prefix abrufen auto eth-lan iface eth-lan inet static # ipv4 hat eine statische IP address 10.10.10.10/23 # bei mir die 10.10.10.10 iface eth-lan inet6 auto # ipv6 soll sich automatisch konfigurieren (SLAAC) up ip addr add fe80::10:10:10:10/64 dev eth-lan scope link # nach dem das Interface fertig ist, bekommt es eine zusätzliche IP
Anschließend muss man in der /etc/dhcp/dhclient.conf
den request
um dhcp6.ia-pd
ergänzen. Bei mir hatte der schon viele Optionen und ich habe es am Ende dazu gepackt:
request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.ia-pd;
Im Anschluss starte ich das Interface neu. Im empfehle dies mit SSH über die LAN-Schnittestelle zu machen, um eventuell gleichzeitig die Logs mitverfolgen zu können: ifdown eth-wan && ifup eth-wan
Im Besten falle kann man nun zusehen, wie DHCP für IPv4 die Adresse erneuert und im Anschluss eine alles für IPv6 ausgehandelt wird. Bei mir sah es dann so aus:
Killed old client process Internet Systems Consortium DHCP Client 4.4.1 Copyright 2004-2018 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth-wan/00:01:2e:82:b9:c7 Sending on LPF/eth-wan/00:01:2e:82:b9:c7 Sending on Socket/fallback DHCPRELEASE of 100.84.185.30 on eth-wan to 100.124.1.11 port 67 Killed old client process Internet Systems Consortium DHCP Client 4.4.1 Copyright 2004-2018 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ no link-local IPv6 address for eth-wan If you think you have received this message due to a bug rather than a configuration issue please read the section on submitting bugs on either our web page at www.isc.org or in the README file before submitting a bug. These pages explain the proper process and the information we find helpful for debugging. exiting. Internet Systems Consortium DHCP Client 4.4.1 Copyright 2004-2018 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth-wan/00:01:2e:82:b9:c7 Sending on LPF/eth-wan/00:01:2e:82:b9:c7 Sending on Socket/fallback DHCPDISCOVER on eth-wan to 255.255.255.255 port 67 interval 3 DHCPDISCOVER on eth-wan to 255.255.255.255 port 67 interval 7 DHCPOFFER of 100.84.185.30 from 100.124.1.11 DHCPREQUEST for 100.84.185.30 on eth-wan to 255.255.255.255 port 67 DHCPREQUEST for 100.84.185.30 on eth-wan to 255.255.255.255 port 67 DHCPACK of 100.84.185.30 from 100.124.1.11 bound to 100.84.185.30 -- renewal in 1643 seconds. Internet Systems Consortium DHCP Client 4.4.1 Copyright 2004-2018 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on Socket/eth-wan Sending on Socket/eth-wan PRC: Confirming active lease (INIT-REBOOT). XMT: Forming Rebind, 0 ms elapsed. XMT: X-- IA_NA 2e:82:b9:c7 XMT: | X-- Requested renew +3600 XMT: | X-- Requested rebind +5400 XMT: | | X-- IAADDR 2a00:6020:1000:41::26cf XMT: | | | X-- Preferred lifetime +7200 XMT: | | | X-- Max lifetime +7500 XMT: V IA_NA appended. XMT: X-- IA_PD 2e:82:b9:c7 XMT: | X-- Requested renew +3600 XMT: | X-- Requested rebind +5400 XMT: | | X-- IAPREFIX 2a00:6020:50a6:bf00::/56 XMT: | | | X-- Preferred lifetime +7200 XMT: | | | X-- Max lifetime +7500 XMT: V IA_PD appended. XMT: Rebind on eth-wan, interval 1050ms. RCV: Reply message on eth-wan from fe80::ff:fe01:102. RCV: X-- IA_NA 2e:82:b9:c7 RCV: | X-- starts 1684500930 RCV: | X-- t1 - renew +1800 RCV: | X-- t2 - rebind +2880 RCV: | X-- [Options] RCV: | | X-- IAADDR 2a00:6020:1000:41::26cf RCV: | | | X-- Preferred lifetime 3600. RCV: | | | X-- Max lifetime 3600. RCV: X-- IA_PD 2e:82:b9:c7 RCV: | X-- starts 1684500930 RCV: | X-- t1 - renew +1800 RCV: | X-- t2 - rebind +2880 RCV: | X-- [Options] RCV: | | X-- IAPREFIX 2a00:6020:50a6:bf00::/56 RCV: | | | X-- Preferred lifetime 3600. RCV: | | | X-- Max lifetime 3600. RCV: X-- Server ID: 00:01:00:01:26:2c:40:77:00:50:56:b1:8a:d7 PRC: Bound to lease 00:01:00:01:26:2c:40:77:00:50:56:b1:8a:d7.
In dem zweiten Teil sieht man, dass mir die Adresse 2a00:6020:1000:41::26cf zugewiesen wird und ich das Prefix 2a00:6020:50a6:bf00::/56 für weitere Adressen benutzen kann. Ein ip -6 a
zeigt mir das auch an und ich kann schon IPv6-Adressen im Internet vom Router aus pingen.
IPv6-Traffic weiterleiten
Ein Router leitet die Pakete ja an die entsprechenden Netze weiter. Dafür muss es dem Kernel aber auch erlaubt werden. Dies passiert bei IPv6 über die Option net.ipv6.conf.all.forwarding=1
. Setzt man diese Option, werden einen aber nicht mehr automatisch die default-Routen über SLAAC gesetzt und eine Kommunikation ins Internet funktioniert nicht mehr. Dafür muss man noch zusätzlich die Option net.ipv6.conf.all.accept_ra=2
setzen. Diese steht normalerweise auf 1. Ich schreibe meine sysctl-Anpassungen in die Datei /etc/sysctl.d/local.conf
net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.accept_ra=2
IPv6-Prefix an lokales Netzwerk weiterleiten
Das erhaltene 56-Prefix hat einen zu großen Raum für IP-Adressen, um automatisch mittels SLAAC verwendet zu werden. Um es mittels radvd (router advertisement daemon for IPv6) automatisch zu verteilen, brauche ich also ein Skript, welches es korrekt in die Konfiguration schreibt und danach den radvd neu lädt. Ich habe dafür ein Skript vom Debian-Wiki erweitert:
Es nutzt den Exit-Hook vom DHCP-Client, um der internen eth-lan-Schnittstelle eine öffentliche IP anhand des Prefix zuzuweisen. Im Anschluss schreibe ich das Prefix in eine gültige radvd-Konfiguration und lade es danach neu. Hier ist meine Radvd-Config:
interface eth-lan { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix PREFIX/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; AdvValidLifetime 3600; AdvPreferredLifetime 3600; }; RDNSS fe80::10:10:10:10 { AdvRDNSSLifetime 360; }; };
Um zu überprüfen, ob die RAs korrekt im Netzwerk verteilt werden, habe ich das Tool radvdump genutzt. Es zeigt jede RA, die auf allen Interfaces empfangen werden, an. Dabei zeigt es sie sogar als gültige Konfigurationen für radvd an, so kann man eine Konfiguration aus einem anderen Netzwerk leicht kopieren.
Im Anschluss erhielt ich sofort IPv6-Adressen auf Smartphone und Laptop.
Dank und Links
Ich bedanke mich nochmal bei den Usern des Glasfaserforums: frank_m, alfalfa, HubeBube, ConiKost, ::1, Edding
Weiterhin habe ich folgende Seiten für benutzt und kann diese nur empfehlen: