そのため、WindowsマシンがホストのIPv4アドレスとIPv6アドレスの両方を持つネットワークにアクセスすると、通常は最初にIPv6経由で接続を試みます。これは、DNSまたはmDNS(マルチキャストDNS)がAAAA(IPv6)レコードとA(IPv4)レコードの両方を検出した場合、Windowsのデフォルト設定ではIPv6を優先するからです。問題は、一部の古いアプリや特定のネットワークサービスがIPv6をサポートしていないことです。Windowsが接続にIPv6を要求すると、それらのアプリやサービスはハングアップしたり、接続に失敗したりします。そのため、場合によってはWindowsにIPv4を最初に試すように指示する必要があります。
一部のローカルネットワーク、特に専用のDNSサーバーを持たないシンプルなワークグループでは、Windowsはホスト名の解決にmDNSを使用したブロードキャストクエリに依存しています。 を実行すると、ネットワーク内の特定のコンピューターに対してWindowsが取得しているDNSレコードを確認できますResolve-DnsName DESKTOP-ABCD1234。興味深いのは、AAAA(IPv6)レコードとA(IPv4)レコードの両方が表示されることが多いことです。ホスト名をpingすると、Windowsは最初にIPv6アドレスを試行することがあります。ネットワークまたはアプリがIPv6に対応していない場合は、問題が発生する可能性があります。
Windows が使用するアドレスをどのように決定するかを確認するには、次のコマンドで現在のプレフィックス ポリシーを確認します。
netsh interface ipv6 show prefixpolicies
または、PowerShell を好む場合は、次のようにします。
Get-NetPrefixPolicy
この表は、アドレスの種類とその優先順位を示しています。優先順位が高いほど、Windows が接続にそのアドレスを選択する可能性が高くなります。一般的なエントリは次のとおりです。
::1/128— ローカルループバック(最高優先度)::/0— デフォルトのIPv6アドレス::ffff:0:0/96— IPv4マップされたIPv6アドレス::/96— IPv6におけるIPv4アドレスプレフィックス
Windows が IPv6 を優先しているが、アプリやデバイスが IPv4 を優先していることが分かっている場合は、次のように調整できます。
netsh interface ipv6 set prefix ::/96 60 3そして
netsh interface ipv6 set prefix ::ffff:0:0/96 55 4
これらのコマンドはIPv6の優先度を下げるため、Windowsはホスト名の解決時にIPv4アドレスを優先します。動作は非常にスムーズです。再起動は不要で、pingを再度実行してIPv4アドレスが表示されるかどうかを確認してください。
変更を確認するには、Get-NetPrefixPolicynetsh interface ipv6 show prefixpoliciesを実行してプレフィックスポリシーを再度確認してください。問題が発生したり、元に戻したい場合は、次のコマンドでポリシーをデフォルトにリセットしてください。
netsh interface ipv6 reset
レジストリレベルで設定を微調整したい場合や、より永続的な設定が必要な場合は、HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\ParametersにDisabledComponentsというDWORD値を追加できます。この値を に設定すると、WindowsはIPv6の優先順位を下げるようになります。以下のコマンドを実行してください。0x20
reg add HKLM\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0x20
設定を元に戻す場合は、次のように値を戻します0x0。
reg add HKLM\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0x0