WindowsでIPv4とIPv6の優先度を変更する方法

WindowsでIPv4とIPv6の優先度を変更する方法

Windows 10や11では、デフォルトでIPv4よりIPv6が優先して使用されるようになっていますが、まだまだIPv4が大勢を占めている状況では、今しばらくはIPv4を優先して使用するよう設定するのが無用なトラブルを避ける意味でも有効です。

ただし、IPv6もこれから徐々に普及していくことを考えると、IPv6を無効化してしまうのではなく、優先度をIPv4より低くしておくのがベターと言えます。

そこでここではWindows 10を例に、IPv6よりIPv4を優先して使うよう設定する方法を紹介します。

現在の状態を確認

まず、管理者権限でコマンドプロンプトを開き、以下のコマンドを実行し現在の優先順位を確認します。

> netsh interface ipv6 show prefixpolicies

アクティブ状態を照会しています...

優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        50      0  ::1/128      ←IPv6ループバックアドレス
        40      1  ::/0         ←IPv6デフォルトルート
        35      4  ::ffff:0:0/96
        30      2  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      3  ::/96

優先順位「35」のプレフィックス「::ffff:0:0/96」がIPv4通信に相当しますが、上の結果をみてみると「::ffff:0:0/96」の上に「::1/128」「::/0」があり、これらがIPv6通信で、優先順位がIPv4より高いことがわかります。

試しに自分自身にPingを打ってみると、以下のように自分自身のアドレスが「::1」となっていることからIPv6で通信していることがわかります。

> ping localhost

PC-001 [::1]に ping を送信しています 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 =1ms
::1 からの応答: 時間 <1ms

::1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms

IPv4の優先順位を上げる

IPv6よりIPv4を優先して使用するには、管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行して、プレフィックス「::ffff:0:0/96」の優先順位を一番高くします。

以下のコマンドでは、プレフィックス「::ffff:0:0/96」の優先順位を「60」に設定することで、優先順位を一番上にしています。

> netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 60 4
OK
> netsh interface ipv6 show prefixpolicies
アクティブ状態を照会しています...

優先順位   ラベル  プレフィックス
----------  -----  --------------------------------
        60      4  ::ffff:0:0/96  ←一番上になりました
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      3  ::/96

動作確認

設定を変更したら、もう一度自分自身にPingを打ってみてください。自身のIPアドレスが「127.0.0.1」と表示されていれば、IPv4で通信しています。

> ping localhost

PC-001 [127.0.0.1]に ping を送信しています 32 バイトのデータ:
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128

127.0.0.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

これで変更完了です。

設定を元に戻すには

設定をデフォルトの状態に戻したいときは、管理者権限でコマンドプロンプト起動し、以下のコマンドを実行してから、Windowsを再起動すれば既定の設定に戻ります。

> netsh interface ipv6 reset