【Windows】IPv6を無効化せずにIPv4を優先にする

Microsoft Windows

IPv6 が有効になっている環境だとミドルウェアのレイヤーだと不具合があったりするので、IPv6 の無効化は今だに行われていたりしますが、IPv6 を無効化にする方法は公式には推奨されていないということで調べてみました。

スポンサーリンク

IPv6 を有効にしたまま IPv4 を優先にする

IPv6 を無効にせずに対処する方法としては、通信に IPv4 を優先的に利用するという設定がありました。その設定を自動でやってくれる Fix it という Microsoft から公開されている修正ツールがあったようなのですが、ダウンロードページが消えてしまっていたので、手動で行う方法を調べてみました。

IPv4 の優先度を変更するには「netsh interface ipv6 show prefixpolicies」コマンドで IPv4 に該当するプレフィックスを IPv6 より優先度を上げるという方法です。

以下で説明していきます。

インターフェイスの優先順位の確認

「netsh interface ipv6 show prefixpolicies」コマンドにて、現在のインターフェイスの優先順位の確認ができます。

コマンド例

netsh interface ipv6 show prefixpolicies

コマンド実行例

PS C:\Users\Administrator> netsh interface ipv6 show prefixpolicies
アクティブ状態を照会しています...
優先順位  ラベル プレフィックス
---------- ----- --------------------------------
       50     0 ::1/128
       40     1 ::/0
       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

PS C:\Users\Administrator>

プレフィックスの “::ffff:0:0/96” が IPv4 に該当します。

※環境によって優先順位の数値とラベルは異なるかもしれません。

インターフェイスの優先順位の変更

IPv4 のプレフィックスの順位のみの設定変更を行うと、IPv4 の設定のみが反映されますので他のインターフェイスの設定が消えてしまいます設定直後に確認すると「::ffff:0:0/96」が優先になっているように見えますが、再起動すると他のプレフィックスのものは消えてしまいますので注意してください。

そのため、「::ffff:0:0/96」のみを設定変更したい場合でも、すべてのインターフェイスに対して設定を行う必要があります。

その場合は、以下のようなコマンドとなります。

コマンド例

netsh interface ipv6 set prefixpolicy ::1/128 50 0
netsh interface ipv6 set prefixpolicy ::/0 40 1
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4
netsh interface ipv6 set prefixpolicy 2002::/16 30 2
netsh interface ipv6 set prefixpolicy 2001::/32 5 5
netsh interface ipv6 set prefixpolicy fc00::/7 3 13
netsh interface ipv6 set prefixpolicy fec0::/10 1 11
netsh interface ipv6 set prefixpolicy 3ffe::/16 1 12
netsh interface ipv6 set prefixpolicy ::/96 1 3

コマンド実行例

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::1/128 50 0
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::/0 40 1
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 100 4
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy 2002::/16 30 2
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy 2001::/32 5 5
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy fc00::/7 3 13
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy fec0::/10 1 11
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy 3ffe::/16 1 12
OK

PS C:\Users\Administrator> netsh interface ipv6 set prefixpolicy ::/96 1 3
OK

PS C:\Users\Administrator>

設定が完了したら一度再起動を行います。

再起動後、優先順位の確認を行います。

コマンド実行例

PS C:\Users\Administrator> netsh interface ipv6 show prefixpolicies

アクティブ状態を照会しています...
優先順位  ラベル プレフィックス
---------- ----- --------------------------------
      100     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    12 3ffe::/16
         1     3 ::/96
        1    11 fec0::/10

PS C:\Users\Administrator>

プレフィックスの “::ffff:0:0/96” の優先度の変更が反映されています。

これで IPv4 優先設定は完了となります。

インターフェイスの優先順位をリセットする

優先設定の変更後になにか不具合があった場合や元の設定に戻す場合は、「netsh interface ipv6 reset」コマンド1行でリセットすることができます。

コマンド例

netsh interface ipv6 reset

コマンド実行例

PS C:\Users\Administrator> netsh interface ipv6 reset
コンパートメントの転送 のリセットに成功しました。
コンパートメント のリセットに成功しました。
制御プロトコル のリセットに成功しました。
エコー シーケンス要求 のリセットに成功しました。
グローバル のリセットに成功しました。
インターフェイス のリセットに成功しました。
エニーキャスト アドレス のリセットに成功しました。
マルチキャスト アドレス のリセットに成功しました。
ユニキャスト アドレス のリセットに成功しました。
近隣 のリセットに成功しました。
パス のリセットに成功しました。
可能性 のリセットに成功しました。
プレフィックス ポリシー のリセットに成功しました。
プロキシの近隣 のリセットに成功しました。
ルート のリセットに成功しました。
サイト プレフィックス のリセットに成功しました。
サブインターフェイス のリセットに成功しました。
スリープ解除のパターン のリセットに成功しました。
近隣の解決 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに失敗しました。
アクセスが拒否されました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
 のリセットに成功しました。
コンピューターを再起動してこの操作を完了してください。

PS C:\Users\Administrator> 

実行後は設定反映のために再起動を行います。

再起動後は、「netsh interface ipv6 show prefixpolicies」コマンドでリセットが反映されているか確認を行うようにしてください。

IPv6を無効化する(参考)

IPv4 を優先ではなく IPv6 を無効にする方法については別の記事でまとめたものがありますので、ご参考にしていただければと思います。

タイトルとURLをコピーしました