Azure 防火牆 DNS 設定

您可以為 Azure 防火牆設定自訂 DNS 伺服器並啟用 DNS Proxy。 請在部署防火牆時進行這些設定,或稍後從 [DNS 設定] 頁面進行設定。 根據預設,Azure 防火牆會使用 Azure DNS 並停用 DNS Proxy。

DNS 伺服器

DNS 伺服器會維護網域名稱並將其解析為 IP 位址。 根據預設,Azure 防火牆會使用 Azure DNS 來解析名稱。 DNS 伺服器設定可讓您設定自己的 DNS 伺服器來用於 Azure 防火牆名稱解析。 您可以設定單一伺服器或多部伺服器。 如果您設定多部 DNS 伺服器,則會隨機選擇使用的伺服器。 您可以在自訂 DNS 中設定最多 15 部 DNS 伺服器。

注意

對於使用 Azure 防火牆管理員管理的 Azure 防火牆執行個體,DNS 設定會在相關聯的 Azure 防火牆原則中設定。

設定自訂 DNS 伺服器 - Azure 入口網站

  1. 在 Azure 防火牆的 [設定] 底下,選取 [DNS 設定]
  2. 在 [DNS 伺服器] 底下,您可以輸入或新增先前在虛擬網路中指定的現有 DNS 伺服器。
  3. 選取套用

防火牆現在會將 DNS 流量導向指定的 DNS 伺服器,以進行名稱解析。

Screenshot showing settings for D N S servers.

設定自訂 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 Proxy

您可以將Azure 防火牆設定為 DNS Proxy 的角色。 DNS Proxy 是從用戶端虛擬機器對 DNS 伺服器發出 DNS 要求的媒介。

如果您想要在網路規則中啟用 FQDN (完整網域名稱) 篩選,請啟用 DNS Proxy 並更新虛擬機器設定,以使用防火牆作為 DNS Proxy。

D N S proxy configuration using a custom D N S server.

如果您在網路規則中啟用 FQDN 篩選,並且未將用戶端虛擬機器設定為使用防火牆作為 DNS Proxy,則來自這些用戶端的 DNS 要求可能會在不同的時間傳送至 DNS 伺服器,或傳回與防火牆不同的回應。 建議將用戶端虛擬機器設定為使用 Azure 防火牆作為其 DNS Proxy。 這會將 Azure 防火牆放在用戶端要求的路徑中,以避免不一致的情形。

當 Azure 防火牆是 DNS Proxy 時,可能會有兩種快取函式類型:

  • 正快取:DNS 解析成功。 防火牆會根據回應中的 TTL (存留時間) 快取這些回應 (最多 1 小時)。

  • 負快取:DNS 解析結果是沒回應或沒有解析。 防火牆會根據回應中的 TTL 快取這些回應 (最多 30 分鐘)。

DNS Proxy 會將來自 FQDN 的所有已解析 IP 位址儲存在網路規則中。 最佳做法是使用解析為一個 IP 位址的 FQDN。

原則繼承

套用至獨立防火牆的原則 DNS 設定會覆寫獨立防火牆的 DNS 設定。 子原則會繼承所有父原則 DNS 設定,但可以覆寫父原則。

例如,若要在網路規則中使用 FQDN,則應該啟用 DNS Proxy。 但是,如果父原則啟用 DNS Proxy,則您必須在本機覆寫此設定,否則子原則不支援在網路規則中使用 FQDN。

DNS Proxy 設定

DNS Proxy 設定需要三個步驟:

  1. 在 Azure 防火牆 DNS 設定中啟用 DNS Proxy。
  2. 選擇性地設定自訂 DNS 伺服器,或使用提供的預設值。
  3. 在虛擬網路 DNS 伺服器設定中,將 Azure 防火牆私人 IP 位址設定為自訂 DNS 位址。 此設定可確保 DNS 流量會導向 Azure 防火牆。

設定 DNS Proxy - Azure 入口網站

若要設定 DNS Proxy,您必須設定虛擬網路 DNS 伺服器設定以使用防火牆私人 IP 位址。 然後在 Azure 防火牆的 DNS 設定中啟用 DNS Proxy。

設定虛擬網路 DNS 伺服器
  1. 選取將透過 Azure 防火牆執行個體路由 DNS 流量的虛擬網路。
  2. 選取 [設定] 底下的 [DNS 伺服器]
  3. 選取 [DNS 伺服器] 底下的 [自訂]
  4. 輸入防火牆的私人 IP 位址。
  5. 選取 [儲存]。
  6. 將連線到虛擬網路的 VM 重新啟動,讓這些 VM 獲派新的 DNS 伺服器設定。 這些 VM 會繼續使用其目前的 DNS 設定,直到您將其重新啟動。
啟用 DNS Proxy
  1. 選取您的 Azure 防火牆執行個體。
  2. 在 [設定] 下,選取 [DNS 設定]
  3. 根據預設,DNS Proxy 會處於停用狀態。 啟用此設定後,防火牆會在連接埠 53 上接聽,並將 DNS 要求轉送至設定的 DNS 伺服器。
  4. 檢閱 DNS 伺服器設定,以確定這些設定適用於您的環境。
  5. 選取 [儲存]。

Screenshot showing settings for the D N S proxy.

設定 DNS Proxy - Azure CLI

您可以使用 Azure CLI 在 Azure 防火牆中設定 DNS Proxy 設定。 也可以用來更新虛擬網路,以使用 Azure 防火牆作為 DNS 伺服器。

設定虛擬網路 DNS 伺服器

下列範例會將虛擬網路設定為使用 Azure 防火牆作為 DNS 伺服器。

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

下列範例會在 Azure 防火牆中啟用 DNS Proxy 功能。

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

設定 DNS Proxy - Azure PowerShell

您可以使用 Azure PowerShell 在 Azure 防火牆中設定 DNS Proxy 設定。 也可以用來更新虛擬網路,以使用 Azure 防火牆作為 DNS 伺服器。

設定虛擬網路 DNS 伺服器

下列範例會將虛擬網路設定為使用 Azure 防火牆作為 DNS 伺服器。

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

$VNet | Set-AzVirtualNetwork
啟用 DNS Proxy

下列範例會在 Azure 防火牆中啟用 DNS Proxy 功能。

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

$azFw | Set-AzFirewall

高可用性容錯移轉

DNS Proxy 具有容錯移轉機制,可停止使用偵測到狀況不良的伺服器,並使用另一部可用的 DNS 伺服器。

如果所有 DNS 伺服器都無法使用,則不會退回到另一部 DNS 伺服器。

健康狀態檢查

只要上游伺服器回報為狀況不良,DNS Proxy 就會執行五秒的健康狀態檢查迴圈。 健康狀態檢查是以根名稱伺服器為目標的遞迴 DNS 查詢。 一旦上游伺服器的狀況良好之後,防火牆就會停止健康狀態檢查,直到發生下一個錯誤。 當狀況良好的 Proxy 傳回錯誤時,防火牆就會在清單中選取另一部 DNS 伺服器。

下一步