web-dev-qa-db-ja.com

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

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

複数のインターフェースがあり、すべてがアクティブで、DNSサーバーが指定されていないインターフェース、自動的に決定するように指示されているインターフェース、手動で指定されているインターフェース(インターフェースipv4およびインターフェースipv6)があるとします。

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

ありがとう

46
Artefacto

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

Evanがリンクした記事 を引用して私の答えをさらに詳しく説明すると、これはその記事からの抜粋です。

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

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

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

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

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

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

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

30
joeqwerty

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

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

参照:

私はLANに10、WLANに20、VPNインターフェイスに100を使用しました(私は仕事でローカルDNSを好む、これは他の人にとっては逆かもしれません)。 メトリックが低い=優先度が高い を覚えておいてください。

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

ルート選択の一部は、すべての接続に同じIPアドレスを使用していないため、メトリックの優先順位が最も高い(数値が最も小さい)インターフェースのソースIPを設定することですが、デュアルホームのBGP接続では、同じソースIPを使用しますが、宛先IPを保留している別のネクストホップゲートウェイを選択します。

サーバーの場合、DNSサービスをインストールし、目的に合った、またはインテリジェントな何かを行います。サーバーOSでこれを行うことに同意しません。

17
Jacob Evans

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

8
Evan Anderson

私はまったく同じ問題を抱えていました。私はそれを理解しようとする一日を過ごしました。今私は知っており、それは魅力のように機能します。

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

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

nslookup 192.168.3.6

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

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

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

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

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

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

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

職業はなんですか。

レジストリを開きます。

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接続を使用するときに、ウィンドウはshrew vpn nicで指定されたDNSを使用します。

4
Alex

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

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

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