RFC 4941
Linux
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.all.temp_valid_lft = 86400
net.ipv6.conf.all.temp_prefered_lft = 7200
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.default.temp_valid_lft = 86400
net.ipv6.conf.default.temp_prefered_lft = 7200
net.ipv6.conf.eth0.use_tempaddr = 2
net.ipv6.conf.eth0.temp_valid_lft = 86400
net.ipv6.conf.eth0.temp_prefered_lft = 7200
Die Vorgaben für "temp_valid_lft" und "temp_prefered_lft" lauten im RFC 4941 und im Linux-Kernel
übrigens 604800 (1 Woche) respektive 86400 (1 Tag).
Teilweise wird in solchen Anleitungen sogar 1h (3600s) als "preferred lifetime" gewählt.
Die meisten dieser schlauen Empfehlungen führen fast zwangsläufig zu Problemen, wie gleich gezeigt wird.
Wo liegt das Problem?
- Der Internet-Service-Provider vergibt keine statischen IPv6-Präfixe (Beispiel: Telekom).
- Eventuell wird nicht nur der routbare Präfix, sondern auch noch ein ULA-Präfix (z.B. fd00::) per Router-Advertisement verteilt (Beispiel: Fritzbox).
10: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2003::1047:514e:3875:6f81/64 global temporary dyn
valid_lft 72869sec preferred_lft 269sec
inet6 2003::8e80:9f41:985b:fd1f/64 global temporary deprecated dyn
valid_lft 59071sec preferred_lft 0sec
inet6 2003::e179:c522:a34a:d41c/64 global temporary deprecated dyn
valid_lft 45273sec preferred_lft 0sec
inet6 2003::80d1:e7c0:cb43:8cce/64 global temporary deprecated dyn
valid_lft 42275sec preferred_lft 0sec
inet6 2003::4216:7eff:fe37:dd55/64 global mngtmpaddr dyn
valid_lft 86173sec preferred_lft 14173sec
inet6 fd00::1047:514e:3875:6f81/64 global temporary dyn
valid_lft 72869sec preferred_lft 269sec
inet6 fd00::8e80:9f41:985b:fd1f/64 global temporary deprecated dyn
valid_lft 59071sec preferred_lft 0sec
inet6 fd00::e179:c522:a34a:d41c/64 global temporary deprecated dyn
valid_lft 45273sec preferred_lft 0sec
inet6 fd00::80d1:e7c0:cb43:8cce/64 global temporary deprecated dyn
valid_lft 42275sec preferred_lft 0sec
inet6 fd00::4216:7eff:fe37:dd55/64 global mngtmpaddr dyn
valid_lft 86173sec preferred_lft 14173sec
inet6 fe80::4216:7eff:fe37:dd55/64 link
valid_lft forever preferred_lft forever
Ignoriert man die letzte Zeile mit der Link-Local-Adresse (Präfix fe80::), sowie
die per SLAAC zugewiesenen EUI-64-Adressen ("global mngtmpaddr dyn"), dann sieht
man jeweils eine gültige, präferierte temporäre IPv6 für den routbaren Präfix 2003:: und
den ULA-Präfix fd00:: ("global temporary dyn") und jeweils drei "deprecated" IPs für jeden der beiden Präfixe.
Korrekte Konfiguration
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.all.temp_valid_lft = 86400
net.ipv6.conf.all.temp_prefered_lft = 14000
net.ipv6.conf.all.max_addresses = 64
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.default.temp_valid_lft = 86400
net.ipv6.conf.default.temp_prefered_lft = 14400
net.ipv6.conf.default.max_addresses = 64
net.ipv6.conf.eth0.use_tempaddr = 2
net.ipv6.conf.eth0.temp_valid_lft = 86400
net.ipv6.conf.eth0.temp_prefered_lft = 14400
net.ipv6.conf.eth0.max_addresses = 64
Damit ergeben sich 86400s/14400s = 8 Adressen pro Präfix, in unserem Beispiel also bereits 2 * 8 + 2 + 1 = 19.
Um noch ausreichend Reserven für neue routbare Präfixe zu haben, wird "max_addresses" sicherheitshalber
auf 64 erhöht.