netsh int ipv6 set interface
Windows のコマンド コンテキストで使用される IPv6 ステートフルおよびステートレス自動構成に関連する 4 つのパラメーター間のリンクがよくわかりません。
advertise
routerdescovery
managedaddress
otherstateful
これまでに調べた限りでは、次のことが分かります。
advertise
RA は、その特定のインターフェースに対しておよびとして設定されたM
およびO
フラグを含む OS によって発行/応答される必要があることを示すために使用されます。これはサーバーに関連します。managedaddress
otherstateful
routerdescovery
OS がそのインターフェースで RA を要求/処理し、RA が持つフラグに基づいて OS 自身を構成することを示すために使用されます。routerdescovery
有効になっている場合は、managedaddress
RAotherstateful
のフラグによって上書きされます。これはクライアントに関連します。
私の質問は、 とadvertise
がrouterdescovery
無効になっていると何が起こるかということです。
managedaddress
この場合、とによって、そのインターフェイスで DHCPv6 クライアントが有効かどうかが決定されると考えられますotherstateful
。ただし、そうではないようです。4 つのパラメータがすべて無効になっている場合 ( advertise
、routerdescovery
、 ) managedaddress
、otherstateful
Windows クライアントは引き続き DHCPv6 サーバーに接続しようとします。
答え1
多くの実験と多くのあいまいなドキュメントや記事を経て、私は、 と はmanagedaddress
とotherstateful
の組み合わせでのみ関連し(つまり、Windows サーバーで RA を有効にする場合)、RA パケットのおよびフラグのadvertise
設定に役立つという結論に達しました。M
O
routerdescovery
が有効または無効になっている場合、netsh を介しておよびパラメータadvertise
を構成することはできませんが、RA がインターフェイスに到着するとすぐに、これらの 2 つのパラメータは、到着した RA パケットのおよびフラグを反映するように自動的に構成されます。managedaddress
otherstateful
M
O
どちらの設定が使用されているかに関係なく、DHCPv6 要請メッセージは、M
フラグが設定されていない RA パケットを受信する場合でも、常に IPv6 対応のインターフェイスに送信されます。Windows (Vista 以降を想定していますが、8.1 でテストしました) で DHCPv6 を無効にする方法は見つかりませんでした。ネットワーク上に DHCPv6 サーバーがある場合は、そこから IPv6 アドレスを取得します。
幸いなことに、ほとんどのネットワークでは、DHCPv6 サーバーと IPv6 アドレスをネゴシエートするステートフル自動構成ではなく、ステートレス自動構成 (各ノードは RA でアドバタイズされたプレフィックスに基づいて自身を構成する) が使用されています。ほとんどのネットワークはステートレスであるため、無効にするとrouterdiscovery
追加の IPv6 アドレスを取得できなくなると多くの人が考えていました。しかし、ネットワーク上に DHCPv6 サーバーがある場合は、これは当てはまりません。
答え2
これは古い質問だとは思いますが、役に立つかもしれないので追加したいと思います。システムのすべてのネットワーク インターフェイスで IPv6 の DHCPv6 とルーター検出を無効にするために使用するコマンドは次のとおりです。
Set-NetIPInterface `
-AddressFamily IPv6 `
-InterfaceIndex $(Get-NetIpInterface -AddressFamily IPv6 | Select-Object -ExpandProperty InterfaceIndex) `
-RouterDiscovery disabled `
-Dhcp Disabled
それに加えて、IPv6 よりも IPv4 を優先するようにシステムを設定しました。この変更を有効にするには再起動が必要です。
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