Azure 防火墙 DNS 设置

可以为 Azure 防火墙配置自定义 DNS 服务器并启用 DNS 代理。 可以在部署防火墙时配置这些设置,或者以后从“DNS 设置”页进行配置。 默认情况下,Azure 防火墙使用 Azure DNS,而 DNS 代理已禁用。

DNS 服务器

DNS 服务器维护域名并将它解析为 IP 地址。 默认情况下,Azure 防火墙将 Azure DNS 用于名称解析。 通过“DNS 服务器”设置,你可以配置自己的 DNS 服务器来用于 Azure 防火墙名称解析。 你可以配置一台服务器或多台服务器。 如果配置多个 DNS 服务器,则会随机选择所使用的服务器。 最多可在“自定义 DNS”中配置 15 个 DNS 服务器。

注意

对于使用 Azure 防火墙管理器管理的 Azure 防火墙实例,DNS 设置是在关联的 Azure 防火墙策略中配置的。

配置自定义 DNS 服务器

门户

  1. 在 Azure 防火墙的“设置”下,选择“DNS 设置” 。
  2. 在“DNS 服务器”下,可以键入或添加之前在虚拟网络中指定的现有 DNS 服务器
  3. 选择“应用”。

防火墙现在将 DNS 流量定向到指定的 DNS 服务器以进行名称解析。

屏幕截图显示了 DNS 服务器的设置。

配置自定义 DNS 服务器 - Azure CLI

以下示例使用 Azure CLI 更新具有自定义 DNS 服务器的 Azure 防火墙。

az network firewall update \
    --name fwName \ 
    --resource-group fwRG \
    --dns-servers 10.1.0.4 10.1.0.5

重要

az network firewall 命令要求安装 Azure CLI 扩展 azure-firewall。 可以使用 az extension add --name azure-firewall 命令来安装它。

配置自定义 DNS 服务器 - Azure PowerShell

以下示例使用 Azure PowerShell 更新具有自定义 DNS 服务器的 Azure 防火墙。

$dnsServers = @("10.1.0.4", "10.1.0.5")
$azFw = Get-AzFirewall -Name "fwName" -ResourceGroupName "fwRG"
$azFw.DNSServer = $dnsServers

$azFw | Set-AzFirewall

DNS 代理

可以对 Azure 防火墙进行配置来充当 DNS 代理。 DNS 代理是从客户端虚拟机到 DNS 服务器的 DNS 请求的中介。

如果要在网络规则中启用 FQDN(完全限定的域名)筛选,请启用 DNS 代理并更新虚拟机配置,以将防火墙用作 DNS 代理。

使用自定义 DNS 服务器的 DNS 代理配置。

如果在网络规则中启用 FQDN 筛选,并且未将客户端虚拟机配置为使用防火墙作为 DNS 代理,则来自这些客户端的 DNS 请求可能会在不同的时间到达 DNS 服务器,或者返回与防火墙不同的响应。 建议将客户端虚拟机配置为使用 Azure 防火墙作为 DNS 代理。 此步骤将 Azure 防火墙放置在客户端请求的路径中,以避免不一致。

当 Azure 防火墙是 DNS 代理时,可以使用两种缓存函数类型:

  • 积极缓存:DNS 解析成功。 防火墙会根据响应中的 TTL(生存时间)将这些响应缓存最长 1 小时。

  • 消极缓存:DNS 解析不返回响应,或者不进行解析。 防火墙会根据响应中的 TTL 将这些响应缓存最长 30 分钟。

DNS 代理将存储网络规则中的 FQDN 的所有已解析的 IP 地址。 最佳做法是使用可解析为一个 IP 地址的 FQDN。

策略继承

应用于独立防火墙的策略 DNS 设置替代独立防火墙的 DNS 设置。 子策略继承所有父策略 DNS 设置,但可以替代父策略。

例如,若要在网络规则中使用 FQDN,应启用 DNS 代理。 但是,如果父策略“未”启用 DNS 代理,则子策略将不支持网络规则中的 FQDN,除非在本地替代此设置。

DNS 代理配置

配置 DNS 代理需要三个步骤:

  1. 在 Azure 防火墙 DNS 设置中启用 DNS 代理。
  2. (可选)配置自定义 DNS 服务器或使用提供的默认设置。
  3. 在虚拟网络 DNS 服务器设置中将 Azure 防火墙的专用 IP 地址配置为自定义 DNS 地址。 此设置可确保 DNS 流量定向到 Azure 防火墙。

若要配置 DNS 代理,必须将你的虚拟网络 DNS 服务器设置配置为使用防火墙专用 IP 地址。 然后在 Azure 防火墙的“DNS 设置”中启用 DNS 代理。

配置虚拟网络 DNS 服务器
  1. 选择 DNS 流量将通过 Azure 防火墙实例路由到的虚拟网络。
  2. 在“设置”下,选择“DNS 服务器”。
  3. 在“DNS 服务器”下,选择“自定义”。
  4. 输入防火墙的专用 IP 地址。
  5. 选择“保存” 。
  6. 重启已连接到虚拟网络的 VM,以便为其分配新的 DNS 服务器设置。 VM 在重启之前,将继续使用其当前 DNS 设置。
启用 DNS 代理
  1. 选择你的 Azure 防火墙实例。
  2. 在“设置”下,选择“DNS 设置” 。
  3. 默认情况下,“DNS 代理”已禁用。 启用此设置后,防火墙会在端口 53 上进行侦听,并将 DNS 请求转发到配置的 DNS 服务器。
  4. 查看“DNS 服务器”配置以确保设置适用于你的环境。
  5. 选择“保存”。

屏幕截图显示了 DNS 代理的设置。

配置 DNS 代理 - Azure CLI

你可以使用 Azure CLI 在 Azure 防火墙中配置 DNS 代理设置。 你还可以使用它来更新虚拟网络,以使用 Azure 防火墙作为 DNS 服务器。

配置虚拟网络 DNS 服务器

下面的示例将虚拟网络配置为使用 Azure 防火墙作为 DNS 服务器。

az network vnet update \
    --name VNetName \ 
    --resource-group VNetRG \
    --dns-servers <firewall-private-IP>
启用 DNS 代理

以下示例在 Azure 防火墙中启用 DNS 代理功能。

az network firewall update \
    --name fwName \ 
    --resource-group fwRG \
    --enable-dns-proxy true

配置 DNS 代理 - Azure PowerShell

你可以使用 Azure PowerShell 在 Azure 防火墙中配置 DNS 代理设置。 你还可以使用它来更新虚拟网络,以使用 Azure 防火墙作为 DNS 服务器。

配置虚拟网络 DNS 服务器

下面的示例将虚拟网络配置为使用 Azure 防火墙作为 DNS 服务器。

$dnsServers = @("<firewall-private-IP>")
$VNet = Get-AzVirtualNetwork -Name "VNetName" -ResourceGroupName "VNetRG"
$VNet.DhcpOptions.DnsServers = $dnsServers

$VNet | Set-AzVirtualNetwork
启用 DNS 代理

以下示例在 Azure 防火墙中启用 DNS 代理功能。

$azFw = Get-AzFirewall -Name "fwName" -ResourceGroupName "fwRG"
$azFw.DNSEnableProxy = $true

$azFw | Set-AzFirewall

高可用性故障转移

DNS 代理具有一种故障转移机制,该机制停止使用检测到的不正常的服务器,并使用另一个可用的 DNS 服务器。

如果所有 DNS 服务器都不可用,则不会回退到另一个 DNS 服务器。

运行状况检查

只要上游服务器报告运行不正常,DNS 代理就会执行五秒钟的运行状况检查循环。 运行状况检查是对根名称服务器进行递归 DNS 查询。 上游服务器被视为正常后,防火墙将停止运行状况检查,直至出现下一个错误。 当正常代理返回错误时,防火墙会在列表中选择另一个 DNS 服务器。

后续步骤