はじめに
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 refusedIPv6を無効にすると確かに解決できました。
> yahoo.co.jp
サーバー: XXX
Address: 192.168.10.1
権限のない回答:
名前: yahoo.co.jp
Addresses: 182.22.59.XXX
183.79.135.XXX
終わりに
通信においてIPv4に対してIPv6が優先される場合に起こるエラーがあるようなので、このようにIPv6を明示的に無効にする手順は知っておいて損はないと思います。
以上、ご参考になれば幸いです。