Amazon-Route-53

Route 53 Resolverのクエリログを記録してみた

はじめに

こんにちは、ディーネットの山田です。

Route 53 Resolverからクエリログを記録してみる機会があったので、挙動を検証してみました。

Amazon Route 53 Resolverとは

パブリックレコード、Amazon VPC 固有の DNS 名、および Amazon Route 53 プライベートホストゾーンに関する AWS リソースからの DNS クエリに再帰的に応答し、デフォルトですべての VPC で利用可能です。

Amazon VPC は VPC+2 IP アドレスで Route 53 Resolver に接続します。この VPC+2 アドレスはアベイラビリティーゾーン内の Route 53 Resolver に接続します。

Amazon VPC CIDR + 2 アドレスと fd00:ec2::253 で実行される Amazon Route 53 Resolver は、デフォルトで VPC のすべてにおいて利用可能で、パブリックレコード、Amazon VPC 固有の DNS 名、および Route 53 プライベートホストゾーンに関する DNS クエリに再帰的に応答します。Route 53 Resolver には、Nitro Resolver サービスと Zonal Resolver フリートの 2 つの高可用性コンポーネントがあり、ユーザーにとって透過的です。Nitro Resolver Service は、Nitro インスタンスの Nitro Card および旧世代インスタンスの Dom0 で実行され、ホストサーバー上のローカルで Route 53 Resolver 宛てのパケットを消費するサービスです。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver.html
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver-availability-scaling.html

VPC内で利用できるDNSクエリの再帰問い合わせが可能な名前解決サービスです。

前提条件

  • 今回の検証では、VPC関連のリソース及び名前解決を実施するEC2リソースは作成済みとなります。

クエリログで記録される内容

クエリログで記録される内容については、以下のフォーマットで出力されます。

なお、クエリログの記録については、以下のような注意事項があるので利用を検討される際やログをチェックされる際は注意してください。

項目名 内容
version クエリログ形式のバージョン番号。
現在のバージョンは現在のバージョンは 1.1 です。
account_id VPC を作成した AWS アカウントの ID です。
region VPC が作成された AWS リージョンです。
vpc_id クエリが発信された VPC の ID。
query_timestamp クエリが送信された日時を、ISO 8601 形式の協定世界時 (UTC) で表します。
query_name クエリで指定されたドメイン名またはサブドメイン名。
query_type リクエストで指定された DNS レコードタイプ、または ANY のいずれか。
query_class クエリのクラス。
rcode DNS クエリに応答して Resolver が返した DNS 応答コード。
応答コードは、クエリが有効であったかどうかを示します。
最も一般的な応答コードは、クエリが有効であったことを意味する NOERROR です。
レスポンスが有効でない場合、Resolver はその理由を示す応答コードを返します。
answer_type Resolver がクエリに応答して返す値の DNS レコードタイプ。
rdata クエリに応答して Resolver が返した値。
例えば、A レコードの場合は、IPv4 形式の IP アドレスになります。
CNAME レコードの場合には、CNAME レコード内のドメイン名です。
answer_class クエリに対する Resolver からの応答クラス。
srcaddr クエリの発信元であるインスタンスの IP アドレス。
srcport クエリの発信元であるインスタンスのポート。
transport DNS クエリを送信するために使用されたプロトコル。
srcids instance、resolver_endpoint、および DNS クエリの発信元、またはそのクエリが通過した resolver_network_interface。
instance クエリの発進元であるインスタンスの ID。
resolver_endpoint DNS クエリをオンプレミス DNS サーバーに渡すリゾルバーエンドポイントの ID。
firewall_rule_group_id クエリ内のドメイン名と一致した DNS Firewall ルールグループの ID。
この情報は、アクションが alert または block に設定されているルールとの一致が、DNS Firewall により検出された場合にのみ挿入されます。
firewall_rule_action クエリ内のドメイン名に一致したルールが指定しているアクション。
この情報は、アクションが alert または block に設定されているルールとの一致が、DNS Firewall により検出された場合にのみ挿入されます。
firewall_domain_list_id クエリ内のドメイン名に一致したルールによって使用されるドメインリスト。
この情報は、アクションが alert または block に設定されているルールとの一致が、DNS Firewall により検出された場合にのみ挿入されます。
additional_properties ログ配信イベントの追加情報。is_delayed: ログの配信に遅延がある場合。

詳しくは、以下のデベロッパーガイドをご覧ください。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/resolver-query-logs-format.html

設定手順

Route 53 リゾルバーで目的のVPCを選択

Route 53 リゾルバーで クエリログ記録を設定したい VPC を選択してください。

Route 53 リゾルバーでクエリログ記録を設定

クエリログ記録の設定を行う部分があるので、設定画面に進んでください。

クエリログ記録の設定で必要な項目を入力

クエリログ記録の設定名とクエリログ送信先を設定してください。

動作確認

VPC内に存在するEC2上で、名前解決を実施して実際にログが記録されるか確認を行います。

EC2上でRoute 53 DNS Resolver(旧Amazon Provided DNS)に対して名前解決をリクエスト

$ dig denet.ad.jp

; <<>> DiG 9.18.28 <<>> denet.ad.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19946
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;denet.ad.jp.                   IN      A

;; ANSWER SECTION:
denet.ad.jp.            60      IN      A       3.166.244.81
denet.ad.jp.            60      IN      A       3.166.244.72
denet.ad.jp.            60      IN      A       3.166.244.117
denet.ad.jp.            60      IN      A       3.166.244.36

;; Query time: 0 msec
;; SERVER: 172.30.0.2#53(172.30.0.2) (UDP)
;; WHEN: Thu Nov 28 17:44:57 JST 2024
;; MSG SIZE  rcvd: 104

当社のドメインを名前解決してみました。

ログ出力先に指定したCloudWatch Logsを確認

まとめ

  • Route 53 DNS Resolverで名前解決した内容がログに記録されました。
  • 注意事項にもある通りすでにキャッシュ済みの場合(TTL期限ない)のものはログに出力されなかったです。
  • クエリログサービス自体は、無料で利用できますがログ配信(Vended Logs)やログ保存には別途料金がかかるので採用する際は、注意してください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA