Não entendo muito bem a ligação entre 4 parâmetros relacionados à configuração automática com e sem estado IPv6 usada no netsh int ipv6 set interface
contexto de comando no Windows:
advertise
routerdescovery
managedaddress
otherstateful
Pelo que pude encontrar até agora, entendo que:
advertise
é usado para indicar que o RA deve ser emitido/respondido pelo sistema operacional contendo o sinalizadorM
andO
configurado comomanagedaddress
eotherstateful
para aquela interface específica; isso é relevante para um servidor.routerdescovery
é usado para indicar que o sistema operacional deve solicitar/processar RA nessa interface e usá-lo para se configurar com base nos sinalizadores que o RA possui; serouterdescovery
estiver habilitadomanagedaddress
eotherstateful
for substituído pelos sinalizadores do RA; isso é relevante para um cliente
Minha pergunta é o que acontece quando advertise
e routerdescovery
estão desativados?
Você pensaria isso neste caso managedaddress
e otherstateful
determina se o cliente DHCPv6 está habilitado ou não nessa interface. Contudo, não parece ser assim. Se todos os 4 parâmetros estiverem desabilitados ( advertise
, e ) routerdescovery
, o cliente Windows ainda tentará entrar em contato com um servidor DHCPv6.managedaddress
otherstateful
Responder1
Depois de muitos experimentos e muitos documentos e artigos ambíguos, deduzi isso managedaddress
e otherstateful
são relevantes apenas em conjunto com advertise
(ou seja, quando você habilita o RA em seu servidor Windows) e ajudam a definir os M
sinalizadores e O
nos pacotes RA.
Se routerdescovery
estiver habilitado e advertise
desabilitado, você não poderá mais configurar managedaddress
parâmetros otherstateful
através do netsh, mas assim que um RA chega na interface, esses dois parâmetros são configurados automaticamente para que reflitam os flags M
e O
do pacote RA chegado.
Independentemente da configuração utilizada, as mensagens de solicitação DHCPv6 são sempre enviadas em interfaces habilitadas para IPv6, mesmo ao receber pacotes RA com M
flag NOT definido. Não consegui encontrar uma maneira de desabilitar o DHCPv6 no Windows (presumo o Vista e superior; testei no 8.1). Se houver um servidor DHCPv6 na rede, você obterá um endereço IPv6 dele.
Felizmente, a maioria das redes usa configuração automática sem estado (cada nó se configura com base no prefixo anunciado no RA) em vez da configuração automática com estado, onde um endereço IPv6 é negociado com um servidor DHCPv6. Como a maioria das redes não tem estado, muitas pessoas pensaram que a desativação routerdiscovery
as impediria de obter endereços IPv6 adicionais. Mas isso não é válido se houver um servidor DHCPv6 na rede.
Responder2
Eu sei que esta é uma pergunta antiga, mas gostaria de acrescentar caso isso fosse útil. O comando que uso para desabilitar o DHCPv6 e a descoberta de roteador para IPv6 em todas as interfaces de rede de um sistema é o seguinte:
Set-NetIPInterface `
-AddressFamily IPv6 `
-InterfaceIndex $(Get-NetIpInterface -AddressFamily IPv6 | Select-Object -ExpandProperty InterfaceIndex) `
-RouterDiscovery disabled `
-Dhcp Disabled
Além disso, também configurei um sistema para preferir IPv4 a IPv6. A reinicialização é necessária para que esta alteração tenha efeito.
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