はじめに
nslookupコマンドでネットワーク調査をしていた際にドメイン引きに失敗するケースがあり、原因としてIPv6が優先されていることが挙げられていました。
その際に実践した、WindowsパソコンにてIPv6の通信のみを止める(IPv4は止めない)流れについて説明します。
環境情報
- Windows 10
IPv6のネットワーク通信を無効にする
現状確認
まずはIPv4/IPv6のどちらにおいても有効になっていることを確認します。
コマンドプロンプトにてipconfig
コマンドを押下すれば、インターネットに接続されている場合はIPアドレスが割り振られているかと思います。
Wireless LAN adapter Wi-Fi: 接続固有の DNS サフィックス . . . . .: ... IPv6 アドレス . . . . . . . . . . . .: 2408:XXX... 一時 IPv6 アドレス. . . . . . . . . .: 2408:XXX... リンクローカル IPv6 アドレス. . . . .: fe80::XXX... IPv4 アドレス . . . . . . . . . . . .: 192.168.10.101 サブネット マスク . . . . . . . . . .: 255.255.255.0 デフォルト ゲートウェイ . . . . . . .: fe80::XXX 192.168.10.1
確かにIPv6アドレスとIPv4アドレスが割り振られています。
ついでにIPv6が有効になっているインターフェースを確認するコマンドnetsh interface ipv6 show interface
では以下のように表示されます。
$ netsh interface ipv6 show interface Idx Met MTU 状態 名前 --- ---------- ---------- ------------ --------------------------- 1 75 4294967295 connected Loopback Interface 1 2 55 1500 connected Wi-Fi 3 5 1500 disconnected イーサネット 4 65 1500 disconnected Bluetooth ネットワーク接続 5 25 1500 disconnected ローカル エリア接続* 1
IPv6を無効にする
コントロールパネルから以下で該当のネットワークインターフェースを左クリックしてプロパティを開きます。
コントロール パネル\ネットワークとインターネット\ネットワーク接続
すると以下のようにTCP/IPv6にチェックが入っています。
こちらを外して「OK」を押下すれば無効になります。再度チェックをつければ有効になります。
ちなみにこれらの反映に再起動は不要です。
IPv6の無効を確認する
先ほど同様にコマンドでインターフェースを確認すると
Wireless LAN adapter Wi-Fi: 接続固有の DNS サフィックス . . . . .: ... IPv4 アドレス . . . . . . . . . . . .: 192.168.10.101 サブネット マスク . . . . . . . . . .: 255.255.255.0 デフォルト ゲートウェイ . . . . . . .: 192..168.10.1
IPv6に関する項目は表示されません。
$ netsh interface ipv6 show interface Idx Met MTU 状態 名前 --- ---------- ---------- ------------ --------------------------- 1 75 4294967295 connected Loopback Interface 1 3 5 1500 disconnected イーサネット 4 65 1500 disconnected Bluetooth ネットワーク接続 5 25 1500 disconnected ローカル エリア接続* 1
(おまけ)nslookupログ
ちなみにnslookupの失敗時のログは以下です。
------------ SendRequest(), len 29 HEADER: opcode = QUERY, id = 5, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: yahoo.co.jp, type = AAAA, class = IN ------------ Got answer (29 bytes): HEADER: opcode = QUERY, id = 5, rcode = REFUSED header flags: response, want recursion, recursion avail. questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: yahoo.co.jp, type = AAAA, class = IN ------------ *** XXX が yahoo.co.jp を見つけられません: Query refused
IPv6を無効にすると確かに解決できました。
> yahoo.co.jp サーバー: XXX Address: 192.168.10.1 権限のない回答: 名前: yahoo.co.jp Addresses: 182.22.59.XXX 183.79.135.XXX
終わりに
通信においてIPv4に対してIPv6が優先される場合に起こるエラーがあるようなので、このようにIPv6を明示的に無効にする手順は知っておいて損はないと思います。
以上、ご参考になれば幸いです。