Я думаю, что этот вопрос касается взаимодействия между настраиваемым алгоритмом выбора адреса по умолчанию, определенным в RFC-3484, и временными адресами, определенными в RFC-4941, хотя для решения может потребоваться некоторый третий тип функциональности. Моя среда - Linux (версия ядра 3.2.0 в Ubuntu 12.04) с утилитой iproute2 (версия ss111117).
Как я могу настроить свой компьютер на использование обычного расширенного адреса без конфиденциальности для подключения к другим узлам с тем же префиксом, но использовать временный адрес для соединений с узлами вне этого префикса?
Например, предположим, что мой компьютер fuzzy
, а мой файловый сервер - bunny
. Где-то в интернете IPv6 есть сайт, который я хочу посетить, nosey.example.com
. Вот адреса, назначенные на 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
имеет статически настроенный адрес с тем же префиксом.
neirbowj@fuzzy:~$ grep bunny /etc/hosts
2001:db8:d00d:babe::1 bunny
nosey.example.com
не находится на этом префиксе.
neirbowj@fuzzy:~$ host -t aaaa nosey.example.com
nosey.example.com has IPv6 address 2001:db8:b00b:1e5::1
Метки адресов на fuzzy
задаются по умолчанию.
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
Когда я подключаюсь к bunny
, я хочу использовать 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7
, потому что он не помечен как « temporary
». При подключении к nosey.example.com
я хочу использовать 2001:db8:d00d:babe:6d3b:96d0:f584:beb3
, потому что он попадает temporary
Возможно ли это, и если да, то как?
Я уже читал, как работает выбор адреса источника IPv6 в Linux, но я не вижу, как какое-либо из правил повлияет на этот выбор, и даже как temporary
флаг вообще не сообщает о выборе адреса.
Причина, по которой я думаю, что смогу это сделать, заключается в этом отрывке.
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.