locked
プライマリDNSとセカンダリDNS RRS feed

  • 質問

  • プライマリDNSとセカンダリDNSについて教えてください。
    1.プライマリに外部のDNSを設定する
    2.セカンダリに外部の名前解決のできないローカル用のDNSサーバーのアドレスを設定する
    3.nslookupで自動的に規定のサーバーであるプロバイダーのDNSに対して
    ローカルネットワーク上のPCのホスト名を入力し、名前解決できるか確認

    3.の結果は当然NGです。
    この状態で「ping [ローカルネットワーク上の]」とすると名前解決されるからか応答があります。
    これってどういう動作の上で名前解決されたのでしょうか。
    ただ単にプライマリDNSが解決できなかったので自動的にセカンダリに問い合わせてくれたのでしょうか。
    だとするとプライマリとセカンダリがそれぞれ名前解決できるゾーンが違う場合、
    プライマリを優先した上で自動的に名前解決可能なDNSサーバーで解決するように動作するのでしょうか。
    プライマリではなくセカンダリを利用するケースは
    1.プライマリDNSと通信できない場合
    2.プライマリDNSで名前解決できない場合
    この「2」の動作についてしっくりきません。
    「2」は正しいでしょうか。
    よろしくお願いします。

    2009年7月21日 14:34

回答

  • こんにちは、フォーラムオペレーターの三沢健二です。

     

    JR K Yoshikawa さん、回答ありがとうございます。

     

    DNS クライアントの名前解決(リゾルバ)の動作について、私の方で簡単に補足させていただきますね。

     

    ご投稿のケース12、それぞれについて説明してみますと、ケース1 の「プライマリ DNS サーバーと通信出来ない場合」は、タイムアウトを待って次の DNS サーバー(セカンダリ)に問い合わせを行いますので、お考えのとおり、セカンダリへ問い合わせする動作になります。

     

    一方ケース2 の「プライマリ DNS サーバーで名前解決ができない場合」についてですが、プライマリ DNS サーバーに目的のレコードがなかった場合は、その旨の返信が返ってきて、DNS クライアントの処理はそこで終了し、DNS 以外(NetBIOS)の名前解決に移行します。

    ただ、DNS サーバーから返されたエラーによっては、次の DNS サーバーに問い合わせを行う事もありますし、DNS サーバーからの返信が遅いとタイムアウトが発生したりもします。

     

    といった感じで、リゾルバの動作は結構複雑なのですが、今回のMasato0407 さんの疑問には以下の URL の情報が参考になりそうなので、ぜひ一読してみて下さい。

     

    - 参考資料

    優先DNSサーバと代替DNSサーバの動作について

    http://www.atmarkit.co.jp/fwin2k/win2ktips/241dnsservers/dnsservers.html

     

    社内用とインターネット用のDNSサーバーの使い分けがうまくいかない

    http://premium.nikkeibp.co.jp/win2000/special/trouble/index5.shtml

     

     

    ちなみに、なぜ DNS で名前解決出来ないはずなのに PING がうまくいったかについてですが、多分 NetBIOS で名前解決出来たからだと思います。

    NetBIOS の名前解決はブロードキャストで問い合わせを行うので、WINS サーバーがなくても対象の PC が同一セグメント内にいれば、NetBIOS の名前解決は成功します)

     

    Windows の名前解決の全体的な動作については、弊社サポート担当のブログが参考になると思いますので、ご紹介させていただきますね。

     

    Windows 名前解決の順序

    http://blogs.technet.com/jpntsblog/archive/2009/07/13/windows.aspx

     

     

    それでは、こちらの情報がお役に立てる事を願っています!

     

    ______________________________________

    マイクロソフト株式会社 フォーラム オペレーター 三沢健二

     

     

    • 回答としてマーク Masato0407 2009年8月10日 13:26
    2009年7月27日 4:27
  • こんにちは、阿部と申します。

    プライマリDNSとセカンダリDNSの違いは(優先DNSと代替DNSということですよね)
    優先DNSへの接続(クエリが失敗)ができないときに代替DNSを使用するということです。
    ですので通常は次のように設定します。

    クライアントは内部DNSを優先DNSに設定します。そして、内部DNSに対してフォワーダの設定を外部DNSに対して行う。このように設定すれば内部ユーザーでも外部IPの名前解決はできるようになります。

    さてご質問の件ですが
    代替DNSは優先DNSと通信できない場合に使用されますので「2」は間違いです。

    それでは、なぜローカルコンピュータは名前解決ができたのか?

    それはWindowsの名前解決には2種類あるからです。
    Winsockによる名前解決とNetbiosによる名前解決になります。
    Winsockによる名前解決は通常のTCP/IPアプリを使用する時に使用され、HOSTSとDNSが使用されます
    Netbiosによる名前解決はLmhosts、WINS、ブロードキャストが使用されます

    WindowsではWinsockによる名前解決が失敗するとついでにNetbiosによる名前解決も行ってくれます。

    よって、この場合はブロードキャストによって名前解決がされたと推測できます。

    ちなみにWinsockによる名前解決が行われるとキャッシュに保存されますが次のコマンドで確認できます
    ipconfig /displaydns

    Netbiosによる名前解決が行われると同様にキャッシュに保存されますが次のコマンドで確認できます
    nbtstat -c

    よって、どちらのキャッシュに保存されているのかを確認すれば、どのような名前解決が行われたかがわかるはずです。

    なお詳しい内容は私が執筆した赤本にも記載しております。
    MCP教科書 Windows Server 2008 Network編(試験番号:70-642)

    ちなみにプライマリDNSとセカンダリDNSの違いは、プライマリDNSは更新を受け付け、セカンダリDNSは更新を受け付けません。よって、セカンダリDNSは通常プライマリDNSをマスターとして設定し、ゾーン転送が行われます。これは冗長性を考慮するために同じ内容のDNSを複数もつ構成になります。
    • 回答としてマーク Masato0407 2009年8月10日 13:27
    2009年8月6日 9:10

すべての返信

  • どのような構成の Network でのお話でしょうか?

    Windows network の場合、下記の順番で名前解決が行われます。 
    1. NetBIOS 名前キャッシュ
    2. WINS サーバー
    3. B-Node ブロードキャスト
    4. LMHOSTS ファイル
    5. HOSTS ファイル
    6. DNS サーバー


    DNS と HOSTS ファイルを使用した NetBIOS 名の解決
    http://support.microsoft.com/kb/142309/ja

    NetBIOSでの通信と名前解決の仕組み 1
    http://www.monyo.com/technical/windows/msnet/msnet1.html

    NetBIOSでの通信と名前解決の仕組み(後編)
    http://www.monyo.com/technical/windows/msnet/msnet2.html

    Microsoft
    TCP/IP のホスト名解決の順序
    http://support.microsoft.com/kb/172218/ja

    2009年7月21日 16:12
  • どのような構成かと言いますと単純に複数台のPCで組んだLANで内部向けのドメインコントローラー+DNSサーバーが存在します。
    プライマリDNSに外部のDNSサーバーを指定し、セカンダリにAD兼DNSサーバーを指定した際に
    なぜか内部のホスト名に対してpingが通るのでどうやって内部のホスト名の名前解決を行っているのかという疑問に至りました。
    1. NetBIOS 名前キャッシュ
      →特に意識した設定は行っておりません 
    2. WINS サーバー
      →存在しません
    3. B-Node ブロードキャスト
      →特に意識した設定は行っておりません
    4. LMHOSTS ファイル
      →特に意識した設定は行っておりません
    5. HOSTS ファイル
      →特に意識した設定は行っておりません
    6. DNS サーバー
      →これで名前解決しているのだと思ったのですが1~5で解決しているのでしょうか
    2009年7月21日 18:19
  • こんにちは、フォーラムオペレーターの三沢健二です。

     

    JR K Yoshikawa さん、回答ありがとうございます。

     

    DNS クライアントの名前解決(リゾルバ)の動作について、私の方で簡単に補足させていただきますね。

     

    ご投稿のケース12、それぞれについて説明してみますと、ケース1 の「プライマリ DNS サーバーと通信出来ない場合」は、タイムアウトを待って次の DNS サーバー(セカンダリ)に問い合わせを行いますので、お考えのとおり、セカンダリへ問い合わせする動作になります。

     

    一方ケース2 の「プライマリ DNS サーバーで名前解決ができない場合」についてですが、プライマリ DNS サーバーに目的のレコードがなかった場合は、その旨の返信が返ってきて、DNS クライアントの処理はそこで終了し、DNS 以外(NetBIOS)の名前解決に移行します。

    ただ、DNS サーバーから返されたエラーによっては、次の DNS サーバーに問い合わせを行う事もありますし、DNS サーバーからの返信が遅いとタイムアウトが発生したりもします。

     

    といった感じで、リゾルバの動作は結構複雑なのですが、今回のMasato0407 さんの疑問には以下の URL の情報が参考になりそうなので、ぜひ一読してみて下さい。

     

    - 参考資料

    優先DNSサーバと代替DNSサーバの動作について

    http://www.atmarkit.co.jp/fwin2k/win2ktips/241dnsservers/dnsservers.html

     

    社内用とインターネット用のDNSサーバーの使い分けがうまくいかない

    http://premium.nikkeibp.co.jp/win2000/special/trouble/index5.shtml

     

     

    ちなみに、なぜ DNS で名前解決出来ないはずなのに PING がうまくいったかについてですが、多分 NetBIOS で名前解決出来たからだと思います。

    NetBIOS の名前解決はブロードキャストで問い合わせを行うので、WINS サーバーがなくても対象の PC が同一セグメント内にいれば、NetBIOS の名前解決は成功します)

     

    Windows の名前解決の全体的な動作については、弊社サポート担当のブログが参考になると思いますので、ご紹介させていただきますね。

     

    Windows 名前解決の順序

    http://blogs.technet.com/jpntsblog/archive/2009/07/13/windows.aspx

     

     

    それでは、こちらの情報がお役に立てる事を願っています!

     

    ______________________________________

    マイクロソフト株式会社 フォーラム オペレーター 三沢健二

     

     

    • 回答としてマーク Masato0407 2009年8月10日 13:26
    2009年7月27日 4:27
  • こんにちは、阿部と申します。

    プライマリDNSとセカンダリDNSの違いは(優先DNSと代替DNSということですよね)
    優先DNSへの接続(クエリが失敗)ができないときに代替DNSを使用するということです。
    ですので通常は次のように設定します。

    クライアントは内部DNSを優先DNSに設定します。そして、内部DNSに対してフォワーダの設定を外部DNSに対して行う。このように設定すれば内部ユーザーでも外部IPの名前解決はできるようになります。

    さてご質問の件ですが
    代替DNSは優先DNSと通信できない場合に使用されますので「2」は間違いです。

    それでは、なぜローカルコンピュータは名前解決ができたのか?

    それはWindowsの名前解決には2種類あるからです。
    Winsockによる名前解決とNetbiosによる名前解決になります。
    Winsockによる名前解決は通常のTCP/IPアプリを使用する時に使用され、HOSTSとDNSが使用されます
    Netbiosによる名前解決はLmhosts、WINS、ブロードキャストが使用されます

    WindowsではWinsockによる名前解決が失敗するとついでにNetbiosによる名前解決も行ってくれます。

    よって、この場合はブロードキャストによって名前解決がされたと推測できます。

    ちなみにWinsockによる名前解決が行われるとキャッシュに保存されますが次のコマンドで確認できます
    ipconfig /displaydns

    Netbiosによる名前解決が行われると同様にキャッシュに保存されますが次のコマンドで確認できます
    nbtstat -c

    よって、どちらのキャッシュに保存されているのかを確認すれば、どのような名前解決が行われたかがわかるはずです。

    なお詳しい内容は私が執筆した赤本にも記載しております。
    MCP教科書 Windows Server 2008 Network編(試験番号:70-642)

    ちなみにプライマリDNSとセカンダリDNSの違いは、プライマリDNSは更新を受け付け、セカンダリDNSは更新を受け付けません。よって、セカンダリDNSは通常プライマリDNSをマスターとして設定し、ゾーン転送が行われます。これは冗長性を考慮するために同じ内容のDNSを複数もつ構成になります。
    • 回答としてマーク Masato0407 2009年8月10日 13:27
    2009年8月6日 9:10
  • 三沢様
    ご返答ありがとうございました。
    案内頂いたリンクについて、すべて目を通してきたおかげで
    わからなかったことがすごくよくわかりました。
    ありがとうございました。

    阿部様
    ご返答が遅くなり申し訳ありません。
    自分自身NetBiosの名前解決についてさっぱりでしたのでよい勉強になりました。
    また、プライマリDNSとセカンダリDNSの冗長性について、
    こちらは初耳でしたのでびっくりしました。

    お二方、ありがとうございました。
    ずっと疑問に思っていたことが解決し、すっきりしました。
    2009年8月10日 13:30