ネットワークトラフィック分析が有効になっているリージョンと VPC のみ、ログストレージを構成できます。デフォルトでは、ログストレージサービスに対してネットワークトラフィック分析が有効になっています。ネットワークトラフィック分析を無効にすると、ログストレージサービスはログデータを受信しません。詳細については、「ネットワークトラフィック分析を有効または無効にする」をご参照ください。
シナリオ
コンプライアンスとセキュリティの目的で、企業はネットワークログを保存し、分析する必要がしばしばあります。プライベートゾーンログは、内部ドメイン名がどのように使用されているかを明確に示します。これにより、ユーザーの動作を監査し、潜在的なセキュリティリスクを迅速に特定できます。
プライベートゾーン解決ログとは
プライベートゾーン名前解決ログは、指定された Alibaba Cloud UID の下のすべての VPC のエンドポイントからの DNS 名前解決リクエストと応答を記録します。これらのログには、リクエストリージョン、リクエスト VPC ID、ソース IP アドレス、宛先 IP アドレス (DNS エンドポイント)、クエリされたドメイン名、RecordType、応答結果などの詳細が含まれます。リクエストされたドメイン名には、PrivateZone で構成された権限のあるドメイン名と外部のパブリックドメイン名の両方が含まれます。複数のアカウントとリージョンにまたがるプライベートゾーンログを迅速に収集、管理、一元的に分析するために、Alibaba Cloud DNS と Simple Log Service (SLS) はワンクリック機能を提供しています。この機能は、SLS ログ監査アプリケーションで有効にできます。
プライベートゾーンログは、内部エンドポイントからのドメイン名解決リクエストと応答を記録します。リクエストされたドメイン名は、主に次の 4 つのカテゴリに分類されます。
1. 組み込みの権限のあるドメイン名
プライベートゾーン解決は、Alibaba Cloud Virtual Private Cloud (VPC) 環境に基づくプライベート DNS サービスです。このサービスを使用すると、カスタムプライベートドメイン名を 1 つ以上の VPC の IP アドレスにマッピングできます。これらのカスタムプライベートドメイン名を使用して、ECS ホスト名、SLB インスタンス、OSS バケットなど、VPC 内の Alibaba Cloud リソースを管理できます。これらのプライベートドメイン名は、VPC の外部からはアクセスできません。また、専用回線または VPN を使用して VPC を従来のデータセンターに接続することもできます。これにより、プライベートドメイン名を介してデータセンターと VPC の間でリソース共有が可能になります。
2. Apsara プラットフォーム DNS (クラウドインフラストラクチャ DNS) で構成されたクラウドプロダクトインスタンスのドメイン名
クラウドインフラストラクチャ DNS は、Alibaba Cloud Apsara プラットフォームの内部 DNS です。Alibaba Cloud プロダクトによって提供されるすべてのインスタンスドメイン名は、この DNS によって解決されます。
3. 外部 DNS サーバーに転送される外部ドメイン名
外部 DNS サーバーは、通常、データセンター内の内部 DNS システムを指します。転送機能により、VPC からのドメイン名解決リクエストをデータセンターの DNS システムに転送できます。これにより、Alibaba Cloud VPC 内の ECS ホストがデータセンター内のアプリケーションドメイン名にアクセスできるようになります。
4. 外部のパブリック権威 DNS サーバーによって再帰的に解決されるパブリックドメイン名
パブリック権威 DNS サーバーは、ドメインレジストリまたはドメイン指定業者で、「example.com」などの特定のパブリックドメイン名に対して構成された DNS サーバーです。これらのサーバーは、ルートドメイン、トップレベルドメイン、およびその他のドメインレベルの権威データの管理および解決サービスを提供します。パブリック権威 DNS サーバーは、自身が管理するドメイン名のみを解決し、他のドメイン名へのリクエストへのアクセスを拒否します。
プライベートゾーン名前解決ログのフィールド
1. リクエストログの例
ログフィールド | 説明 | 例 (フォーマット参照のみ) |
dns_msg_flags | DNS メッセージフラグ:
| RD |
dns_msg_id | DNS メッセージ ID。これは DNS クエリの一意の識別子です。 | 30914 |
dst_addr | 宛先 IP アドレス。 | 100.100.2.136 |
dst_port | 宛先ポート。 | 53 |
ecs_hostname | ECS ホスト名。 | iZbp1b1mx9fhe34k***** |
ecs_id | ECS インスタンス ID。 | i-bp1b1mx9fhe34kh**** |
module_type | モジュールログタイプ。リクエストログは常にグローバルログです。
| GLOBAL |
query_name | クエリされたドメイン名。 | www.example.com. |
query_type | クエリのレコードタイプ (A、AAAA、CNAME、TXT、MX など)。 | A |
region_id | リージョン。 | cn-shanghai |
src_addr | ソース IP アドレス。 | 192.168.0.1 |
src_port | ソースポート。 | 42071 |
transport | トランスポートプロトコル。 | UDP |
user_id | Alibaba Cloud アカウント ID。 | 139749398683**** |
vpc_id | VPC タイプのインスタンス ID。 | vpc-bp1eyy43516itw78**** |
edns | DNS の拡張メカニズム (EDNS)。このフィールドは、クエリまたは応答ログに含まれる場合があります。 | "flags: DO udp: 1408 CLIENT-SUBNET: 1.1.XX.XX/32/24" |
2. グローバル応答ログの例
ログフィールド | 説明 | 例 (フォーマット参照のみ) |
answer_rrset | 応答リソースレコードセット。 | Json 配列: ["www.example.com. 600 A 192.168.1.1", "www.example.com 600 A 192.168.1.2", ] |
authority_rrset | 権威リソースレコードセット。 | Json 配列: ["example.com. 600 SOA ns1.example.com. hostmaster.example.com. 2023010101 3600 1200 3600 360" ] |
additional_rrset | 追加リソースレコードセット。 | Json 配列: ["ns1.example.com. 600 A 100.100.2.136"] |
dns_msg_flags |
| QR |
dns_msg_id | DNS メッセージ ID。これは DNS クエリの一意の識別子です。 | 30914 |
dst_addr | 宛先 IP アドレス。 | 192.168.0.1 |
dst_port | 宛先ポート。 | 42071 |
ecs_hostname | ECS ホスト名。 | iZbp1b1mx9fhe34k***** |
ecs_id | ECS インスタンス ID。 | i-bp1b1mx9fhe34kh**** |
module_type | モジュールログタイプ:
| GLOBAL |
query_name | クエリされたドメイン名。 | www.example.com. |
query_type | クエリのレコードタイプ (A、AAAA、CNAME、TXT、MX など)。 | A |
rcode | 応答ステータスコード:
| 0 |
region_id | リージョン。 | cn-shanghai |
resolve_path | 解決パス。このフィールドはグローバル応答ログにのみ表示されます。パスは、5 つの値を持つカンマ区切りの文字列です。各値は、権威アクセラレーションゾーン、権威通常ゾーン、キャッシュモジュール、転送モジュール、再帰モジュールのいずれかのモジュールに対応します。 「1」は、クエリがモジュールを通過したことを意味します。 「0」は、モジュールがスキップされたことを意味します。 複数レベルの CNAME ルックアップの場合、複数の値が「1」になることがあります。 | 1,0,0,0,0 |
rt | 応答時間 (RT):
| 10 ms |
src_addr | ソース IP アドレス。 | 100.100.2.136 |
src_port | ソースポート。 | 53 |
transport | トランスポートプロトコル。 | UDP |
user_id | Alibaba Cloud アカウント ID。 | 139749398683**** |
vpc_id | VPC タイプのインスタンス ID。 | vpc-bp1eyy43516itw78**** |
edns | DNS の拡張メカニズム (EDNS)。このフィールドは、クエリまたは応答ログに含まれる場合があります。 | "flags: DO udp: 1408 CLIENT-SUBNET: 1.1.XX.XX/32/24" |
3. モジュール応答ログの例
ログフィールド | 説明 | 例 (フォーマット参照のみ) |
answer_rrset | 応答リソースレコードセット。 | Json 配列: ["www.example.com. 600 A 192.168.1.1", "www.example.com 600 A 192.168.1.2", ] |
authority_rrset | 権威リソースレコードセット。 | Json 配列: ["example.com. 600 SOA ns1.example.com. hostmaster.example.com. 2023010101 3600 1200 3600 360" ] |
additional_rrset | 追加リソースレコードセット。 | Json 配列: ["ns1.example.com. 600 A 100.100.2.136"] |
dns_msg_id | DNS メッセージ ID。これは DNS クエリの一意の識別子です。 | 30914 |
dst_addr | 宛先 IP アドレス。 | 100.100.2.136 |
dst_port | 宛先ポート。 | 53 |
ecs_hostname | ECS ホスト名。 | iZbp1b1mx9fhe34k***** |
ecs_id | ECS インスタンス ID。 | i-bp1b1mx9fhe34kh**** |
module_type | モジュールログタイプ:
| AUTH_FAST |
query_name | クエリされたドメイン名。 | www.example.com. |
query_type | クエリのレコードタイプ (A、AAAA、CNAME、TXT、MX など)。 | A |
rcode | 応答ステータスコード:
| 0 |
region_id | リージョン。 | cn-shanghai |
rt | 応答時間 (RT):
| 1 ms |
src_addr | ソース IP アドレス。 | 192.168.0.1 |
src_port | ソースポート。 | 42071 |
transport | トランスポートプロトコル。 | UDP |
user_id | Alibaba Cloud アカウント ID。 | 139749398683**** |
vpc_id | VPC タイプのインスタンス ID。 | vpc-bp1eyy43516itw78**** |
edns | DNS の拡張メカニズム (EDNS)。このフィールドは、クエリまたは応答ログに含まれる場合があります。 | "flags: DO udp: 1408 CLIENT-SUBNET: 1.1.XX.XX/32/24" |
Private Zone ログ監査
1. ログ監査とは
ログ監査サービスは、Alibaba Cloud Simple Log Service (SLS) プラットフォーム上のアプリケーションです。SLS のすべての機能を継承し、さまざまな Alibaba Cloud プロダクトからのマルチアカウント管理とクロスリージョンログ収集のための強力な機能を提供します。また、リソースディレクトリを使用して、複数のアカウントにまたがるクラウドプロダクトインスタンスからのログ情報を一元的に管理および記録することもサポートしています。
2. Private Zone ログ監査を有効にする
内部 DNS ログ監査機能は現在、中国 (上海)、中国 (北京)、中国 (広州)、中国 (深圳)、中国 (杭州)、中国 (青島)、中国 (張家口)、シンガポール、中国 (香港)、および 中国 (深圳) 金融クラウドリージョンで利用できます。他のリージョンでこの機能が必要な場合は、チケットを起票して、プロダクトチームにフィードバックを提供できます。プロダクトチームはリクエストを評価し、リージョンのサポートを追加するかどうかを決定します。
ログ監査サービスコンソールにログインします。
[グローバル構成] ページで、プライベートゾーンログ監査のスイッチをオンにし、[中央プロジェクトのリージョン] (たとえば cn-hangzhou) を選択します。詳細については、「ログ収集を有効にする」をご参照ください。

3. その他の機能
複数アカウント構成
ログ監査サービスの強力なクロスアカウント収集機能により、メンバーアカウントから中央管理アカウントにプライベートゾーンログを収集できます。ログ監査サービスは、マルチアカウント管理のために次の 2 つのモードをサポートしています。
リソースディレクトリモード
カスタム権限付与モード
詳細については、「Alibaba Cloud アカウント間でクラウドリソースからログを収集する」をご参照ください。
Terraform 構成
Terraform はオープンソースツールです。そのコマンドラインインターフェイス (CLI) は、Alibaba Cloud またはその他のサポートされているクラウドに構成ファイルをデプロイし、バージョン管理するための簡単なメソッドを提供します。Log Audit Service と Terraform を使用してクラウドプロダクトのログ収集を構成する方法の詳細については、「Terraform を使用して Log Audit Service を構成する」をご参照ください。
次のコードは、Terraform を使用してプライベートゾーンのログ収集を設定する方法の例を示しています。
resource "alicloud_log_audit" "dns_example" {
display_name = "tf-audit-test-dns"
aliuid = "1480************" // 管理アカウント。
variable_map = {
"dns_intranet_enabled" = "true", // プライベートゾーンログの収集を有効にします。
"dns_sync_enabled" = "true", // リージョンログの中央プロジェクトへの同期を有効にします。
"dns_intranet_ttl" = "3", // リージョンログの保存期間: 3 日。
"dns_sync_ttl" = "185" // 中央ログの保存期間: 185 日。
"dns_intranet_collection_policy" = "accept tag.env == \\\"test\\\"\\ndrop \\\"*\\\"" // タグキーが env でタグ値が prod の VPC インスタンスからのみプライベートゾーンログを収集します。
}
multi_account = ["1039************"] // メンバーアカウントを構成します。
}収集ポリシー
プライベートゾーンのログ収集を詳細なレベルで管理できます。最小の収集粒度は VPC タイプのインスタンスです。これにより、VPC タイプのインスタンス情報に基づいて DNS ログ収集を制御できます。
収集ポリシーは、ログ監査サービスコンソールで設定できます。次の図は、ポリシーの例を示しています。このポリシーは、タグキー `env` とタグ値 `prod` を持つ VPC インスタンスからのみプライベートゾーンログを収集します。収集ポリシーを設定することで、詳細な収集管理を実現し、不要なログ収集を削減できます。

ログ分析のベストプラクティス
このセクションでは、プライベートゾーンログの一般的なクエリおよび分析シナリオの例を示します。特定のニーズに合わせてカスタム分析文を作成することもできます。さらに、SQL 文の結果をダッシュボードに追加したり、クイック検索として保存したり、さらなる処理のためにアラートを作成したりできます。
1. DNS 解決結果
指定された期間に、指定された VPC 内の異なるクエリされたドメイン名に対する DNS リクエストの分布を分析します。
* and vpc_id: vpc-2ze9dducyc3t6p8aeksb3 |select count(*) as total_req, query_name group by query_name
2. DNS 解決 RT
指定された VPC、ドメイン名、およびクエリタイプに対する DNS 名前解決の RT を、一定期間にわたって統計的に分析します。
* and vpc_id: vpc-2ze9dducyc3t6p8aeksb3 and query_name: "metrichub-cn-beijing.aliyun.com." and query_type: A | select stddev(__time__) as RT, dns_msg_id GROUP by dns_msg_id
3. 解決例外の分析
Alibaba Cloud ECS サーバーでドメイン名の名前解決例外が発生した場合、プライベートゾーン名前解決ログを有効にして SLS に保存し、原因を分析できます。SLS ログには、 リクエストログ、グローバル応答ログ、モジュール応答ログの 3 種類のログエントリが含まれる場合があります。
分析手順は次のとおりです。
src_portとdns_msg_idパラメーターを使用して、単一の名前解決リクエストのすべてのログエントリを識別し、フィルターします。次のフィールドを使用して、3 種類のログを区別します。
リクエストログには、空の
rtフィールドがあります。モジュール応答ログの
resolve_pathフィールドは空です。グローバル確認ログは空ではありません。
異常な結果の例
前述のルールに基づくと、最初のエントリはリクエストログ、2 番目はモジュール応答ログ、3 番目はグローバル応答ログです。

クライアントは DNS 名前解決リクエストを開始し、再帰クエリを期待します。
リクエストは再帰モジュールに送信されますが、モジュールはドメイン名の解決に失敗します。
100.100.2.136 のサーバーは、クライアントに失敗結果を返します。
正常な結果の例

クライアントは DNS 名前解決リクエストを開始し、再帰クエリを期待します。
リクエストは再帰モジュールに送信され、モジュールはドメイン名の解決に成功します。
100.100.2.136 のサーバーは、クライアントに解決結果を返します。