Windows Vista/7/Server 2008でIPv4接続をIPv6より優先する

IPv4とIPv6のデュアルスタックであるWindows Vistaや7, Server 2008ではIPv6での接続を優先するよう設定されているため、環境によってはIPv6接続のタイムアウトを待ってIPv4で接続し直すことからネットワークに大幅な遅延が生じたり接続出来なかったりする「IPv6-IPv4フォールバック」問題が存在することはよく知られていることかと思います。

同現象への対処としてこれまではネットワークのプロパティより「インターネット プロトコル バージョン 6(TCP/IPv6)」を無効にするのが一般的でしたが、マイクロソフトが「IPv6を無効にした環境での動作を保障できない」と言っていることもあり最近ではIPv6を活かしたまま「netsh inteface ipv6」コマンドを使って優先順位を入れ替える方法が推奨されているようです。

netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0
netsh interface ipv6 set prefixpolicy ::1/128 40 1
netsh interface ipv6 set prefixpolicy ::/0 30 2
netsh interface ipv6 set prefixpolicy 2002::/16 20 3
netsh interface ipv6 set prefixpolicy ::/96 10 4
netsh interface ipv6 set prefixpolicy 2001::/32 5 5

なお、以下のコマンド実行後に端末を再起動すればデフォルト状態に戻ります。

netsh interface ipv6 reset

ちなみにWindows 8やWindows Server 2012ではデフォルトでIPv4の方が優先順位が高くなっているようなので同事象は発生しないはずです。

    この記事へのコメント

    メールアドレスが公開されることはありません。

    頂戴したコメントは管理者に承認されるまで表示されません。