Windowsは、名前を解決するときに使用するDNSサーバーをどのように決定しますか?


41

Windowsは、名前を解決するために照会するDNSサーバーを決定するためにどのアルゴリズムを使用しますか?

いくつかのインターフェイスがあり、すべてがアクティブで、一部はDNSサーバーが指定されておらず、一部は自動的に決定するように指示され、一部は手動で指定されています(インターフェイスipv4およびインターフェイスipv6)。

Windows Vistaのより具体的な問題を解決する方法を知っていることを期待して、この一般的な質問への回答を求めています。2つのインターフェイスがあります。1つは低いメトリックで、DNSサーバーは手動で指定します。nslookupはこの DNSサーバーを使用し、名前を正しく解決します。ただし、他のインターフェイスのDNSサーバーを手動で指定しない限り、他のすべてのアプリケーションは名前の解決に失敗します。DNSサーバーはアプリケーションで使用されます。nslookupは、この他のインターフェイスが指定されると、指定されたDNSサーバーも使用します。

ありがとう

回答:


27

間違っていない場合は、ネットワーク接続フォルダーの[詳細設定]のNICバインド順序によって決定されます。さまざまなNICのバインド順序を変更し、nslookupをテストとして実行することで確認できます。

Evanがリンクた記事を引用して、私の答えを拡大するために、この記事からの抜粋を以下に示します。

DNSクライアントサービスは、次の順序でDNSサーバーを照会します。

  1. DNSクライアントサービスは、優先アダプターのDNSサーバーのリストにある最初のDNSサーバーに名前クエリを送信し、応答を1秒待ちます。

  2. DNSクライアントサービスが1秒以内に最初のDNSサーバーから応答を受信しない場合、まだ考慮中のすべてのアダプター上の最初のDNSサーバーに名前クエリを送信し、応答を2秒待機します。

  3. DNSクライアントサービスが2秒以内にDNSサーバーから応答を受信しない場合、DNSクライアントサービスはまだ検討中のすべてのアダプター上のすべてのDNSサーバーにクエリを送信し、応答をさらに2秒待ちます。

  4. DNSクライアントサービスがまだDNSサーバーから応答を受信しない場合、まだ考慮中のすべてのアダプター上のすべてのDNSサーバーに名前クエリを送信し、応答を4秒間待機します。

  5. DNSクライアントサービスがどのDNSサーバーからの応答も受信しない場合、DNSクライアントはまだ検討中のすべてのアダプター上のすべてのDNSサーバーにクエリを送信し、応答を8秒待機します。

ステップ1の優先アダプターは、バインド順で最初にリストされているアダプターです。


4
このプロセスはWindows 10で変更されましたが、上記がWindows 10に適用されないことを知っている新しいプロセスは知りませんが、このブログを参照してください -blogs.technet.microsoft.com/networking/2015/08/14/…
ロバート

14

Windows 10(およびWindows Server 2016)では、各インターフェイスのメトリックを必要な順序で更新する必要があります。

  1. [コントロールパネル]> [ネットワークとインターネット]> [ネットワーク接続]に移動します。
  2. 目的の接続(優先度の高い接続)を右クリックします
  3. [プロパティ]> [インターネットプロトコルバージョン4]をクリックします
  4. [プロパティ]> [詳細]をクリックします
  5. 「自動メトリック」のチェックを外します
  6. 「インターフェースメトリック」に10を入力します
  7. OKをクリック

参照:

LANに10、WLANに20、VPNインターフェースに100を使用しました(職場ではローカルDNSが好まれますが、他の場合は逆の場合もあります)。低いメトリック=高い優先順位を覚えておいてください。

IPv4ルートの自動メトリック機能の説明については、 Microsoftサポートのこの記事を参照してください。


+1 Windows 10の場合、これが唯一の解決策でした、ありがとう。
-GµårÐïåñ

メトリックの変更は、ルートの選択にのみ影響します。どのDNSサーバーが使用されるかには影響しません。
Jruv

14の賛成票と個人的な経験は同意しません、そうすべきはないことに同意しますが、マイクロソフトの開発者はこのようにコーディングしたようです。
ジェイコブエヴァンス

8

このページでは、WindowsがDNSクエリを実行するために使用するアルゴリズムについて説明します。探しているすべての答えを提供するのに十分な深さではありませんが、特定の状況で何が起こっているのかを判断するために必要なのは、スニファーとこの記事だけです。


3

私はまったく同じ問題を抱えていました。私はそれを理解しようとして一日を費やしました。今私は知っているし、それは魅力のように動作します。

複数のネットワークカードがあり、それぞれにDNSサーバーを指定する場合。最後に使用されるDNSサーバーを知っていますか?

さて、練習で確認できます。

nslookup 192.168.3.6

PCが実際に使用しているサーバーが表示されます

問題は-どのDNSサーバーウィンドウが使用することを選択し、どのように変更できるかによって異なります。

VPNクライアントを使用する場合は特に必要です。

qwerty2010からの答えは正しいです。ただし、コントロールパネルにNICがある場合にのみ使用できます-ネットワークと共有センター-アダプター設定の変更-NICのリスト

VPNクライアントに責任があるnicが表示されている場合のみ、グラフィカルな方法を使用して、使用するDNSサーバー(特定のnicで指定されている)をウィンドウにポイントできます。

ネットワークと共有センターに移動->アダプター設定を変更->詳細設定->詳細設定->使用したいDNSでnicを上に移動します。(上に持ち上げる必要があります)。

ただし、たとえばShrew vpnクライアントを使用している場合は、nicはありません。

職業はなんですか。

レジストリを開きます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

そして、サブフォルダー0000、0001などを見て、フォルダーを

DriverDesc = Shrew Soft Virtual Adapter

いいよ 次に、クリップボードにコピーします

NetCfgInstanceId = {B498E7DE-7257-48F6-AD32-60E470030F05}

さあ行く

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage]

あなたが開きkey = Bindます。このようなリストが表示されます

\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

あなたがしなければならないのは、一番上に置くことです

\Device\{B498E7DE-7257-48F6-AD32-60E470030F05}
\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

それで全部です。再起動する必要はありません。

これで、vpn接続を使用するときに、Windowsはshrew vpn nicで指定されたDNSを使用します。


0

これはあなたや他の人に役立つかもしれないので、リストされたDNSのWindowsラウンドロビン使用を無効にして、DNS使用をより予測可能にすることができます。設定してみてくださいRoundRobin=0HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters参照のDNSラウンド衣を無効にします)。

サーバーをローテーションするための「タイムアウト」もありますゼロに設定することもできます

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0

言及された「参照」(リンク)によれば、これは、クエリからクエリへのローテーション順でクエリされたFQDNに複数のIPアドレスを提供するDNSサーバーの構成に適用されます。これは、DNSリゾルバー(クライアント)が照会するDNSサーバーを選択する方法に関する質問とは関係ありません。
トーマスアーバン

-13

ランダムに決定するわけではありません。DNSサーバーを持つ会社からIPを取得するルーターに接続しています。IPを別のDNS(たとえばOpenDns)に手動で変更しない限り、リクエストを受け取ります。または、独自のDNSサーバーを使用することに決めるかもしれません。それも機能します。ネットワークセンターでIPアドレスを入力するだけで、すべて正常に動作するはずです。はい、それらを手動で設定する必要があります。

C:\Windows\System32拡張子なしで「ホスト」と呼ばれるファイルを調整することもできます。これにより、標準のDNSに送信される代わりに、URLリクエストをリダイレクトすることができます。ローカルサーバーへ(ポート80を実行してリッスンしている必要があります)


18
あなたはここで言ってきた基本的にはすべてが間違っている
MDMarra

3
また、hostsファイルである酷い憎悪に言及するための追加-1。
マキシマスミニマス

有益なMarkMになる方法
KdgDev

4
@WebDevHobo-コメントで修正するのは本当に多すぎるが、大きなポイントに触れる。1)OPには、複数のインターフェース(おそらくは別個のNIC)を持つコンピューターがあり、それぞれに異なるDNSが定義されています。質問の文脈では、彼は明らかにいくつかの内部DNSサーバーを実行しているか、いくつかの優先外部DNSサーバーを持っています-ボックスはおそらくマルチホームです。2)内部DNSサーバーのアドレスプールのDHCPサーバーの構成でDHCPを使用している場合、内部DNSサーバーのアドレスを手動で設定する必要はありません。3)ホストファイルへのパスはc:\ windows \ system32 \ drivers \ etc
MDMarra 09年

3
HOSTSファイルは、この状況では使用しないでください。ローカル開発を行っていて、HOSTヘッダーなどを使用していて、ローカルで解決するためにFQDNが必要な場合を除き、実質的に使用しないでください。また、名前解決にHOSTSファイルを使用する場合でもDNSサーバーを使用する場合でも、サーバーでポート80を実行する必要はありません。URLの末尾に:port_numberを追加するだけです。HOSTSは、DNSが気にするように、ポートを気にしません。これは、ホスト名をIPアドレスに変換する方法であり、それ以上のことはしません。
MDマーラ2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.