DNSネームサーバーのフォールバックはどのように機能しますか?


14

NSレコードには2つのDNSサーバーがリストされています。昨夜、DNSサーバーの1つがダウンしました。予想どおり、一部のDNSサーバーはホスト名を解決していませんでした。これは一時的なもので、NSレコードのTTLが期限切れになると(1時間)動作を開始すると想定しました。

1時間以上経っても、Earthlink、Verizon、OpenDNSサーバーを使用しているデスクトップからDNSタイムアウトが発生していました。他のDNSサーバーが応答しているかどうかをテストしました。

dig @ns2.example.com www.example.com +short

これはうまくいきました。

私の質問:

  1. TTLが期限切れになった後でも、他のDNSサーバーが他のDNSサーバーにヒットしなかった理由について、誰にも答えがありますか?
  2. DNSサーバーは、ドメインのメインDNSサーバーを(SOAレコードから)優先しますか?
  3. 利用可能なNSレコードからネームサーバーを選択するために使用されるアルゴリズムはありますか?これは実装固有のものであると想定していますが、おそらくここに適用される標準がいくつかあります。

TTLは何の関係もありません。レコードは変更されていないため、関連する効果はありません。
デビッドシュワルツ

ああ、私は今それを見る。ど
ベルミンフェルナンデス

回答:


17

これは不幸な刺激です。複数のDNSサーバーは信頼性を向上させることになっていますが、実際にはしばしば逆の効果があります。

問題は、クライアントが応答を待機する時間が非常に長く、サーバーがその同じ時間だけ待機することです。AとBの2つのDNSサーバーがあるとします。Aが機能し、Bに障害が発生したとします。これが起こります:

  1. クライアントはネームサーバーZに接続し、情報を要求します。ZはBを選択し、クエリを送信します。

  2. ネームサーバーZが応答しなかったため、クライアントがタイムアウトしました。

  3. クライアントはネームサーバーYを試行します。YはBを選択し、クエリを送信します。

  4. ネームサーバーZはタイムアウトし、Aを試行します。正しい答えを取得しますが、クライアントはそれ以上待機していません。

  5. ネームサーバーYが応答しなかったため、クライアントがタイムアウトしました。

  6. クライアントはあきらめ、両方のネームサーバーが応答しません。

  7. ネームサーバーYはタイムアウトし、Aを試行します。正しい答えを取得しますが、クライアントはそれ以上待機していません。

そして、良い解決策はありません。ネームサーバーが応答するかどうかを確認するのを長く待つほど、待機しているネームサーバー自体が長く待機するため、待機時間が長くなります。おそらく、問題はYとZがBを十分な速さでgiveめなかったことです。

基本的に、ネームサーバーのいずれかが使用不可になった場合、一部のクライアントは、非常に運が悪かったために、不良なサーバーのみを試行したためタイムアウトになります。

明るい面では、ネームサーバーが2つあり、1つが失敗した場合、ネームサーバーの約75%が0%ではなく答えを受け取ります。


意味がわかります。ええ クライアントのネームサーバー(Z)は、最後に使用したネームサーバーをキャッシュしませんか?
ベルミンフェルナンデス

1
一部のネームサーバーはそれを行い、時にはそれが役立ちます。多くの場合、ネームサーバーが失敗した正確な方法に依存します。これはすべてUDPの上にあることを覚えておく必要があります。そのため、返信を1回または2回送信しても、ネームサーバーに問題がないことを証明できません。
デビッドシュワルツ

DNSとBINDのコピー(Paul AlbitzとCricket Lui、O'Rielly p278)で、Bind 8.2.3サーバーがフォワーダーのリストから最も速く応答するサーバーを選択することを読みました。つまり、リスト内のサーバーが失敗すると、ほぼ自動的に削除されます。Bind 9はまだこれを実装していません。リスト順で転送サーバーを照会します。これが変わったかどうかは誰にもわかりますか?
ジェイディー

明確にするために、DNSの設定にあまり詳しくない人(これを理解するにはしばらく時間がかかりました)の場合、この例のDNSネームサーバーZおよびYは、ISPが提供するDNSサーバーなど、クライアントのネットワークに基づく再帰ネームサーバーである可能性が最も高いですDHCPを介して顧客に提供します。また、これらのサーバーのタイムアウト値がクライアントDNSリゾルバー(デバイスのオペレーティングシステムなど)よりも長い場合に問題が発生します
Jordan Rieger

@Jaydee RTTによるピッキングはBind9にあります。gitlab.isc.org / isc-
パトリックメヴゼク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.