PCAP の DNS タイムアウト、NXDOMAIN、および SERVFAIL: 遅い DNS と遅いサーバーを区別する方法
パケット キャプチャの証拠を使用して、DNS タイムアウト、NXDOMAIN、SERVFAIL、繰り返しのクエリ、およびアプリケーションの起動の遅さを診断する方法
「アプリケーションが遅い」ケースの多くは、実際には DNS ケースです。ユーザーがボタンをクリックすると、アプリは数秒待機し、最初の責任はサーバーにあります。パケット キャプチャでは、DNS 解決が完了するか失敗するまで TCP 接続が試行されていないことが示される場合があります。
DNS の証拠はコンパクトですが、誤解されやすいです。 「NXDOMAIN」、「SERVFAIL」、およびタイムアウトは異なる結果です。それらを 1 つの一般的な「DNS エラー」として扱うと、間違った所有者につながります。
タイムアウトは使用可能な応答が到着しないことを意味します
DNS タイムアウトは通常、有効な応答がないクエリの繰り返しとして現れます。クライアントは、同じ名前を再試行したり、複数のリゾルバーをクエリしたり、IPv6 から IPv4 にフォールバックしたりする可能性があります。重要な兆候は、アプリケーションが次に進むまでに時間が経過することです。
検査:
- クエリ名
- クエリ タイプ: A、AAAA、CNAME、SRV など。
- リゾルバIP
- 再試行間隔
- 応答が届いたかどうか
- TCPまたはTLS接続が開始されるまでの時間
- 複数のリゾルバーが異なる動作をするかどうか
接続を試行する前に数秒間の DNS 再試行がある場合、サーバーはまだ遅くなっていません。クライアントはそこに到達していません。
NXDOMAIN は有効な否定回答です
「NXDOMAIN」は名前が存在しないことを意味します。これは、アプリケーション構成の問題、タイプミス、古いドメイン、スプリット ホライズン DNS の問題、またはオプションの動作の予期される検索である可能性があります。応答がないのと同じではありません。
役立つ質問:
- NXDOMAIN を返した名前はどれですか?
- アプリケーションは別の名前を試しましたか?
- これは内部 DNS ですか、それともパブリック DNS ですか?
- 検索サフィックス拡張により予期しない名前が作成されましたか?
- 否定的な答えはすぐに届きましたか?
多くの場合、高速な NXDOMAIN はパフォーマンス上の問題ではありません。それは正しさの問題です。
SERVFAIL はリゾルバーまたは権限の問題を示しています
「SERVFAIL」は、リゾルバが応答を完了できなかったことを意味します。原因としては、DNSSEC 検証の失敗、権限のあるサーバーにアクセスできない、リゾルバーの構成ミス、または部分的な停止などが考えられます。
クライアント近くの PCAP には、リゾルバの最終的な SERVFAIL のみが表示される場合があります。リゾルバー付近のキャプチャには、上流のクエリとその失敗箇所が表示される場合があります。キャプチャポイントが重要です。
PCAP 手術が重要な理由
PCAP 手術は DNS サーバーではありません。その役割は、エンジニアがパケット キャプチャ内の証拠を分離し、関連するウィンドウをトリミングし、タイミングを維持し、防御可能なハンドオフ ファイルを準備できるようにすることです。 DNS ケースでは、多くの場合、小規模で焦点を絞った抽出が必要です。
- アプリケーション接続前のクエリ
- リゾルバ応答
- リトライのタイミング
- 解決後の関連する TCP/TLS 接続
- DNS の遅延を証明するのに十分なコンテキスト
大きな PCAP にユーザーが認識できる 10 秒の遅延が含まれる場合、DNS クエリ ウィンドウと最初の接続試行を抽出すると、サポート ケースのレビューがはるかに簡単になります。
DNS トラブルシューティング キャプチャに保存するもの
保存する:
- timestamps
- DNSトランザクションID
- クエリと応答のペア
- 応答コード
- リゾルバIP
- クライアントIP
- 追従接続タイミング
匿名化するときは注意してください。クエリ名が完全に削除された場合、受信者はその失敗がタイプミスなのか、内部ドメインなのか、パブリック ドメインなのか、それとも検索サフィックスの動作なのかが分からない可能性があります。
「DNS タイムアウト pcap」、「NXDOMAIN と SERVFAIL」、「遅い DNS パケット キャプチャ」などの検索クエリの場合、重要なのは、アプリケーションがサーバーに到達する前に解決を待ったかどうかを証明することです。