IPv6-Konfiguration eines Linux-DSL-Gateways
DHCP6c
Wie eingangs erwähnt, vergibt mein ISP IPv6-Präfixe für mein internes Netz via DHCPv6. Da das ppp0-Interface seine IPv6-Adresse über Router Advertisements auf dem PPP-Link (und nicht via DHCP) erhält, wird eine spezielle Technik namens Prefix Delegation verwendet, um das LAN-Interface mit einer IPv6-Adresse zu versehen. Ich habe dafür das Paket wide-dhcpv6-client installiert.
Der ISP teilt mir also via DHCPv6 mit, welche IP-Adressen ich in meinem LAN verwenden kann (wie erwähnt, bei mir ist das ein /48
). Da man bei IPv6 aber kein /48
auf ein Client-Netzwerk konfigurieren darf, muss man dem DHCPv6-Client mitteilen, welches /64
man verwenden möchte. Anbei ist meine gesamte Konfiguration von /etc/wide-dhcpv6/dhcp6c.conf:
interface ppp0 { # Request Prefix Delegation on ppp0, and give the received prefix id 0 send ia-pd 0; }; # Use subnets from the prefix with id 0 id-assoc pd 0 { prefix-interface lan { # Assign subnet 1 to the interface called 'lan' sla-len 16; sla-id 1; }; }; profile default { information-only; request domain-name-servers; script "/etc/wide-dhcpv6/dhcp6c-script"; };
Schlüsselstelle in dieser Konfigurationsdatei ist die sla-len
- das bestimmt, wie viele Bits vom delegierten Präfix (das /48
) bitweise nach rechts geschoben werden, um das /64
zu ermitteln. Das angekündigte /48
wird also auf ein /64
extrapoliert und von wide-dhcp automatisch auf das Interface namens lan konfiguriert:
# ip -6 ad show lan 3: lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000 inet6 2001:1710:6:f:5054:ff:fecc:d81f/64 scope global valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fecc:d81f/64 scope link valid_lft forever preferred_lft forever
Wenn sich dieser Präfix nicht ändert, kann man es sich natürlich viel einfacher machen und einfach das /64
statisch auf dem Interface konfigurieren. Die Prefix Delegation hilft dem ISP, ein kundentransparentes Renumbering durchzuführen.