クイックダウンロード:
DNSは、あらゆるインターネット接続を可能にする目に見えないプロトコルであり、それを理解することが、効果的な監視の第一歩となる。
-
DNSは、スタブリゾルバから権威ネームサーバーまで、階層化されたサーバーチェーンを使用して、人間が読みやすいドメイン名をIPアドレスに変換します。各レベルでキャッシュを使用することで、検索を高速化します。
-
すべてのDNSメッセージは同じパケット構造(ヘッダー、質問、回答、認証局、およびその他のセクション)に従うため、プロトコルは予測可能であり、Wiresharkなどのツールで検査できます。
-
UDPは速度を重視してほとんどのDNSクエリを処理しますが、応答が大きすぎる場合やファイアウォールがUDPトラフィックをブロックしている場合は、プロトコルはTCPに切り替わります。
-
まず、クライアントから権威ネームサーバーへの独自のDNSパスをマッピングし、次に委任、TTL、キャッシング、パケット構造が実際のパフォーマンスとトラブルシューティングにどのように影響するかを確認できるツールを使用してください。
DNS(ドメインネームシステム)は、次のような人間が読めるドメイン名を変換するプロトコルです。 www.google.com コンピュータがトラフィックをルーティングするために使用するIPアドレスに変換します。ブラウザにURLを入力するたびに、DNSはバックグラウンドで実行され、接続を可能にします。
このガイドでは、プロトコル、ルックアッププロセス、DNSパケットの構造など、基本事項について説明します。 DNS監視の詳細分析ここでは、委任、TTLとキャッシング、パフォーマンス、セキュリティ、およびヘルスチェックについて、より詳細に解説します。
DNSプロトコルとは何ですか?
DNSはTCP/IPスイートのアプリケーション層プロトコルです。デフォルトではUDP上で動作します。これは、UDPがハンドシェイクを必要とせず、ラウンドトリップの回数が少ないためです。
ファイアウォールがUDPをブロックした場合、または応答が大きすぎて単一のUDPパケットに収まらない場合、DNSはTCPにフォールバックします。
| UDP | TCP | |
| 握手が必要 | いいえ | はい(3ステップ) |
| 配達確認 | いいえ | はい |
| 速度 | より速く、往復回数も少なく | 速度が遅くなり、往復回数が増える |
| ときに使用されます | 標準DNSクエリ | ファイアウォールがUDPをブロックするか、応答が512バイトを超えています |
DNSルックアップの仕組み
DNSクエリは、応答が得られるまで一連のサーバーを経由して移動します。
- スタブ解決器(お使いのデバイス)
- 再帰リゾルバ
- ルートサーバー
- TLD サーバー
- 権威ネームサーバー
実際には、各レイヤーでのキャッシュのおかげで、そのチェーンの大部分がスキップされます。そのため、人気のあるドメインへのクエリは、毎回ルートから完全にたどる必要がなく、通常はミリ秒単位で解決されます。
チェーン内の各サーバーは、直接応答することも、応答可能なサーバーにリゾルバを指示することもできます。このハンドオフプロセスは委任と呼ばれ、ここで説明するにはスペースが足りないため、より深く理解しておく価値があります。
その階層構造の仕組みと、それが劣化した場合に何が起こるかについては、DNS委任ガイドをご覧ください。
パケットレベルで自分で追跡するには、次のようなツールを使用します。 Wiresharkの DNSパケットを人間が読みやすい形式にします。Wiresharkを開き、キャプチャを開始してondnsをフィルタリングすると、表示されるすべてのパケットが以下に説明する構造になります。
DNSパケットの読み取り
すべてのDNSメッセージ、クエリ、レスポンスは、同じセクションから構成されています。
それぞれが何を示しているのか、以下に説明します。
ヘッダ
ヘッダーは、すべてのメッセージの先頭にある固定の12バイトのブロックです。

トランザクションID(クエリに対する応答を照合するために使用されます)と、それがクエリか応答か(QR)、応答が権威サーバーから来たかどうか(AA)、クエリが完全な再帰ルックアップ(RD)を要求しているか、参照のみを要求しているか、そして成功した場合は0、ドメインが存在しない場合は3となる戻りコード(Rcode)など、表示しているメッセージの種類を示す一連のフラグが含まれています。
残りのヘッダーフィールドは、続く質問とレコードの数を単純にカウントするものです。
メッセージ

問題は、ホスト名、レコードタイプ(A、AAAA、MX、NSなど)、クラス(インターネットの場合はほぼ常に「IN」)など、実際に何が求められているかということです。
通常、1つの問題集に1問ずつ入っています。
回答リソースレコード

回答とは、質問に対する応答となるレコードのことで、通常はWeb検索の場合はA、AAAA、またはCNAMEレコードです。各回答レコードには独自のTTL(有効期限)があり、これは回答を再度検索する必要が生じるまでのキャッシュ期間を制御します。
DNS TTLとキャッシングに関するガイドを読んで、TTLがどのように選択されるか、リゾルバ間でどのようにカウントダウンされるか、そしてパフォーマンスとセキュリティのトレードオフが生じるのはどのような場合かを学びましょう。
権限リソース記録
オーソリティレコードは、サーバー自身が回答を持っていない場合に表示され、代わりに回答を持っているサーバーのNSレコードを返します。これは、前述の委任チェーンの一部です。

追加記録
追加レコード(グルーレコードとも呼ばれる)は、Authorityセクションに記載されているネームサーバーのIPアドレスです。これらが含まれているのは、リゾルバがネームサーバーを見つけるためだけに別途検索を行う必要がないようにするためです。

深く掘る
このガイドでは基本事項を解説します。DNSが本番環境で稼働し始めた後に特に重要となるトピックについては、弊社のDNSモニタリング詳細解説シリーズでそれぞれ詳しく解説しています。
- DNS委任と再帰: リゾルバがルートから権威サーバーまでどのように辿っていくのか、そして委任の設定ミスによって何が問題になるのか。
- DNS TTLとキャッシングTTL値がパフォーマンスと一貫性にどのように影響するか、そして注意すべきキャッシングの落とし穴について。
- 遅いDNSDNS遅延の最も一般的な原因と、その解決方法。
- DNSSEC暗号化による検証がDNSレコードの改ざんをどのように防ぐか。
- DNS攻撃とその対策キャッシュポイズニング、トンネリング、フラッディング、ハイジャックといった攻撃に加え、それぞれの攻撃に対する防御方法についても解説します。
- DNSの健全性テストとモニタリング: 環境全体でDNSのパフォーマンス、可用性、および構成を継続的に検証する方法。
LogicMonitor Syntheticsとインターネットパフォーマンスモニタリングを使用して、DNSインフラストラクチャをエンドツーエンドで監視します。
DNS障害は急速に連鎖的に発生します。LogicMonitorのインフラストラクチャ監視機能とインターネットパフォーマンス監視機能を組み合わせることで、ユーザーに影響を与える前に名前解決の問題を検出できます。
よくあるご質問
DNSはデフォルトでどのトランスポートプロトコルを使用しますか?
DNSは、ハンドシェイクが不要で、ラウンドトリップ回数が少ないため、デフォルトではUDP(ユーザーデータグラムプロトコル)を使用します。応答が大きすぎて単一のUDPパケットに収まらない場合、またはファイアウォールがUDPをブロックしている場合は、DNSはTCPにフォールバックします。TCPはラウンドトリップ回数が増える代わりに信頼性が向上します。
なぜほとんどのDNSクエリはミリ秒単位で解決されるのでしょうか?
DNS階層の各層でキャッシュを行うことで、ほとんどのクエリはルートサーバーから権威ネームサーバーまでの全経路を辿る必要がなくなります。再帰リゾルバ、オペレーティングシステム、さらにはブラウザでさえ、各レコードのTTL(有効期限)期間中は以前の回答を保存するため、よく使われるドメインの繰り返し検索はほぼ瞬時に完了します。
DNSパケットを自分で検査するにはどうすればよいですか?
Wiresharkのようなパケット解析ツールを使用すると、DNSトラフィックをリアルタイムでキャプチャして読み取ることができます。キャプチャを開始し、「dns」フィルタを適用すると、各パケットに標準的なDNSメッセージ構造が表示されます。この構造は、トランザクションIDとフラグを含む12バイトのヘッダー、クエリ対象のホスト名とレコードタイプを含む質問セクション、そして返されたレコードを含む応答、オーソリティ、およびその他のセクションで構成されています。




