A DNS query is a fundamental network message that requests DNS records from a server by specifying a domain name, record type, and class, typically sent via UDP on port 53 to a recursive resolver that either returns a cached answer or iteratively queries authoritative servers through the DNS hierarchy. Monitoring DNS query volume, types, and response codes is critical for operational visibility because anomalies such as NXDOMAIN spikes, query floods, or misconfigured clients can indicate application failures, malware activity, or denial-of-service attacks that degrade name resolution performance. Organizations that implement query logging, rate limiting, and redundant servers gain the evidence and capacity headroom needed to detect and resolve DNS-related problems before they disrupt user-facing applications and network connectivity.
DNSクエリの仕組み
DNSクエリには、名前、レコードタイプ、およびクラスで構成される問い合わせが含まれます。クライアントはこれをリゾルバーに送信し、リゾルバーはキャッシュから回答するか、DNS階層を辿って回答を見つけ出します。
- クエリの構築:クライアントは、検索対象のドメイン名、レコードタイプ(A、AAAA、MX、TXTなど)、およびクラス(インターネットの場合はほぼ常にIN)を指定してクエリを作成します。
- リゾルバへの送信:クライアントのスタブリゾルバは、設定された再帰リゾルバにクエリを送信します。通常、ポート53のUDPを介して行われます。
- キャッシュの確認:再帰的リゾルバーは、同じ名前およびタイプに対して有効期限が切れていないキャッシュされた回答を保持している場合、それを返します。
- 権威サーバーへのクエリ:キャッシュされた回答がない場合、リゾルバーは、回答またはエラーが返されるまで、ルートサーバー、トップレベルドメインサーバー、および権威サーバーに対して反復的なクエリを送信します。
- 応答の返送:リゾルバーはクライアントに応答を送信し、レコードの有効期間(TTL)で設定された時間、その応答をキャッシュします。
クエリは通常UDPを使用し、応答が途切れた場合、クライアントはTCP経由で再試行します。応答コードは、エラーがない場合や、存在しない名前に対するNXDOMAINなど、結果を報告します。EDNSなどの拡張機能や、DNS overTLSのような暗号化トランスポートは、クエリの内容ではなく、その伝達方法を変えるものです。
DNSクエリでよくある問題
多くの場合、ランダムな名前に対するものや、なりすましされた送信元からのクエリが大量に集中すると、リゾルバーのCPU、ソケット、またはアップストリームの帯域幅が枯渇する可能性があります。症状としては、レイテンシの増加、SERVFAILやタイムアウトの発生、および通常の基準値を大幅に上回るクエリレートなどが挙げられます。
TTL やキャッシュを無視する設定ミスのあるクライアントやアプリケーションは、1 秒間に何度も同じクエリを送信することがあります。これは、ログ上で、1 つの名前に対して 1 つのクライアントが「トップトークラー」リストの上位を占めている状態として現れます。
NXDOMAIN応答が急増する場合は、多くの場合、アプリケーションの不具合、誤った検索ドメインサフィックス、または削除された名前を指す古い設定が原因です。また、クライアントが複数の検索サフィックスを追加することで、1回の検索あたりの失敗するクエリ数が倍増することもあります。
応答がクライアントがUDPで受け入れるサイズを超えると、サーバーは切り捨てフラグを設定し、クライアントはTCP経由で再試行する必要があります。TCPポート53をブロックするファイアウォールは、DNSSECデータを含むような大きな応答に対して断続的な障害を引き起こします。
パブリックまたは古いリゾルバーが設定されたクライアントは、内部DNSをバイパスするため、内部ドメイン名の解決に失敗したり、異なる応答が返されたりすることがあります。これは、DHCPのスコープが変更された後や、DNS設定がハードコードされているデバイスで頻繁に発生します。