
netsh int ipv6 set interface
Ich verstehe den Zusammenhang zwischen den vier Parametern im Zusammenhang mit der zustandsbehafteten und zustandslosen IPv6-Autokonfiguration, die im Befehlskontext in Windows verwendet wird, nicht ganz :
advertise
routerdescovery
managedaddress
otherstateful
Soweit ich es bisher herausgefunden habe, verstehe ich Folgendes:
advertise
wird verwendet, um anzugeben, dass RA vom Betriebssystem gesendet/beantwortet werden soll und das Flag enthält, dasM
alsO
und für diese bestimmte Schnittstelle konfiguriert istmanagedaddress
.otherstateful
Dies ist für einen Server relevant.routerdescovery
wird verwendet, um anzugeben, dass das Betriebssystem RA auf dieser Schnittstelle anfordern/verarbeiten und es verwenden soll, um sich selbst basierend auf den Flags des RA zu konfigurieren; wennrouterdescovery
aktiviert, werdenmanagedaddress
sieotherstateful
durch die Flags des RA überschrieben; dies ist für einen Client relevant
Meine Frage ist, was passiert, wenn advertise
und routerdescovery
deaktiviert sind?
Man könnte meinen, dass in diesem Fall managedaddress
und otherstateful
bestimmt, ob der DHCPv6-Client auf dieser Schnittstelle aktiviert ist oder nicht. Dies scheint jedoch nicht der Fall zu sein. Wenn alle 4 Parameter deaktiviert sind ( advertise
, routerdescovery
, managedaddress
und otherstateful
), versucht der Windows-Client dennoch, einen DHCPv6-Server zu kontaktieren.
Antwort1
Nach vielen Experimenten und einer Menge mehrdeutiger Dokumente und Artikel bin ich zu dem Schluss gekommen, dass managedaddress
und otherstateful
nur in Verbindung mit relevant sind advertise
(d. h. wenn Sie RA auf Ihrem Windows-Server aktivieren) und dass sie beim Festlegen der M
und O
Flags in den RA-Paketen helfen.
Wenn routerdescovery
aktiviert und advertise
deaktiviert ist, können Sie die Parameter managedaddress
und nicht otherstateful
mehr über netsh konfigurieren, aber sobald ein RA auf der Schnittstelle eintrifft, werden diese beiden Parameter automatisch so konfiguriert, dass sie die M
und O
Flags des angekommenen RA-Pakets widerspiegeln.
Unabhängig davon, welche Konfiguration verwendet wird, werden DHCPv6-Anforderungsnachrichten immer über IPv6-fähige Schnittstellen gesendet, selbst wenn RA-Pakete mit M
NICHT gesetztem Flag empfangen werden. Ich konnte keine Möglichkeit finden, DHCPv6 unter Windows zu deaktivieren (ich nehme an, Vista und höher; ich habe es unter 8.1 getestet). Wenn sich im Netzwerk ein DHCPv6-Server befindet, erhalten Sie von diesem eine IPv6-Adresse.
Glücklicherweise verwenden die meisten Netzwerke eine zustandslose Autokonfiguration (jeder Knoten konfiguriert sich selbst basierend auf dem im RA angekündigten Präfix) anstelle einer zustandsbehafteten Autokonfiguration, bei der eine IPv6-Adresse mit einem DHCPv6-Server ausgehandelt wird. Da die meisten Netzwerke zustandslos sind, dachten viele Leute, dass routerdiscovery
sie durch die Deaktivierung keine weiteren IPv6-Adressen mehr erhalten würden. Dies ist jedoch nicht gültig, wenn sich im Netzwerk ein DHCPv6-Server befindet.
Antwort2
Ich weiß, dass dies eine alte Frage ist, aber ich wollte sie hinzufügen, falls sie nützlich ist. Der Befehl, den ich zum Deaktivieren von DHCPv6 und der Routererkennung für IPv6 auf allen Netzwerkschnittstellen eines Systems verwende, lautet wie folgt:
Set-NetIPInterface `
-AddressFamily IPv6 `
-InterfaceIndex $(Get-NetIpInterface -AddressFamily IPv6 | Select-Object -ExpandProperty InterfaceIndex) `
-RouterDiscovery disabled `
-Dhcp Disabled
Darüber hinaus habe ich ein System so eingestellt, dass IPv4 gegenüber IPv6 bevorzugt wird. Damit diese Änderung wirksam wird, ist ein Neustart erforderlich.
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