目次
はじめに
こんにちは、ディーネットの山田です。
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)やログ保存には別途料金がかかるので採用する際は、注意してください。
プロフィール
テクニカルサポートは卒業して、フロントサイドでお客様環境の構築をさせていただいております。
たまに、テクニカルサポートでご対応させていただくことがあるかもしれませんが、その際はよろしくお願いいたします。
インフラ系のエンジニアですが、時々休日プログラマー(Python、PHP)をやっております。
LINK
クラウドベリージャム:プロフィールページ