保护和查看 DNS 流量

本文介绍如何在Azure DNS中使用 DNS 解析程序策略在虚拟网络中查看和筛选 DNS 流量。

先决条件

  • 如果没有 Azure 订阅,可在开始前创建一个试用帐户
  • 虚拟网络是必需的。 有关详细信息,请参阅创建虚拟网络

创建解析器策略

请选择以下方法之一,使用 Azure 门户或 PowerShell 创建解析器策略:

通过使用 Azure 门户创建 DNS 解析策略:

  1. 在 Azure 门户页,搜索并选择 DNS Resolver 策略。 你也可以从Azure 市场选择DNS解析器策略

  2. 选择“+ 创建”以开始创建新策略。

  3. 在“基本信息”选项卡上,选择“订阅”和“资源组”,或创建新的资源组。

  4. 在实例 名称旁边输入DNS解析器策略的名称,然后选择解析器策略适用的 区域

    注释

    你只能将 DNS 解析程序策略应用于与该策略位于同一区域的虚拟网络(VNet)。

    解析器策略基础标签的截图。

  5. 选择“下一步:虚拟网络链接”,然后选择“+ 添加”

  6. 显示与解析器策略相同区域的VNet。 选择一个或多个可用的 VNet,然后选择“添加”。 你不能选择已经关联到另一个解析器策略的VNet。 在以下示例中,两个VNet与一个解析器策略关联,留下两个VNet可供选择。

    解析器策略的虚拟网络 Links标签截图。

  7. 系统会显示所选的 VNet。 如果需要,可以在创建虚拟网络链接之前从列表中删除 VNet。

    屏幕截图:虚拟网络链接列表。

    注释

    无论是否选择虚拟网络链接,系统都会为列表中显示的所有 VNet 创建虚拟网络链接。 使用复选框选择要从列表中删除的 VNet。

  8. 选择“查看 + 创建”,然后选择“创建” 。 此步骤跳过 “下一步:DNS 流量规则”,但您也可以立即创建流量规则。 在本指南中,你创建流量规则和DNS域列表,并将它们应用到之后的DNS解析器策略中。

创建 Log Analytics 工作区

如果你已有要使用的 Log Analytics 工作区,请跳过本部分。

若要使用 Azure 门户创建 Log Analytics 工作区,请执行以下操作:

  1. 在 Azure 门户“首页”中,搜索并选择“Log Analytics 工作区”。 你也可以从 Azure 市场选择“Log Analytics 工作区”

  2. 选择“+ 创建”以开始创建新工作区。

  3. 在“基本信息”选项卡上,选择“订阅”和“资源组”,或创建新的资源组。

  4. 在“名称”旁边,输入工作区的名称,然后选择工作区所在的“区域”

    解析器策略的虚拟网络 Links列表截图。

  5. 选择“查看 + 创建”,然后选择“创建” 。

配置诊断设置

创建 Log Analytics 工作区后,在解析器策略中配置诊断设置以使用该工作区。

配置诊断设置:

  1. 选择你创建的DNS解析器策略(本例中为myeast-secpol )。

  2. 在“ 监视”下,选择“ 诊断设置”。

  3. 选择“添加诊断设置”。

  4. 在“诊断设置名称”旁边,输入此处收集的日志的名称。

  5. 在“日志”下和“指标”下,选择“所有”日志和指标。

  6. 在“目标详细信息”下,选择“发送到 Log Analytics 工作区”,然后选择创建的订阅和工作区。

  7. 选择“保存”。 请参阅以下示例。

    解析器策略的诊断设置截图。

创建 DNS 域列表

若要使用 Azure 门户创建 DNS 域列表,请执行以下操作:

  1. 在 Azure 门户“主页”上,搜索并选择“DNS 域列表”

  2. 选择“+ 创建”以开始创建新的域列表。

  3. 在“基本信息”选项卡上,选择“订阅”和“资源组”,或创建新的资源组。

  4. 域名列表名称旁边输入域名列表名称,然后选择列表的 地区

    注释

    解析器策略要求在同一区域内有域列表。

  5. 选择“下一步:DNS 域”

  6. 在“DNS 域”选项卡上,一次手动输入一个域名,或从逗号分隔值 (CSV) 文件导入这些域名。

    屏幕截图:创建 DNS 域列表。

  7. 完成输入域名后,选择“查看 + 创建”,然后选择“创建”

重复本部分操作以根据需要创建更多域列表。 每个域列表都可关联到具有以下三个操作之一的流量规则:

  • 允许:允许 DNS 查询并记录该查询。
  • 阻止:阻止 DNS 查询并记录阻止操作。
  • 警报:允许 DNS 查询并记录警报。

可以动态添加或删除单个 DNS 流量规则中的多个域列表。

配置 DNS 流量规则

现在你有了DNS域列表,在解析器策略中配置诊断设置以使用该工作区。

注释

将检查(“追踪”)CNAME 链,以确定是否要应用与域关联的流量规则。 例如,适用于 malicious.contoso.com 的规则同样适用于 adatum.com(如果 adatum.com 映射到 malicious.contoso.com,或者 malicious.contoso.com 出现在 adatum.com 的 CNAME 链中的任何位置)

配置诊断设置:

  1. 选择你创建的DNS解析器策略(本例中为myeast-secpol )。

  2. 在“设置”下,选择“DNS 流量规则”

  3. 选择 + 添加。 此时系统会打开“添加 DNS 流量规则”窗格。

  4. 在“优先级”旁边,输入 100-65000 范围内的值。 系统会优先应用数字较小规则。

  5. 在“规则名称”旁边,输入规则的名称。

  6. 在“DNS 域列表”旁边,选择要在此规则中使用的域列表。

  7. 在“流量操作”旁边,根据要应用于所选域的操作类型,选择“允许”、“阻止”或“警报”。 在本示例中,我们选择“允许”

  8. 将默认的“规则状态”保留为“已启用”,然后选择“保存”

    屏幕截图:创建 DNS 流量规则。

  9. 刷新视图以验证是否已成功添加规则。 你可以编辑流量操作、DNS 域列表、规则优先级和规则状态。

    屏幕截图:DNS 流量规则。

查看和测试 DNS 日志

  1. 前往您的 DNS 解析器策略。 在“ 监视”下,选择“ 诊断设置”。
  2. 选择你之前关联到解析器策略的Log Analytics工作区(本例中为secpol-loganalytics)。
  3. 选择左侧的“日志”
  4. 若要查看同一区域中 IP 地址为 10.40.40.4 的虚拟机的 DNS 查询,请运行如下所示的查询:
DNSQueryLogs
| where SourceIpAddress contains "10.40.40.4"
| limit 1000

请参阅以下示例:

屏幕截图:Log Analytics 查询示例。

回想一下,我们已将包含 contoso.com 的流量规则设置为“允许”查询。 来自虚拟机的查询会促成成功响应:

C:\>dig db.sec.contoso.com +short
10.0.1.2

展开 Log Analytics 中的查询详细信息会显示如下数据:

  • 操作名称:RESPONSE_SUCCESS
  • 区域: chinaeast2
  • QueryName:db.sec.contoso.com
  • QueryType:A
  • SourceIpAddress:10.40.40.4
  • 解析路径: PrivateDnsResolution
  • ResolverPolicyRuleAction:允许

如果流量规则已编辑并设置为“阻止”contoso.com 查询,则来自虚拟机的查询会导致响应失败。 请务必在更改规则的组件时选择“保存”

屏幕截图:编辑流量规则。

此更改会导致查询失败:


C:\>dig @168.63.129.16 db.sec.contoso.com
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> db.sec.contoso.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26872
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1224
; COOKIE: 336258f5985121ba (echoed)
;; QUESTION SECTION:
; db.sec.contoso.com. IN  A

;; ANSWER SECTION:
db.sec.contoso.com. 1006632960 IN CNAME blockpolicy.azuredns.invalid.

;; AUTHORITY SECTION:
blockpolicy.azuredns.invalid. 60 IN     SOA     ns1.azure-dns.cn. support.azure.com. 1000 3600 600 1800 60

;; Query time: 0 msec
;; SERVER: 168.63.129.16#53(168.63.129.16) (UDP)
;; WHEN: Mon Sep 08 11:06:59 UTC 2025
;; MSG SIZE  rcvd: 183

失败的查询会记录在 Log Analytics 中:

屏幕截图:失败的查询。

注释

查询结果可能需要几分钟才能显示在 Log Analytics 中。