如果是这样,那么应该如何工作?客户端是否应该根据分配所通过的接口自行附加接口标识符?
答案1
远程域名服务系统
2017 年 3 月最新更新的 RDNSS 定义 RFC 8106 指出第 5.1 节:
注意:RDNSS 选项中的 RDNSS 地址可以是链路本地地址。此类链路本地地址应与接收其 RDNSS 选项的链接的相应链接区域索引一起在解析器存储库中注册。链路本地地址可以与它们的链接区域索引一起在解析器存储库中表示,其范围地址的文本格式如 [RFC4007] 中所述。当解析器向由链路本地地址标识的 RDNSS 发送 DNS 查询消息时,它必须使用相应的链接。
据推测这是为了表明使用链接本地 DNS 服务器应该是可以接受的,并且正如您所说,在这种情况下主机需要确保它保持其接口标识符的正确性。
与任何与新 IPv6 标准相关的内容一样,您最喜欢的操作系统对所宣布内容的支持程度会有所不同,但希望最终供应商能够签署并实施它。据报道维基百科“Windows 10 Creators Update 引入了对 RFC 8106 RDNSS 的支持”,尽管在撰写本文时没有对此的引用,但我尚未独立验证它,而且我不知道它的支持是否包括此功能。
DHCPv6
我还没有找到任何类似的更新来澄清 DHCPv6 选项中指定的 DNS 服务器的情况。可以说,我不指望它能在各种系统上一致地工作。
解决方法
除非有标准(指定或事实上的)方法来为网络客户端指定链接本地 DNS 服务器,否则在任何非实验室场景中,最好使用真实的全局地址,或者至少唯一本地地址,因为这些是大多数软件所期望的。
答案2
很有趣。RFC 没有提到任何有关使用本地链路的内容。我刚刚尝试使用 Juniper SSG5 作为 DHCPv6 服务器,使用 Mac OS X Lion 作为客户端,它似乎确实有效 :-) 接收 DHCP 数据包的接口成为请求的传出接口。
但它会使调试变得非常复杂......