DNSタイムアウトはどのように機能するはずですか?


9

最近、サーバーのIPアドレスを要求するリモートサービス(ホストされたDNSプロバイダーを使用)が次の応答を返すという問題がありました。

DNS problem: SERVFAIL looking up A for mysql.xavamedia.nl

(更新:ここで言及されているリモートサービスはLet's Encryptです。私は問題トラッカーに対してバグを報告したため、このパスに誘導されました。)

ローカルネットワークでテストしたところ、ホストされているDNSサーバーから空のDNS応答が返されることがあります。明らかにこれは断続的です。これは、DNSレコードがキャッシュにない場合にのみ発生し、DNSサーバーがビジー状態の場合にのみ問題となるためです。

以下は、Wiresharkによる空の応答メッセージの説明です。

空の応答のWiresharkスクリーンショット

もちろん、ほとんどのDNSクエリと応答はUDP経由で送信されるため、ローカルリゾルバは応答をしばらく待ってからあきらめます。私が今疑問に思うのは、DNS応答時間のガイドラインはありますか?私のDNSホスティング業者は肩をすくめて、ローカルリゾルバーが空の応答を送信するのが早すぎると言っていました。これまでにこの問題に遭遇したことはありませんが、エラーコードのない空のDNS応答であるエラーモードに驚いています。

これがどのように機能するかについてのいくつかのガイドライン、およびDNSホスティングが何か間違っていることをいつ/どのように証明できるかを誰かが知っていますか?


1
空の応答に関する詳細情報を提供するために質問を更新していただけますか?これは、設定されたフラグと権限セクションがどのように見えるかに応じて、多くのことを意味します。dig/ nslookupまたはWiresharkの解剖の出力を確認する必要があります。(tcpdump十分ではありません)を使用している場合はnslookupset debug最初に実行します。
Andrew B

私はpcapを持っていますが、ここでどのように表示するのが最善かわかりませんか?
djc 2016

1
Wiresharkで開き、パケットをクリックして、DNSプロトコルの情報を展開します。サブカテゴリも展開し、画像の挿入ボタンを使用して質問にスクリーンショットを投稿します。スクリーンショットをDNSプロトコルのものにトリミングできます。
Andrew B

回答:


6

あなたが見ている空の応答は、と呼ばれる合成状態NODATAです。NODATAそしてNXDOMAIN、両方の名前が存在しないことを示しているが、NXDOMAINすべての名前に適用されるの下にも指示された記録。NODATAその名前がリクエストされていないタイプのレコードに関連付けられているか、またはリクエストしているものの下にある他のレコードがあることをアドバイスしています。(つまりexample.test.xavamedia.nl.

このコンテキストからのあなたの持ち帰りNODATANXDOMAIN事実上同じです:要求された名前とタイプのレコードは存在しませんでした。権限ネームサーバは要求されたドメインのために達した、その名前とタイプのレコードが存在しなかったことを知らせるバック答えました。これは通信エラーではありません。権威あるサーバーは、データがないと述べた。おそらく、あなたが話していたサーバーがすでにこのリクエストを処理しており、過去4時間以内にそのレコードの不在を否定的にキャッシュしました。(14400秒は、のSOAレコードによって定義される負のキャッシュ間隔ですxavamedia.nl.

どちらも、NXDOMAINまたはNODATA それ自体がこのインスタンスで発生したときにタイムアウトになることはありませんが、リゾルバライブラリはおそらくここからDNS検索サフィックスの追加に移り、検索ドメインの権限のあるDNSサーバーのタイムアウトをトリガーする可能性があります。

これは、SERVFAIL検索したときに応答があった理由を説明するものではないことに注意してくださいmysql.xavamedia.nl.。これは、再帰サーバーが信頼できるサーバーから回答を取得する際の問題を示しています。権威サーバーがで応答したか、SERVFAIL再帰サーバーが権威サーバーのいずれにも到達できなかったか、または再帰サーバーが返されたデータが無効であると判断しました。あなたが提供した情報でこれを証明することはできません。


詳細な回答をありがとう!まだ不明な点がいくつかあります。NODATA応答が権威あるサーバーによって何らかの方法で開始された場合、これらのドメインは(ワイルドカードAレコードにより)長期間存在していたため、私のDNSホスティングに問題があります。それで私のもう1つの質問は、権威あるサーバーが何か間違ったことをしたことをどのように証明できるでしょうか?
djc

NODATAあなたのパケットキャプチャでは、プルーフです。関係のある質問は、「なぜ権威あるサーバーが応答して、そのような記録が存在しないと言ったのですか?」です。。残念ながら、権限のあるサーバーに対する直接ルックアップ(再帰サーバーのオペレーターの肩をすくめて非難する機能を削除)で証明できない限り、3つのうちの1つだけが時々誤動作している可能性があることを覚えておいて、押すのは難しい問題です。
Andrew B

NODATA名前存在するが、要求されたタイプのレコードがないことを意味します。たとえば、Aレコードを要求しても、レコードしかありませんMX。また、名前がDNS階層の中間ノード用であり、独自のレコードがない場合にも発生する可能性があります。
Barmar 2016

@Barmarはい、ここで言われていることは、権威あるサーバーがそのレコードの名前とタイプのペアがないことを報告しており、djcはしばらくの間存在していたワイルドカードレコードのためにこれについて混乱を表しています。
Andrew B

私のコメントはあなたの最初のポイント「NODATAとNXDOMAINはどちらも名前が存在しないことを示している」に向けられています。NXDOMAIN名前が存在しないことをNODATA意味します。名前は存在しますが、要求されたレコードタイプは存在しません。
Barmar 2016

2

RFC 1123 http://tools.ietf.org/rfcmarkup?rfc=1123#page-77のセクション「6.1.3.3効率的なリソースの使用」で定義されているものを除いて、特定のガイドラインを知りません。

「5秒以上」というタイムアウト値が指定されています。RFCには、一時的な障害をキャッシュする必要があることも記載されています。これは、クライアントがRFCのセクション2.2に違反した場合に、過剰な量のDNS要求を防ぐためです。このセクションでは、ソフト障害が発生した場合、クライアントは再試行の間に「妥当な」時間待機する必要があると述べています。

このトピックに関するStackoverflowスレッドもありますが、実際の観測を除いて、それ以上の情報は含まれていません。/programming/3036054/ideal-timeout-period-for-dns-lookup

このトピックについて私が言えることはこれだけです。他に誰か追加することがあれば、私も興味があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.