背景
自宅のWindows 10環境で検証サーバの名前解決を試みたところ、IPv6アドレスが優先される結果、名前解決に失敗しました。
今回の検証サーバはIPv4のみ対応しているため、IPv6アドレスでの名前解決は無意味であり、アクセスができない状態でした。
以下は問題発生時のコマンド実行例です。
名前解決の挙動確認
nslookup(DNSサーバ未指定の場合)
nslookup 【ホスト名】
サーバー: UnKnown
Address: XXXX:XXXX:XXXX:X::X
*** UnKnown が 【ホスト名】 を見つけられません: Non-existent domain
nslookup(DNSサーバ指定ありの場合)
nslookup 【ホスト名】 【DNSサーバ】
サーバー: 【DNSサーバ】
Address: 【IPアドレス】
名前: 【ホスト名】
Address:【IPアドレス】
pingコマンドの結果
ping 【ホスト名】
ping 要求ではホスト【ホスト名】 が見つかりませんでした。ホスト名を確認してもう一度実行してください。
対処方法
最初に試した簡易的な方法として、Windows 10のIPv6を無効化することで問題を回避できました。しかし、IPv6を完全に無効化することはネットワーク環境全体への影響を懸念し、別の方法を検討しました。
解決策:IPv6のプロパティで特定の設定を追加
WindowsのIPv6プロパティで、DNSサーバを以下の形式で指定することで、pingコマンドでの疎通が確認できるようになりました。
ffff::<DNSサーバのIPv4アドレス>
設定後の挙動確認
nslookup(DNSサーバ未指定の場合)
nslookup 【ホスト名】
DNS request timed out.
timeout was 2 seconds.
サーバー: UnKnown
Address: XXXX::XXXX:XXXX
*** UnKnown への要求がタイムアウトしました
pingコマンド
ping 【ホスト名】
【ホスト名】 【IPアドレス】 に ping を送信しています 32 バイトのデータ:
【IPアドレス】 からの応答: バイト数 =32 時間 =3ms TTL=64
【IPアドレス】からの応答: バイト数 =32 時間 =3ms TTL=64
【IPアドレス】 からの応答: バイト数 =32 時間 =3ms TTL=64
【IPアドレス】からの応答: バイト数 =32 時間 =3ms TTL=64
【IPアドレス】の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)
ラウンド トリップの概算時間 (ミリ秒):
最小 = 3ms、最大 = 3ms、平均 = 3ms
重要なポイント
- nslookupは失敗するケースがあるが、pingやブラウザでの疎通確認は成功。
- この方法でHTTP(S)通信も問題なく動作することを確認。
今回の教訓
IPv6がデフォルトで優先される状況では、適切な設定変更が必要です。Windows環境では、完全にIPv6を無効化する以外にも調整可能な設定があるため、ネットワーク環境に応じて柔軟に対応することが重要です。
もし同様の問題に直面した場合、本記事の方法をぜひ試してみてください!

コメント