Linux/Netzwerk/IPv6/Privacy Extension
Aktivieren der Privacy Extension
Privacy Extension wie beschrieben in RFC 4941 / Privacy Extensions for Stateless Address Autoconfiguration in IPv6 (Nachfolger von RFC 3041) ersetzt die statische Interface ID (mostly basierend auf der weltweit eindeutigen MAC-Adresse), die bei der Autokonfiguration benutzt wird, durch eine pseudo-random und von Zeit zu Zeit neu generierte
Privacy Extension
Aktivieren von Privacy Extension mit Hilfe von sysctl
Temporäre Aktivierung
Einschalten der Privacy Extension für z.B. Interface ”eth0” und zudem Präferieren dieser Adresse:
# sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
Zur Aktivierung ist der Restart des Interfaces notwendig
# ip link set dev eth0 down # ip link set dev eth0 up
Nach Empfang eines Router Advertisement sollte das Interface eine entsprechende Adresse sich selbst konfiguriert haben
# ip -6 addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:db8:0:1:8992:3c03:d6e2:ed72/64 scope global secondary dynamic <- pseudo-random IID valid_lft 604711sec preferred_lft 86311sec inet6 2001:db8:0:1::224:21ff:fe01:2345/64 scope global <- IID based on MAC valid_lft 604711sec preferred_lft 86311sec ..
Permanente Aktivierung
Für eine permanente Aktivierung muss entweder ein spezieller Initscript-Wert pro Interface gesetzt sein oder ein entsprechender Wert in /etc/sysctl.conf definiert werden:
net.ipv6.conf.eth0.use_tempaddr=2
Achtung: das Interface muss zu diesem Zeitpunkt bereits existieren. Wenn das nicht der Fall ist (z.B. nach einem Reboot) musses für alle Interfaces konfiguriert werden:
net.ipv6.conf.all.use_tempaddr=2 net.ipv6.conf.default.use_tempaddr=2
Die Änderungen in /etc/sysctl.conf können im laufenden Betrieb geändert werden, aber zur wirklichen Aktivierung wird mindestens wird ein Interface-Restart (down/up) oder ein Reboot benötigt
# sysctl -p
Aktivieren von Privacy Extension mit Hilfe des NetworkManager
Moderne (Client-) Systeme nutzen NetworkManager zur Interface-Konfiguration. Ein Kommandozeilen-Werkzeug ist eingebaut welches auch Parameter ändern kann, die in der GUI nicht verfügbar (oder sichtbar) sind
Beispiele basieren auf Version 0.9.9.1-5.git20140319.fc21
Prüfen existierender Interfaces mit:
# nmcli connection NAME UUID TYPE DEVICE ens4v1 d0fc2b2e-5fa0-4675-96b5-b723ca5c46db 802-3-ethernet ens4v1
Menge von IPv6-Adressen mit Privacy Extension:
# ip -o addr show dev ens4v1 | grep temporary | wc -l 0
Aktuelle Einstellung der IPv6 Privacy Extension für ein Interface:
# nmcli connection show ens4v1 |grep ip6-privacy ipv6.ip6-privacy: -1 (unknown)
Aktivieren der IPv6 Privacy Extension und Restart des Interfaces;
# nmcli connection modify ens4v1 ipv6.ip6-privacy 2 # nmcli connection down ens4v1; nmcli connection up ens4v1
Neuer Wert der IPv6 Privacy Extension prüfen:
# nmcli connection show ens4v1 |grep ip6-privacy ipv6.ip6-privacy: 2 (active, prefer temporary IP)
Nun sollten auch IPv6 Privacy Extension Adressen automatisch konfiguriert sein
# ip -o addr show dev ens4v1 | grep temporary | wc -l 2
Test zur Benutzung von Privacy Extension IPv6-Adressen
Ob die IPv6-Adresss mit einer durch die Privacy Extension generierte Interface ID für ausgehende Verbindungen wirklich benutzt wird, kann z.B. mit Hilfe eines Web-Browers durch Aufruf von http://ip.bieringer.de/ durchgeführt werden. Wenn EUI64_SCOPE als Ausgabe ”iid-privacy” zeigt, dann funktioniert alles richtig