我不太了解在Windows下netsh int ipv6 set interface命令上下文中使用的与IPv6有状态和无状态自动configuration相关的4个参数之间的链接:
advertise routerdescovery managedaddress otherstateful 从我到目前为止所能find的,我明白:
advertise用于指示RA应该被包含被configuration为managedaddress的M和O标志的操作系统命令/响应,并且针对该特定的接口而言, 这与服务器有关。 routerdescovery用于指示操作系统应该请求/处理该接口上的RA,并使用它来基于RA具有的标志来configuration它自己; 如果启用managedaddress ,则通过RA标志覆盖managedaddress和otherstateful ; 这与客户有关 我的问题是advertise和routerdescovery禁用时会发生什么?
您可能会认为在这种情况下, managedaddress和otherstateful确定是否在该接口上启用DHCPv6客户端。 但是,似乎并非如此。 如果所有4个参数都被禁用( advertise , routerdescovery , managedaddress和otherstateful )Windows客户端仍将尝试联系DHCPv6服务器。
经过大量的实验和大量模糊的文档和文章,我曾经managedaddress过, managedaddress和otherstateful只与advertise (即当你在你的Windows服务器上启用RA时),它们帮助设置RA数据包中的M和O标志。
如果routerdescovery已启用且禁用了managedaddress , otherstateful不能通过netshconfigurationmanagedaddress和otherstateful参数,但只要RA到达接口,这两个参数就会自动configuration,以便它们反映已到达的M和O标志RA数据包。
无论使用哪种configuration,即使在接收到M标记未设置的RA数据包时,始终在启用IPv6的接口上发送DHCPv6请求消息。 我无法find一种方法来禁用Windows上的DHCPv6(我认为Vista和以上;我testing8.1)。 如果networking上有DHCPv6服务器,您将从中获得IPv6地址。
幸运的是,大多数networking使用无状态自动configuration(每个节点根据RA中通告的前缀进行自我configuration),而不是使用有状态自动configuration(其中IPv6地址与DHCPv6服务器进行协商)。 由于大多数networking是无状态的,许多人认为禁用routerdiscovery将阻止他们获得额外的IPv6地址。 但是,如果networking上有DHCPv6服务器,这是无效的。