好吧,有些用户可能会使用静态 IPv6 地址进行 http 请求;其他人不会。
看看我发布的机器主界面上的 [一些] IPv6 地址:
C:\>netsh interface ipv6 show address interface=4 level=normal
Querying active state...
Interface 4: Local Area Connection
Addr Type DAD State Valid Life Pref. Life Address
--------- ---------- ------------ ------------ -----------------------------
[...]
Temporary Preferred 23h59m47s 3h59m47s 2001:4830:16c0:0:f51c:8f47:26ff:596b
Temporary Deprecated 23h59m47s 0s 2001:4830:16c0:0:8d09:1a8:6039:548b
Temporary Deprecated 23h59m47s 0s 2001:4830:16c0:0:954b:fd2d:6528:a6b2
Temporary Deprecated 23h59m47s 0s 2001:4830:16c0:0:4c27:9415:e1cc:5a5a
Temporary Deprecated 23h59m47s 0s 2001:4830:16c0:0:951f:b93:b21e:1d97
Temporary Deprecated 23h59m47s 0s 2001:4830:16c0:0:59c3:d575:189e:4fbb
Temporary Deprecated 6h32m45s 0s 2001:4830:16c0:0:f838:1133:38d0:894c
Public Preferred 23h59m47s 3h59m47s 2001:4830:16c0:0:20b:dbff:fe26:9fc5
Link Preferred infinite infinite fe80::20b:dbff:fe26:9fc5
No entries were found.
(我省略了其他一些只会混淆的地址。)
请注意,除了“链接”地址之外,还有一个“公共”地址和一堆“临时”地址(其中大部分是“已弃用”)。
“链接”地址只是接口的链接本地地址,用于各种本地管理聊天。(顾名思义,它只能用于与同一“链接”上的其他主机通信;它不能用于要路由的流量。)
naesten@hydrogen:~% ipv6calc -i fe80::20b:dbff:fe26:9fc5 2>/dev/null
Address type: unicast, link-local
Registry for address: reserved
Interface identifier: 020b:dbff:fe26:9fc5
EUI-48/MAC address: 00:0b:db:26:9f:c5
MAC is a global unique one
MAC is an unicast one
OUI is: Dell ESG PCBA Test
如您所见,该地址的接口标识符(右 64 位一半)直接基于接口的 MAC 地址。
显示的其他地址恰好来自我的 Sixxs 提供的子网,2001:4830:16c0::/48
但不幸的是,由于存在点已关闭,它们现在无法正常工作。
“公共”地址只是将前缀与与链路本地地址中相同的接口标识符粘贴在一起,并且(给定名称)这是服务器和长时间运行的点对点的地址也就不足为奇了节目通常会听。
但是那些“临时”地址呢?
现在是令人费解的一点:所有这些其他地址是做什么用的,它们来自哪里?
答案可以在RFC 4941 - IPv6 中无状态地址自动配置的隐私扩展中找到。你看,事实证明,在你的 IP 地址中永远使用相同的接口标识符使得攻击者很容易“关联看似不相关的活动”(无需“跟踪 cookie”,并允许合并独立收集的数据稍后的)。
解决方案是对大多数通信使用临时IPv6 地址。在任何给定时间,其中之一是“首选”地址,用于新的通信,还有一些是“有效”但不是“首选”,因此在切换到时不会过度中断正在进行的通信一个新的“首选”地址。没有地址分别保持“首选”或“有效”的时间超过TEMP_VALID_LIFETIME
或TEMP_PREFERRED_LIFETIME
。
特别是,第 5 节建立了以下默认值,这些默认值肯定与我们在这里看到的一致:
TEMP_VALID_LIFETIME -- Default value: 1 week. Users should be able
to override the default value.
TEMP_PREFERRED_LIFETIME -- Default value: 1 day. Users should be
able to override the default value.