在 Windows 中停用 DHCPv6 用戶端

在 Windows 中停用 DHCPv6 用戶端

我不太明白netsh int ipv6 set interfaceWindows 命令上下文下使用的與 IPv6 有狀態和無狀態自動配置相關的 4 個參數之間的聯繫:

  • advertise
  • routerdescovery
  • managedaddress
  • otherstateful

從迄今為止我所能找到的情況來看,我了解到:

  • advertise用於指示 RA 應由包含配置為該特定介面的 和 標誌的作業系統發出/回應M;這與伺服器有關。Omanagedaddressotherstateful
  • routerdescovery用於指示作業系統應在該介面上請求/處理 RA,並使用它根據 RA 具有的標誌來配置自身; ifrouterdescovery已啟用,managedaddress並且otherstateful被 RA 的標誌覆蓋;這與客戶相關

我的問題是當advertiserouterdescovery被禁用時會發生什麼?

您可能會認為在這種情況下,managedaddressotherstateful確定該介面上是否啟用 DHCPv6 用戶端。然而,事實似乎並非如此。如果停用所有 4 個參數(advertiserouterdescovery和) managedaddressotherstatefulWindows 用戶端仍會嘗試聯絡 DHCPv6 伺服器。

答案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

相關內容