旅するえんじにあ - Engineers to Travel -

旅するエンジニアの気まま備忘録

【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がいつ始まるのかと数年前からそわそわしてますが、こういうところにも弊害が出てくるんですね。

一応覚書として。