【Windows】 IPv6よりもIPv4を優先させる設定
自宅からノートPCは全てMacなんですが、今開発端末でWindowsを使っています。 そこでたまに困る事があるんです。
指定されたGitlabへ接続するのにVPNに接続してcloneしようとしても名前解決ができない。
鍵登録してるし、VPN繋いでるし何が悪いんだと思ってローカルに作ったVirtualboxからではなく Windowsのコマンドプロンプトを使ってpingを打ってみると、見事にIPv6で表示されている。
今使っているWindows7ではどうやらIPv4よりもIPv6が優先されてしまっているようです。
前まではIPv6を無効にするみたいなことをしていたのですが、時期が時期ですし、Microsoftも非推奨。 さらにいつの間にかIPv4が枯渇してしまい、サービスがIPv6に変わっていたなんて事も考えると無効にするのはナンセンスなので 優先順位を変える対応をしたいと思います。
Windowsでコマンドプロンプトを管理者として実行し以下のコマンドを実行
netsh interface ipv6 show prefixpolicies
すると
C:\Windows\system32>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
こんな感じで表示されました。
40 1 ::/0
上記がIPv6です。
10 4 ::ffff:0:0/96
そしてこれがIPv4
この順番を変更してあげます。
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
上記コマンドを一つずつ叩いていくと一回毎に「OK」という表示が出てきます。
全て打ち終えたら再度確認します。
C:\Windows\system32>netsh interface ipv6 show prefixpolicies アクティブ状態を照会しています... 優先順位 ラベル プレフィックス ---------- ----- -------------------------------- 50 0 ::ffff:0:0/96 40 1 ::1/128 30 2 ::/0 20 3 2002::/16 10 4 ::/96 5 5 2001::/32
このような形でIPv4を優先にしてあげればIPv4が優先となり、pingを打つとIPv4で名前解決されると思います。
IPv6がいつ始まるのかと数年前からそわそわしてますが、こういうところにも弊害が出てくるんですね。
一応覚書として。