在 Windows 中禁用 DHCPv6 客户端

在 Windows 中禁用 DHCPv6 客户端

我不太明白netsh int ipv6 set interfaceWindows 中命令上下文中使用的与 IPv6 有状态和无状态自动配置相关的 4 个参数之间的联系:

  • advertise
  • routerdescovery
  • managedaddress
  • otherstateful

根据我目前所能找到的信息,我了解到:

  • advertise用于指示 RA 应由包含为该特定接口配置的和标志的操作系统发出/响应;MO与服务器相关。managedaddressotherstateful
  • routerdescovery用于指示操作系统应在该接口上请求/处理 RA,并根据 RA 所具有的标志使用它来配置自身;如果routerdescovery已启用,managedaddress则由otherstatefulRA 的标志覆盖;这与客户端相关

我的问题是当advertiserouterdescovery被禁用时会发生什么?

您可能会认为,在这种情况下,managedaddress和决定了该接口上otherstateful是否启用了 DHCPv6 客户端。然而,事实似乎并非如此。如果所有 4 个参数都被禁用(advertiserouterdescovery和),Windows 客户端仍将尝试联系 DHCPv6 服务器。managedaddressotherstateful

答案1

经过多次实验和大量模棱两可的文档和文章后,我推断managedaddressotherstateful仅与结合使用相关advertise(即当您在 Windows 服务器上启用 RA 时),它们有助于设置RA 数据包中的M和标志。O

如果routerdescovery启用和advertise禁用,您将无法再通过 netsh 配置managedaddressotherstateful参数,但只要 RA 到达接口,这两个参数就会自动配置,以便它们反映到达的 RA 数据包的M和标志。O

无论使用哪种配置,DHCPv6 请求消息始终在启用 IPv6 的接口上发送,即使收到M未设置标志的 RA 数据包也是如此。我找不到在 Windows 上禁用 DHCPv6 的方法(我假设是 Vista 及更高版本;我在 8.1 上进行了测试)。如果网络上有 DHCPv6 服务器,您将从中获取 IPv6 地址。

幸运的是,大多数网络使用无状态自动配置(每个节点根据 RA 中公布的前缀自行配置),而不是有状态自动配置(其中 IPv6 地址与 DHCPv6 服务器协商)。由于大多数网络都是无状态的,许多人认为禁用它routerdiscovery会阻止他们获取额外的 IPv6 地址。但如果网络上有 DHCPv6 服务器,则这种情况不成立。

答案2

我知道这是一个老问题,但我想补充一下,以防万一有用。我用于禁用系统所有网络接口上的 DHCPv6 和 IPv6 路由器发现的命令如下:

Set-NetIPInterface `
  -AddressFamily IPv6 `
  -InterfaceIndex $(Get-NetIpInterface -AddressFamily IPv6 | Select-Object -ExpandProperty InterfaceIndex) `
  -RouterDiscovery disabled `
  -Dhcp Disabled

除此之外,我还将系统设置为优先使用 IPv4 而不是 IPv6。需要重新启动才能使此更改生效。

New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" -Name "DisabledComponents" -Value 0x20 -PropertyType "DWORD"
#If DisabledComponents exists, use the set cmdlet
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\" -Name "DisabledComponents" -Value 0x20
#You need to reboot the computer in order for the changes to take effect
Restart-Computer

相关内容