Windows7(以降)において、TCP-IPのIPV6プロトコルが標準で有効になった。
IPアドレス枯渇問題などがあるため、これはこれでいいのであるが、困ったことに特定のサイトへのアクセスが非常に遅くなったり、タイムアウトしてしまう現象が起こるようになった。
特定のサイトも収容サーバーを変えたりするのでその時々でアクセスに問題が出なくなったり、違うサイトがアクセスできなくなったりという現象が起きたりする。

スポンサーリンク

原因と探るうちにNTTのフレッツ光網のIPV6が問題だということが判明した。
どうやらフレッツ網のIPV6が閉じている設計のため、IPV6を優先的に検索すると該当サーバーまでたどり着けなかったりしてタイムアウトするようだ。
(今回はこれ以上詳しく調べない)

解決策としてはIPV6よりもIPV4を優先させて検索させることにした。IPV6サービスを使用しないという手段もあるのだけれど、フレッツ網にも接続するため今回はこの方法で行くことにした。

というわけでWindows用のバッチファイルを書いたのが以下

@echo off
REM 注)このコマンドは管理者モードでのみ実行できます。

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 show prefixpolicies

ECHO "ping localhostで127.0.0.1からの応答になることを確認してください"

ping localhost

pause

これをコピペして、適当に”ipv6.bat”のような名前で保存して、エクスプローラーから右クリック→管理者モードで実行をすると一気に変更されます。
なお、ネットワーク構成がPCにより異なる場合がありますので、そのときは注意してください。
ダウンロード用のファイルも準備しました。
こちら

なお、設定を元に戻すときは、

netsh interface ipv6 reset

の1文をコマンドプロンプト(管理者モード)から実行して再起動すると元に戻ります。