Отключить DHCPv6-клиент в Windows

Отключить DHCPv6-клиент в Windows

Я не совсем понимаю связь между 4 параметрами, относящимися к автоконфигурации IPv6 с сохранением и без сохранения состояния, используемой в netsh int ipv6 set interfaceконтексте команды в Windows:

  • advertise
  • routerdescovery
  • managedaddress
  • otherstateful

Из того, что мне удалось найти на данный момент, я понимаю, что:

  • advertiseиспользуется для указания того, что ОС, содержащая флаг Mи , должна выдать/отреагировать на RA O, настроенный как managedaddressи otherstatefulдля данного конкретного интерфейса; это относится к серверу.
  • routerdescoveryиспользуется для указания того, что ОС должна запрашивать/обрабатывать RA на этом интерфейсе и использовать его для своей настройки на основе флагов RA; если routerdescoveryвключено, managedaddressи otherstatefulпереопределяется флагами RA; это относится к клиенту

У меня вопрос: что происходит, когда advertiseи routerdescoveryстановятся инвалидами?

Можно подумать, что в этом случае managedaddressи otherstatefulопределяет, включен ли клиент DHCPv6 на этом интерфейсе. Однако, похоже, это не так. Если все 4 параметра отключены ( advertise, routerdescovery, managedaddressи otherstateful), клиент Windows все равно попытается связаться с сервером DHCPv6.

решение1

После множества экспериментов и изучения множества неоднозначных документов и статей я пришел к выводу, что managedaddressи otherstatefulактуальны только в сочетании с advertise(т. е. когда вы включаете RA на своем сервере Windows), и они помогают устанавливать флаги Mи Oв пакетах RA.

Если routerdescoveryи включено, и advertiseвыключено, вы больше не сможете настраивать параметры managedaddressи otherstatefulчерез netsh, но как только RA поступает на интерфейс, эти два параметра настраиваются автоматически, так что они отражают флаги Mи Oпришедшего пакета RA.

Независимо от используемой конфигурации сообщения DHCPv6 Solicit всегда отправляются на интерфейсы с поддержкой IPv6, даже при получении пакетов RA с MНЕ установленным флагом. Я не смог найти способ отключить DHCPv6 в Windows (предполагаю 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

Связанный контент