Ich habe jetzt mal das neue IPv6-Feature der aktuellen Labor-Firmwares ausprobiert.
Vorausgeschickt: IPv6 läuft bei mir grundsätzlich. Bei der Telekom wird auch eine dynamische IPv6-Adresse vergeben (vermutlich die IPv4-to-IPv6-Adresse mit Präfix 2002).
Ich dachte eigentlich schon, verstanden zu haben, worum es geht, aber nun fällt mir auf, dass es bestimmte Dinge gibt, die nicht so funktionieren, wie ich es erwartet hätte:
Die Fritzbox verteilt IPv6-Adressen aus drei Scopes an die Clients: Link-Local, Unique Local und Global. Bei allen dreien orientiert sich normalerweise die Interface-ID (niederwertige 64 Bits) an der MAC der Netzwerkkarte des Clients, zumeist an der EUI-64 festgemacht.
Das bedeutet, man könnte die MAC aus der IP-Adresse herauslesen, weil die Interface-ID einer Netzwerkkarte mit der MAC 01:02:03:04:05:06 z.B. 2102:03fe:ff05:0506 wäre. Da bei der Fritzbox die Interface-ID für alle Scopes gleich belegt wird, meldet sich der Client mit genau dieser Adresse im IPv6-Internet. Damit kann man alles mögliche über den Client erfahren. Außerdem ist die Interface-ID bei jedem Verbindungsaufbau die selbe, so dass es ein Leichtes wäre, ihn zu identifizieren (auch ohne Cookies o.ä.).
Nun war dieses Problem kurz nach EInführung von IPv6 bekannt und es gibt zur Behebung den RFC 4941, mit dem man das Berechnungsverfahren der Interface-ID mehr oder weniger "zufällig" gestalten kann.
Das hilft aber nur bedingt, wie ich leider feststellen musste:
1. Unter Linux wird das Verfahren standardmäßig nicht angewendet, es sei denn, man macht:
"sysctl -w net.ipv6.conf.eth0.use_tempaddr=2"
2. Unter Windows 7 wird es per Default gemacht (kann per "netsh interface ipv6 set global randomizeidentifiers=disabled" geändert werden). Die Adresse scheint dabei persistent zu bleiben, nachdem sie einmal festgelegt wurde.
Wenn die Interface-ID "zufällig" gewählt wird, ist schon ein Schritt getan, weil man die MAC nicht mehr sehen kann.
Wird sie dann aber wie bei Windows 7 nicht immer wieder gewechselt, bleibt die Identifizierbarkeit eines einzelnen Users/Endgeräts trotzdem erhalten.
Und selbst ein ständiger Wechsel bringt ein Problem mit sich: Man will über IPv6 ja gerade Dienste nach außen öffnen. Wie soll man das bei ständig geänderten Adressen denn tun? Die IPv6-Portfreigabe der Fritzbox würde bei sich ändernden Adressen gar nicht mehr funktionieren, denn dort muss man die Interface-ID ja gerade angeben.
Ein weiteres Problem liegt darin, dass die üblichen Dyndns-Anbieter noch keine IPv6-Auflösung unterstützen, so dass man die volle IPv6-Adresse inklusive den höherwertigen 64 Bit des ISP eintippen müsste. Dazu müssten die Anbieter ja auch mindestens die Übermittlung von Interface-IDs zulassen, weil anders als bei IPv4 ja nicht mehr alle Geräte die selbe IP verwenden.
Was bräuchte man?
Ich würde mir wünschen, dass ich analog wie beim DHCP der Fritzbox auch DHCPv6 konfigurieren könnte. Damit könnte man doch den Endgeräten mittels der MAC eine Interface-ID (und auch einen lokalen DNS-Namen, das fehlt m.W. nach auch noch) fest zuordnen, z.B. so:
MAC 01:02:03:04:05:06 = Link-local fe80::111 = Global 2002:5089:6721::111 = DNS lokal "serverbox"
In Zweifelsfall sollte das zusätzlich zur vom Endgerät gewählten Link-Local-Adresse geschehen (schließlich kann ein Interface mehrere IPv6-Adressen haben, sogar im selben Subnetz). Nun könnte man sagen, dass das mit der ULA (Präfix z.B. fd00) bei der Fritzbox schon heute ginge, allerdings wird für die Absenderadresse leider immer die globale Adresse genommen und an die ULA kann man auch keine Port-Forwards einrichten. AVM könnte als Absenderadresse ja auch eine willkürliche feste Interface-ID verwenden, z.B. 0000:0000:0000:1234, wobei NAT bei IPv6 so seine Tücken hat und man eher darauf verzichten sollte.
Aus der (konstanten) Interface-ID 111 meines Rechners mag eine Website im Internet schließen, was sie will. Die IPv6-Portfreigabe wäre mit den vorhandenen Mitteln möglich. Das Internet-DNS-Problem löst sich dann spätestens mit der Verfügbarkeit von festen IPv6-Adressen oder wenn die Dyndns-Provider nachziehen.
Oder habe ich etwas Offensichtliches übersehen und meine Anforderungen lassen sich schon heute erfüllen? Zur Erinnerung:
- Keine Herausgabe der MAC in der Interface-ID
- Keine Identifizierbarkeit anhand einer immer wiederkehrenden 64-Bit-Interface-ID (es sei denn, sie sei offensichtlich absichtlich gewählt und kommt somit hundertfach vor).
- Erreichbarkeit interner Endgeräte von aussen per einstellbarem Port-Forwarding
- Dynamischer DNS mit IPv6 als Übergangslösung bis zur Vergabe von festen IPv6-Adressen
- Auflösung von internen, fest zuordnungsfähigen DNS-Namen zur IPv6-Adresse
Vorausgeschickt: IPv6 läuft bei mir grundsätzlich. Bei der Telekom wird auch eine dynamische IPv6-Adresse vergeben (vermutlich die IPv4-to-IPv6-Adresse mit Präfix 2002).
Ich dachte eigentlich schon, verstanden zu haben, worum es geht, aber nun fällt mir auf, dass es bestimmte Dinge gibt, die nicht so funktionieren, wie ich es erwartet hätte:
Die Fritzbox verteilt IPv6-Adressen aus drei Scopes an die Clients: Link-Local, Unique Local und Global. Bei allen dreien orientiert sich normalerweise die Interface-ID (niederwertige 64 Bits) an der MAC der Netzwerkkarte des Clients, zumeist an der EUI-64 festgemacht.
Das bedeutet, man könnte die MAC aus der IP-Adresse herauslesen, weil die Interface-ID einer Netzwerkkarte mit der MAC 01:02:03:04:05:06 z.B. 2102:03fe:ff05:0506 wäre. Da bei der Fritzbox die Interface-ID für alle Scopes gleich belegt wird, meldet sich der Client mit genau dieser Adresse im IPv6-Internet. Damit kann man alles mögliche über den Client erfahren. Außerdem ist die Interface-ID bei jedem Verbindungsaufbau die selbe, so dass es ein Leichtes wäre, ihn zu identifizieren (auch ohne Cookies o.ä.).
Nun war dieses Problem kurz nach EInführung von IPv6 bekannt und es gibt zur Behebung den RFC 4941, mit dem man das Berechnungsverfahren der Interface-ID mehr oder weniger "zufällig" gestalten kann.
Das hilft aber nur bedingt, wie ich leider feststellen musste:
1. Unter Linux wird das Verfahren standardmäßig nicht angewendet, es sei denn, man macht:
"sysctl -w net.ipv6.conf.eth0.use_tempaddr=2"
2. Unter Windows 7 wird es per Default gemacht (kann per "netsh interface ipv6 set global randomizeidentifiers=disabled" geändert werden). Die Adresse scheint dabei persistent zu bleiben, nachdem sie einmal festgelegt wurde.
Wenn die Interface-ID "zufällig" gewählt wird, ist schon ein Schritt getan, weil man die MAC nicht mehr sehen kann.
Wird sie dann aber wie bei Windows 7 nicht immer wieder gewechselt, bleibt die Identifizierbarkeit eines einzelnen Users/Endgeräts trotzdem erhalten.
Und selbst ein ständiger Wechsel bringt ein Problem mit sich: Man will über IPv6 ja gerade Dienste nach außen öffnen. Wie soll man das bei ständig geänderten Adressen denn tun? Die IPv6-Portfreigabe der Fritzbox würde bei sich ändernden Adressen gar nicht mehr funktionieren, denn dort muss man die Interface-ID ja gerade angeben.
Ein weiteres Problem liegt darin, dass die üblichen Dyndns-Anbieter noch keine IPv6-Auflösung unterstützen, so dass man die volle IPv6-Adresse inklusive den höherwertigen 64 Bit des ISP eintippen müsste. Dazu müssten die Anbieter ja auch mindestens die Übermittlung von Interface-IDs zulassen, weil anders als bei IPv4 ja nicht mehr alle Geräte die selbe IP verwenden.
Was bräuchte man?
Ich würde mir wünschen, dass ich analog wie beim DHCP der Fritzbox auch DHCPv6 konfigurieren könnte. Damit könnte man doch den Endgeräten mittels der MAC eine Interface-ID (und auch einen lokalen DNS-Namen, das fehlt m.W. nach auch noch) fest zuordnen, z.B. so:
MAC 01:02:03:04:05:06 = Link-local fe80::111 = Global 2002:5089:6721::111 = DNS lokal "serverbox"
In Zweifelsfall sollte das zusätzlich zur vom Endgerät gewählten Link-Local-Adresse geschehen (schließlich kann ein Interface mehrere IPv6-Adressen haben, sogar im selben Subnetz). Nun könnte man sagen, dass das mit der ULA (Präfix z.B. fd00) bei der Fritzbox schon heute ginge, allerdings wird für die Absenderadresse leider immer die globale Adresse genommen und an die ULA kann man auch keine Port-Forwards einrichten. AVM könnte als Absenderadresse ja auch eine willkürliche feste Interface-ID verwenden, z.B. 0000:0000:0000:1234, wobei NAT bei IPv6 so seine Tücken hat und man eher darauf verzichten sollte.
Aus der (konstanten) Interface-ID 111 meines Rechners mag eine Website im Internet schließen, was sie will. Die IPv6-Portfreigabe wäre mit den vorhandenen Mitteln möglich. Das Internet-DNS-Problem löst sich dann spätestens mit der Verfügbarkeit von festen IPv6-Adressen oder wenn die Dyndns-Provider nachziehen.
Oder habe ich etwas Offensichtliches übersehen und meine Anforderungen lassen sich schon heute erfüllen? Zur Erinnerung:
- Keine Herausgabe der MAC in der Interface-ID
- Keine Identifizierbarkeit anhand einer immer wiederkehrenden 64-Bit-Interface-ID (es sei denn, sie sei offensichtlich absichtlich gewählt und kommt somit hundertfach vor).
- Erreichbarkeit interner Endgeräte von aussen per einstellbarem Port-Forwarding
- Dynamischer DNS mit IPv6 als Übergangslösung bis zur Vergabe von festen IPv6-Adressen
- Auflösung von internen, fest zuordnungsfähigen DNS-Namen zur IPv6-Adresse