VPC 的 .2 解析器的真面目 - AWS 内部 DNS 与 Route 53 Resolver 的关系
解析 VPC 内的 DNS 解析器(CIDR+2 地址)是什么、与私有托管区域的联动、Route 53 Resolver 端点实现的混合 DNS 以及 DNS 查询日志的活用方法。
VPC 的 CIDR+2 地址上有什么
创建 VPC 时,CIDR 块的第 2 个地址(10.0.0.0/16 则为 10.0.0.2)被预留为 DNS 解析器。查看 EC2 实例的 /etc/resolv.conf 可以确认 nameserver 设置为该地址。这个 .2 解析器是名为 Route 53 Resolver 的 AWS 托管 DNS 服务。实例的 DNS 查询发送到这个 .2 解析器,由 Route 53 Resolver 进行名称解析。Route 53 Resolver 根据查询内容执行不同的处理:公共域名转发到公共 DNS,私有托管区域的域名从区域记录返回,AWS 内部域名(如 RDS 端点)返回内部 IP 地址。
私有托管区域 - 仅在 VPC 内有效的 DNS
Route 53 的私有托管区域是仅从 VPC 内可解析的 DNS 区域。例如,创建 internal.example.com 私有托管区域,设置将 api.internal.example.com 解析为 10.0.1.100 的记录后,VPC 内的实例可以通过 api.internal.example.com 访问内部服务,但从互联网无法解析。私有托管区域可以关联到多个 VPC。将同一私有托管区域关联到开发 VPC、预发布 VPC 和生产 VPC,可以在所有环境中使用相同的内部域名。
Route 53 Resolver 端点 - 实现混合 DNS
当本地网络与 VPC 通过 Direct Connect 或 VPN 连接时,DNS 名称解析成为课题。需要从本地服务器解析 VPC 内私有托管区域的域名,反之也需要从 VPC 内的实例解析本地的 Active Directory 域名。Route 53 Resolver 端点解决了这一课题。入站端点接受来自本地 DNS 服务器的查询,转发到 VPC 的 .2 解析器。在本地 DNS 服务器中设置 VPC 私有域名的条件转发器,指向入站端点的 IP 地址。出站端点将 VPC 内的 DNS 查询转发到本地 DNS 服务器。
DNS 查询日志 - 可视化 VPC 内的 DNS 活动
Route 53 Resolver 的 DNS 查询日志是记录 VPC 内所有 DNS 查询的功能。记录哪个实例在何时尝试解析哪个域名。从安全角度来看,DNS 查询日志极为有用。恶意软件有时使用 DNS 与 C2(命令与控制)服务器通信(DNS 隧道)。分析 DNS 查询日志可以检测到对可疑域名的查询。例如,对随机字符串子域(a1b2c3d4.evil.com)的大量查询是 DNS 隧道的征兆。查询日志可发送到 CloudWatch Logs、S3 或 Kinesis Data Firehose。
DNS 的陷阱 - enableDnsSupport 与 enableDnsHostnames
VPC 有 2 个与 DNS 相关的设置,如果设置错误 DNS 解析将无法工作。enableDnsSupport(默认:true)是启用 VPC 的 .2 解析器的设置。设为 false 后,VPC 内的实例将无法使用 .2 解析器,除非设置自定义 DNS 服务器否则无法进行名称解析。enableDnsHostnames(默认:false,默认 VPC 为 true)是为具有公有 IP 地址的实例自动分配 DNS 主机名的设置。如果不启用此设置,VPC Peering 和 PrivateLink 的 DNS 解析可能无法正常工作。