WindowsでDHCPv6クライアントを無効にする

WindowsでDHCPv6クライアントを無効にする

netsh int ipv6 set interfaceWindows のコマンド コンテキストで使用される IPv6 ステートフルおよびステートレス自動構成に関連する 4 つのパラメーター間のリンクがよくわかりません。

  • advertise
  • routerdescovery
  • managedaddress
  • otherstateful

これまでに調べた限りでは、次のことが分かります。

  • advertiseRA は、その特定のインターフェースに対しておよびとして設定されたMおよびOフラグを含む OS によって発行/応答される必要があることを示すために使用されます。これはサーバーに関連します。managedaddressotherstateful
  • routerdescoveryOS がそのインターフェースで RA を要求/処理し、RA が持つフラグに基づいて OS 自身を構成することを示すために使用されます。routerdescovery有効になっている場合は、managedaddressRAotherstatefulのフラグによって上書きされます。これはクライアントに関連します。

私の質問は、 とadvertiserouterdescovery無効になっていると何が起こるかということです。

managedaddressこの場合、とによって、そのインターフェイスで DHCPv6 クライアントが有効かどうかが決定されると考えられますotherstateful。ただし、そうではないようです。4 つのパラメータがすべて無効になっている場合 ( advertiserouterdescovery、 ) managedaddressotherstatefulWindows クライアントは引き続き DHCPv6 サーバーに接続しようとします。

答え1

多くの実験と多くのあいまいなドキュメントや記事を経て、私は、 と はmanagedaddressotherstatefulの組み合わせでのみ関連し(つまり、Windows サーバーで RA を有効にする場合)、RA パケットのおよびフラグのadvertise設定に役立つという結論に達しました。MO

routerdescoveryが有効または無効になっている場合、netsh を介しておよびパラメータadvertiseを構成することはできませんが、RA がインターフェイスに到着するとすぐに、これらの 2 つのパラメータは、到着した RA パケットのおよびフラグを反映するように自動的に構成されます。managedaddressotherstatefulMO

どちらの設定が使用されているかに関係なく、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

関連情報