Windows7のDNS resolverの挙動について

前置き

そんなこんなでWindows7 64bitでいろいろとDNS resolver関係の挙動について調査中。まず、基本的な項目として、Windows7DNS resolverは

  • すべての物理的なネットワークIFにIPv4しか振られていないときは、AAAAレコードの問い合わせを抑制する
    • トンネルIFについては未検証
    • そもそもトンネルIFはインストール完了後に全部オフにするのがよいかと

といった挙動をとるため、WindowsXPの時のように、「AAAAタイムアウト > A再問合わせ」といったことがなくなっています。このような仕様の変更はVISTAから行われています。

検証

そこで、以下のような条件の時にAAAAを問い合わせるかをいろいろと探ってみました。また、条調査を行う時に使った環境は以下の通りです。

検証PC

  • Windows7 64bit Enterprise
  • ネットワークInterface2個
    • それぞれeth1、eth2とする
    • eth2はPacketixVPN仮想LANカード

ネットワーク要件

  • IPv4
    • DHCPDNSサーバのアドレスを告知
  • IPv6
    • RA(oFlag = 1)、ステートレスDHCPv6にてDNSサーバのアドレスを告知

検証項目

  1. eth1にIPv4+IPv6を同時に設定する(Dualstack)
    • DNSサーバ
    • IPv6がネットワークに対してDeployされている場合
  2. eth1にIPv4、eth2にIPv4+IPv6 を同時に設定する(Dualstack)
    • DNSサーバ
    • eth1のネットワークを使ってDualstackなネットワークにVPN接続
  3. eth1にIPv4、eth2にIPv6を設定する
    • DNSサーバ
    • eth1のネットワークを使ってIPv6のみのネットワークにVPN接続

検証結果

適当なPCでいろいろと試してみましたがまずは結果から。

検証項目 AAAAを問い合わせるか どのDNSサーバに優先的に問い合わせるか
1 eth1 IPv4
2 eth2 IPv4
3 eth1 IPv4 or eth2 IPv6

今回、項目3の検証において、eth1のIPv4DNSサーバに問い合わせる場合と、eth2のIPv6DNSサーバに問い合わせる場合の2パターンが、eth1を接続するネットワーク構成を変えた時に観測されました。これについては今後の追加調査項目ということにでもしておきます。