IPv6の優先度の変更

Linux, server, Windows, Windows, ブログ

なかなか普及しないIPv6ですが、気付かずに使っている方も多いかと思います。

訪問先でIPv6や、IPv6 over IPv4等でおかしな挙動が出たりして困ること2014年から10回ほど。

どうにもならない時は、今の所IPv6で困っても、IPv4で困ることはないので、IPv4を優先して使うよう設定しましょう。

WEBで検索ると、よくIPv6自体を無効にしてしまうような解説がありますが、IPv6でしか提供していないサイトやサービスなどが出てきた場合、また問題になってしまいますので、優先度を変更するほうが良いと思います。

そもそもこれは、お使いのインターネット回線がIPv6に対応していなければ関係のない話です。

Windowsで現在のポリシーを確認

現在のIPv6の設定を確認するコマンド

出力されたデフォルト設定

詳しくは後で書きますが、ここで必要なのは、

プレフィックスが ::ffff:0:0/96 というのがIPv6表記で書くIPv4のアドレスで、 ::1/0 がIPv6のアドレスで、 ::1/128 がIPv6のlocalhostのループバックです。

IPv6のアドレスの優先度が 40 でIPv4の優先度が 35 なので、IPv6が使える場合は優先してIPv6で通信するようになっています。

試しにコマンドプロンプトで、localhostへpingを打ってみましょう。

::1 からの応答となっていますのでIPv6で通信しています。

127.0.0.1からの応答だった場合はIPv4で通信しています。

IPv4の優先度を上げる

優先度を40以上にしてあげればいいのですが、ループバックはIPv6で、他はIPv4なんてすると気持ち悪いし、何か問題あるといけないので、 60 に設定して一番優先度を高くしてみます。

再度確認してみましょう

60になっていますね。

一応pingでも確認してみましょう。

127.0.0.1で通信していますね。これでIPv4の優先は完了です。

IPv4優先を元に戻す場合

おわかりかと思いますが、優先度を元に戻してあげればOKです。

netsh interface ipv6 show prefixpolicies 確認してみましょう。




Linuxの場合

Linuxの場合は /etc/gai.conf に設定ファイルがあります。

glibcで書いたプログラム内でgetaddrinfoを使っていると、この設定が読まれます。

(詳しくは man getaddrinfo で)

デフォルト状態だと全てコメントされていると思います。

説明は書いてあるとおりなのですが、

これをコメントを外して

の様にすればOKです。

pingも

となりなります。

OS Xでは未確認。

IPv6アドレスの説明

念の為出てきたIPv6アドレス表記の説明です。