Verwenden Sie temporäre IPv6-Adressen nur mit Remote-Peers

1479
neirbowj

Ich denke, diese Frage betrifft die Interaktion zwischen dem durch RFC-3484 definierten konfigurierbaren Default Address Selection-Algorithmus und den durch RFC-4941 definierten temporären Adressen, obwohl die Lösung möglicherweise eine dritte Art von Funktionalität erfordert. Meine Umgebung ist Linux (Kernel-Version 3.2.0 unter Ubuntu 12.04) mit dem Dienstprogramm iproute2 (Version ss111117).

Wie kann ich meinen Computer so konfigurieren, dass er eine normale, nicht für den Datenschutz bestimmte, erweiterte Adresse verwendet, um eine Verbindung zu anderen Knoten unter demselben Präfix herzustellen, aber eine temporäre Adresse für Verbindungen zu Knoten außerhalb dieses Präfixes verwenden?

Nehmen wir zum Beispiel an, mein Computer ist fuzzyund mein Dateiserver bunny. Irgendwo außerhalb des IPv6-Internets ist eine Website, die ich besuchen möchte nosey.example.com. Hier sind die Adressen zugewiesen auf fuzzy:

neirbowj@fuzzy:~$ ip -6 addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:db8:d00d:babe:6d3b:96d0:f584:beb3/64 scope global temporary dynamic  valid_lft 599342sec preferred_lft 80342sec inet6 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7/64 scope global dynamic  valid_lft 2591986sec preferred_lft 604786sec inet6 fe80::22fc:11ff:fe53:b2e7/64 scope link  valid_lft forever preferred_lft forever 

bunny hat eine statisch konfigurierte Adresse im selben Präfix.

neirbowj@fuzzy:~$ grep bunny /etc/hosts 2001:db8:d00d:babe::1 bunny 

nosey.example.com steht nicht auf diesem Präfix.

neirbowj@fuzzy:~$ host -t aaaa nosey.example.com nosey.example.com has IPv6 address 2001:db8:b00b:1e5::1 

Die Adressetiketten fuzzywerden auf ihre Standardwerte gesetzt.

neirbowj@fuzzy:~$ ip addrlabel prefix ::1/128 label 0  prefix ::/96 label 3  prefix ::ffff:0.0.0.0/96 label 4  prefix 2001::/32 label 6  prefix 2001:10::/28 label 7  prefix 2002::/16 label 2  prefix fc00::/7 label 5  prefix ::/0 label 1  

Wenn ich eine Verbindung aufbaue bunny, möchte ich verwenden 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7, da es nicht mit " temporary" gekennzeichnet ist. Wenn ich eine Verbindung zu nosey.example.com, ich möchte verwenden, 2001:db8:d00d:babe:6d3b:96d0:f584:beb3weil es ist markiert „ temporary“. Ist das möglich und wenn ja, wie?

Ich habe bereits gelesen, wie die Auswahl der IPv6-Quelladressen in Linux funktioniert, aber ich sehe nicht, wie sich eine der Regeln auf diese Auswahl auswirkt, und auch nicht, wie die temporaryMarkierung die Adressauswahl überhaupt angibt.

Ich denke, ich sollte das tun können, ist dieser Auszug.

RFC-4941 Section 3.1 Assumptions  [...]  Finally, this document assumes that when a node initiates outgoing communication, temporary addresses can be given preference over public addresses when the device is configured to do so. [ADDR_SELECT] mandates implementations to provide a mechanism, which allows an application to configure its preference for temporary addresses over public addresses. It also allows for an implementation to prefer temporary addresses by default, so that the connections initiated by the node can use temporary addresses without requiring application-specific enablement. This document also assumes that an API will exist that allows individual applications to indicate whether they prefer to use temporary or public addresses and override the system defaults. 
6

1 Antwort auf die Frage

2
Sander Steffann

Es scheint ein seltsamer Ort zu sein, aber in Linux können Sie dies in der Routingtabelle tun.

Sagen Sie, dass Ihre Routingtabelle derzeit so aussieht:

# ip -6 route 2001:db8:d00d:babe::/64 dev eth0 proto kernel metric 256  default via 2001:db8:d00d:babe::1 dev eth0 metric 1024  

Sie können Routen angeben, die die Quelladresse überschreiben. In diesem Fall könnten Sie Folgendes tun:

# ip -6 route add 2001:db8:d00d:babe::/64 \ dev eth0 \ src 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7 \ metric 128 

Da diese Route eine niedrigere Metrik als die aktuelle hat (mit der Metrik 256), wird sie überschrieben. Wenn Sie jetzt eine Verbindung zu einer bunnyAdresse herstellen, stimmt 2001:db8:d00d:babe::1diese Route überein und es wird die konfigurierte Quelladresse verwendet.

Wenn Sie auch eine bestimmte Quelladresse für andere Subnetze verwenden möchten, können Sie auch eine Route für diese erstellen. Zum Beispiel:

# ip -6 route add 2001:db8:d00d::/48 \ via 2001:db8:d00d:babe::1 \ dev eth0 \ src 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7 \ metric 128 
Dies ist eine großartige Antwort auf eine etwas andere Frage, da dieser Ansatz vom Adresstyp (statisch, DHCPv6, SLAAC, SLAAC + Privacy usw.) unabhängig ist. Obwohl es das Beste ist, was ich tun kann, möchte ich noch etwas warten, bevor ich Ihre Antwort akzeptiere. neirbowj vor 11 Jahren 0
@neirbowj Die Methode, mit der Sie Ihre Adressen erhalten, ist nicht wirklich relevant. So würden Sie es tun. Übrigens, Sie können dies auch in `/ etc / network / interfaces` ablegen, um es dauerhaft zu machen. Michael Hampton vor 11 Jahren 0
Ich habe nicht gesagt, dass ich es nicht so machen könnte, aber wenn Sie meine Frage lesen, hoffe ich, dass Sie sehen werden, warum die Art und die Quelle der Adressen so relevant sind. neirbowj vor 11 Jahren 0
@neirbowj Deine Frage sagt nichts darüber aus. Vielleicht haben Sie vergessen, es hinzuzufügen? Michael Hampton vor 11 Jahren 1
@MichaelHampton: Ich sage es an drei Stellen: den Titel ("Temporäre Adressen verwenden ..."), der erste Satz, der mit "?" Endet. (regelmäßig, nicht gegen Datenschutz vorübergehend), und der Satz kurz vor "Ist dies möglich und wenn ja, wie?" ("weil es nicht markiert ist ... weil es markiert ist ..."). neirbowj vor 11 Jahren 0
@neirbowj Und diese Antwort deckt es perfekt ab. Was ist das Problem? Michael Hampton vor 11 Jahren 0
Als temporär gekennzeichnete Adressen werden standardmäßig verwendet. Sie müssen also nur Routing-Tabelleneinträge festlegen, um diese Standardeinstellung zu überschreiben. Passt zu deiner Frage, würde ich denken. Sander Steffann vor 11 Jahren 0