しかし、実は、併用ではあるのですが、IPv4よりもIPv6を処理する優先順位の方が高いようになっているんですね。
たとえば、
PING LOCALHOSTってすると、ループバックアドレスはIPv4の「127.0.0.1」ではなくて、IPv6で返されるのが分かります。
たとえば、仕事なんかで、過去のアプリケーションを最新のシステム上で実行しなければならない・・・というような時、そのアプリケーションの設計が、「取得されるIPアドレスは絶対にIPv4である」という前提でガチガチに固められていたりすると、結構きつい。
しかし、じゃあって言って、安易に(もはや標準になっている)IPv6を無効にしてしまうのも、何が起きるか分からずに怖い。
そこで対策としてIPv4の優先順位を、IPv6よりも先に変更して対策しよう、というのが今回の記事の主旨であります。
■優先順位の確認
優先順位の確認は、以下のコマンドで確認出来ます。
NETSH INTERFACE IPV6 SHOW PREFIXPOLICIES↓結果
優先順位 ラベル プレフィックス ---------- ----- ------------------------------- 50 0 ::1/128 40 1 ::/0 30 2 2002::/16 20 3 ::/96 10 4 ::ffff:0:0/96 5 5 2001::/32この「優先順位」10、「ラベル」4の、「プレフィックス」::ffff:0:0/96というがIPv4を示しているんですね。
これを最優先位置の優先順位50,ラベル0に移動させるようにすればOKというわけです。
■優先順位の変更コマンド 優先順位の変更には、かなり長いコマンドが必要なので、バッチファイルを作りました。
一回作っておけば、あとはONEDRIVEからでも実行出来るので便利かなぁと。
コマンドは以下の通りで、「IPV4.BAT」(何でも良い)という名前にでもすればOKです(もちろん、コマンドを一つ一つ入力してもOKです)。
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 SHOW PREFIXPOLICIES PAUSE IPv4の優先順位をIPv6よりも先になるよう変更しました。
■コマンドの実行
作ったバッチファイルはどこに(ONEDRIVEにでも)保存してOKなのですが、念のため、実行する時は「管理者として実行する」ってしないといけません。
すると、C:\Windows\System32で実行される形になりますね。
コマンド実行後に、再び
PING LOCALHOSTってすると、今度はループバックアドレスがIPv4で返されるようになりました。
IPv4の優先順位を上げる事で何か弊害があるかも知れない・・・という心配はありますが、IPv6を無効にしているわけではないし、いざとなれば、また優先順位を変えてあげれば良いだけ(だと思う)ので、このまま行ってみようかなと思います。
この設定を、8インチのWindows8.1タブレット「東芝dynabook tab VT484」でもやってみました。
IPv4を優先に変更したら、妙にネットの閲覧がサクサクし始めて、CPUのクロックでも上がったような感覚になっているんですが・・・気のせいではないと思う。