DNS 原則概觀
您可以使用本主題來了解 Windows Server 2016 中的新 DNS 原則。 您可以使用 DNS 原則進行地理位置型流量管理、根據一天中的時間進行智慧型 DNS 回應、管理針對拆分式部署設定的單一 DNS 伺服器、在 DNS 查詢上套用篩選等等。 下列項目會提供這些功能的詳細資料。
應用程式負載平衡。 當您在不同位置部署多個應用程式執行個體時,可以使用 DNS 原則來平衡不同應用程式執行個體之間的流量負載,動態分配應用程式的流量負載。
地理位置型流量管理。 您可以使用 DNS 原則讓主要和次要 DNS 伺服器根據用戶端的地理位置以及用戶端嘗試連線的資源來回應 DNS 用戶端查詢,提供最接近用戶端的資源 IP 位址。
拆分式 DNS。 使用拆分式 DNS 時,DNS 記錄會分割成相同 DNS 伺服器上的不同區域範圍,而 DNS 用戶端會根據用戶端是內部或外部用戶端來接收回應。 Active Directory 整合區域或獨立 DNS 伺服器上的區域都可以設定拆分式 DNS。
篩選。 您可以設定 DNS 原則以根據您提供的準則來建立查詢篩選。 DNS 原則中的查詢篩選可讓您根據傳送 DNS 查詢的 DNS 查詢和 DNS 用戶端,設定 DNS 伺服器要採取的自訂回應方式。
鑑識。 透過 DNS 原則可以將惡意 DNS 用戶端重新導向至不存在的 IP 位址,而不是導向到他們嘗試連線的電腦。
根據一天中的時間重新導向。 您可以使用 DNS 原則,使用以一天中的時間為基礎的 DNS 原則,將應用程式流量分散到應用程式不同地理位置的執行個體。
新概念
若要建立原則以支援上述案例,則必須能夠識別區域中的記錄群組、網路上的用戶端群組,以及其他元素。 這些元素是由下列新的 DNS 物件表示:
用戶端子網路:用戶端子網路物件代表 IPv4 或 IPv6 子網路,查詢會從中提交至 DNS 伺服器。 您可以建立子網路,以便稍後定義要根據要求來源子網路套用的原則。 例如,在拆分式 DNS 案例中,可以使用內部子網路中用戶端的內部 IP 位址,以及外部子網路中用戶端的不同 IP 位址來回應 www.microsoft.com 等名稱解析的要求。
遞迴範圍:遞迴範圍是控制 DNS 伺服器上遞迴之設定群組的唯一執行個體。 遞迴範圍包含轉寄站清單,並指定是否啟用遞迴。 DNS 伺服器可以有許多遞迴範圍。 DNS 伺服器遞迴原則可讓您選擇一組查詢的遞迴範圍。 如果 DNS 伺服器對特定查詢不具權威性,DNS 伺服器遞迴原則可讓您控制如何解析這些查詢。 您可以指定要使用的轉寄站,以及是否要使用遞迴。
區域範圍:DNS 區域可以有多個區域範圍,每個區域範圍都包含自己的一組 DNS 記錄。 相同的記錄可以存在於具有不同 IP 位址的多個範圍中。 此外,區域傳輸會在區域範圍層級完成。 這表示主要區域中區域範圍中的記錄將會傳輸到次要區域中的相同區域範圍。
原則類型
DNS 原則以層級和類型來區分。 您可以使用查詢解析原則來定義查詢的處理方式,以及使用區域傳輸原則來定義區域傳輸的發生方式。 您可以在伺服器層級或區域層級套用每個原則類型。
查詢解析原則
您可以使用 DNS 查詢解析原則來指定 DNS 伺服器如何處理傳入解析查詢。 每個 DNS 查詢解析原則都包含下列元素:
欄位 | 描述 | 可能值 |
---|---|---|
名稱 | 原則名稱 | - 最多 256 個字元 - 可包含任何有效檔案名稱的字元 |
州 (縣/市) | 原則狀態 | - 啟用 (預設值) - 已停用 |
等級 | 原則層級 | 伺服器- - 區域 |
處理順序 | 一旦查詢依層級分類並套用,伺服器就會尋找查詢符合準則的第一個原則並套用至查詢 | - 數值 - 每個原則包含相同層級且套用至值的唯一值 |
動作 | DNS 伺服器要執行的動作 | - 允許 (區域層級的預設值) - 拒絕 (伺服器層級的預設值) - 忽略 |
準則 | 要套用原則的原則條件 (AND/OR) 和準則清單 | - 條件運算子 (AND/OR) - 準則清單 (請參閱下方的準則表) |
範圍 | 每個範圍的區域範圍和加權值清單。 加權值用於負載平衡分配。 例如,如果這份清單包含加權為 3 的 datacenter1,而 datacenter2 的權數為 5,則伺服器會在 8 個要求中回應 datacentre1 的記錄三次 | - 區域範圍清單 (依名稱) 和權數 |
注意
伺服器層級原則只能有值 Deny 或 Ignore 作為動作。
DNS 原則準則欄位是由兩個元素所組成:
名稱 | 描述 | 範例值 |
---|---|---|
用戶端子網路 | 預先定義的用戶端子網路名稱。 用來驗證查詢傳送來源的子網路。 | - EQ,Spain,France - 如果子網路識別為西班牙或法國,則解析為 true - NE,Canada,Mexico - 如果用戶端子網路是加拿大和墨西哥以外的任何子網路,則解析為 true |
傳輸通訊協定 | 查詢中使用的傳輸通訊協定。 可能的項目為 UDP 和 TCP | - EQ,TCP - EQ,UDP |
網際網路通訊協定 | 查詢中使用的網路通訊協定。 可能的項目為 IPv4 和 IPv6 | - EQ,IPv4 - EQ,IPv6 |
伺服器介面 IP 位址 | 傳入 DNS 伺服器網路介面的 IP 位址 | - EQ,10.0.0.1 - EQ,192.168.1.1 |
FQDN | 查詢中記錄的 FQDN,可能會使用萬用字元 | - EQ,www.contoso.com - 只有在查詢嘗試解析 www.contoso.com FQDN 時,才會解析為 true - EQ,*.contoso.com,*.woodgrove.com - 如果查詢是針對以 contoso.com 或 woodgrove.com 結尾的任何記錄,則解析為 true |
查詢類型 | 正在查詢的記錄類型 (A、SRV、TXT) | - EQ,TXT,SRV - 如果查詢要求 TXT 或 SRV 記錄,則解析為 true - EQ,MX - 如果查詢要求 MX記錄,則解析為 true |
一天中的時間 | 收到查詢的一天中時間 | - EQ,10:00-12:00,22:00-23:00 - 如果查詢在上午 10 點到中午之間,或在下午 10 點到下午 11 點之間收到,則解析為 true |
使用上述表格作為起點,下表可用來定義準則,用來比對任何記錄類型的查詢,但 contoso.com 網域中來自 10.0.0.0/24 子網路中用戶端的 SRV 記錄會透過 TCP 在 8 點到下午 10 點之間經過介面 10.0.0.3:
名稱 | 值 |
---|---|
用戶端子網路 | EQ,10.0.0.0/24 |
傳輸通訊協定 | EQ,TCP |
伺服器介面 IP 位址 | EQ,10.0.0.3 |
FQDN | EQ,*.contoso.com |
查詢類型 | NE,SRV |
一天中的時間 | EQ,20:00-22:00 |
您可以建立相同層級的多個查詢解析原則,只要它們有不同的處理順序值即可。 當有多個原則可用時,DNS 伺服器會以下列方式處理傳入查詢:
遞迴原則
遞迴原則是特殊類型的伺服器層級原則。 遞迴原則會控制 DNS 伺服器對查詢執行遞迴的方式。 只有在查詢處理到達遞迴路徑時,才會套用遞迴原則。 您可以針對一組查詢的遞迴選擇值 DENY 或 IGNORE。 或者,您可以針對一組查詢選擇轉寄站。
您可以使用遞迴原則來實作拆分式 DNS 設定。 在此設定中,DNS 伺服器會針對查詢的一組用戶端執行遞迴,而 DNS 伺服器不會針對該查詢的其他用戶端執行遞迴。
遞迴原則包含一般 DNS 查詢解析原則所包含的相同元素,以及下表中的元素:
名稱 | 描述 |
---|---|
遞迴時套用 | 指定此原則只應該用於遞迴。 |
遞迴範圍 | 遞迴範圍的名稱。 |
注意
遞迴原則只能在伺服器層級建立。
區域傳輸原則
區域傳輸原則可控制 DNS 伺服器是否允許區域傳輸。 您可以在伺服器層級或區域層級建立區域傳輸原則。 伺服器層級原則會套用至 DNS 伺服器上發生的每個區域傳輸查詢。 區域層級原則僅套用於 DNS 伺服器上所裝載區域的查詢。 區域層級原則最常見的用途是實作封鎖或安全清單。
注意
區域傳輸原則只能使用 DENY 或 IGNORE 作為動作。
您可以使用下列伺服器層級區域傳輸原則,以拒絕來自指定子網路 contoso.com 網域的區域傳輸:
Add-DnsServerZoneTransferPolicy -Name DenyTransferOfContosoToFabrikam -Zone contoso.com -Action DENY -ClientSubnet "EQ,192.168.1.0/24"
您可以建立相同層級的多個區域傳輸原則,只要它們有不同的處理順序值即可。 當有多個原則可用時,DNS 伺服器會以下列方式處理傳入查詢:
管理 DNS 原則
您可以使用 PowerShell 建立和管理 DNS 原則。 下列範例會逐步解說您可以透過 DNS 原則設定的不同範例案例:
流量管理
您可以根據 DNS 用戶端的位置,根據 FQDN 將流量導向至不同的伺服器。 下列範例示範如何建立流量管理原則,將客戶從特定子網路導向至北美洲資料中心,以及從另一個子網路導向至歐洲資料中心。
Add-DnsServerClientSubnet -Name "NorthAmericaSubnet" -IPv4Subnet "172.21.33.0/24"
Add-DnsServerClientSubnet -Name "EuropeSubnet" -IPv4Subnet "172.17.44.0/24"
Add-DnsServerZoneScope -ZoneName "Contoso.com" -Name "NorthAmericaZoneScope"
Add-DnsServerZoneScope -ZoneName "Contoso.com" -Name "EuropeZoneScope"
Add-DnsServerResourceRecord -ZoneName "Contoso.com" -A -Name "www" -IPv4Address "172.17.97.97" -ZoneScope "EuropeZoneScope"
Add-DnsServerResourceRecord -ZoneName "Contoso.com" -A -Name "www" -IPv4Address "172.21.21.21" -ZoneScope "NorthAmericaZoneScope"
Add-DnsServerQueryResolutionPolicy -Name "NorthAmericaPolicy" -Action ALLOW -ClientSubnet "eq,NorthAmericaSubnet" -ZoneScope "NorthAmericaZoneScope,1" -ZoneName "Contoso.com"
Add-DnsServerQueryResolutionPolicy -Name "EuropePolicy" -Action ALLOW -ClientSubnet "eq,EuropeSubnet" -ZoneScope "EuropeZoneScope,1" -ZoneName contoso.com
指令碼的前兩行會建立北美洲和歐洲的用戶端子網路物件。 之後的兩行會在 contoso.com 網域內建立區域範圍,每個區域各一個。 之後的兩行會在每個區域中建立記錄,讓 www.contoso.com 與不同的 IP 位址建立關聯,一個用於歐洲,另一個用於北美洲。 最後,指令碼的最後一行會建立兩個 DNS 查詢解析原則,一個套用至北美洲子網路,另一個套用至歐洲子網路。
封鎖網域的查詢
您可以使用 DNS 查詢解析原則來封鎖對網域的查詢。 下列範例會封鎖所有對 treyresearch.net 的查詢:
Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicy" -Action IGNORE -FQDN "EQ,*.treyresearch.com"
封鎖來自子網路的查詢
您也可以封鎖來自特定子網路的查詢。 下列指令碼會建立 172.0.33.0/24 的子網路,然後建立原則來忽略來自該子網路的所有查詢:
Add-DnsServerClientSubnet -Name "MaliciousSubnet06" -IPv4Subnet 172.0.33.0/24
Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicyMalicious06" -Action IGNORE -ClientSubnet "EQ,MaliciousSubnet06"
允許內部用戶端的遞迴
您可以使用 DNS 查詢解析原則來控制遞迴。 下列範例可用來啟用內部用戶端的遞迴,同時針對拆分式案例中的外部用戶端停用它。
Set-DnsServerRecursionScope -Name . -EnableRecursion $False
Add-DnsServerRecursionScope -Name "InternalClients" -EnableRecursion $True
Add-DnsServerQueryResolutionPolicy -Name "SplitBrainPolicy" -Action ALLOW -ApplyOnRecursion -RecursionScope "InternalClients" -ServerInterfaceIP "EQ,10.0.0.34"
指令碼中的第一行會變更預設遞迴範圍,僅命名為「.」(點) 以停用遞迴。 第二行會建立名為 InternalClients 且已啟用遞迴的遞迴範圍。 第三行會建立原則,以將新建立的遞迴範圍套用至透過具有 10.0.0.34 作為 IP 位址之伺服器介面傳入的任何查詢。
建立伺服器層級區域傳輸原則
您可以使用 DNS 區域傳輸原則,以更細微的形式控制區域傳輸。 下列範例指令碼可用來允許指定子網路上任何伺服器的區域傳輸:
Add-DnsServerClientSubnet -Name "AllowedSubnet" -IPv4Subnet 172.21.33.0/24
Add-DnsServerZoneTransferPolicy -Name "NorthAmericaPolicy" -Action IGNORE -ClientSubnet "ne,AllowedSubnet"
指令碼中的第一行會使用 IP 區塊 172.21.33.0/24 建立名為 AllowedSubnet 的子網路物件。 第二行會建立區域傳輸原則,以允許區域傳輸至先前所建立子網路上的任何 DNS 伺服器。
建立區域層級區域傳輸原則
您也可以建立區域層級區域傳輸原則。 下列範例會忽略來自 IP 位址為 10.0.0.33 之伺服器介面中 contoso.com 區域傳輸的任何要求:
Add-DnsServerZoneTransferPolicy -Name "InternalTransfers" -Action IGNORE -ServerInterfaceIP "eq,10.0.0.33" -PassThru -ZoneName "contoso.com"
DNS 原則案例
如需有關如何針對特定案例使用 DNS 原則的資訊,請參閱本指南中的下列主題。
- 透過主要伺服器使用地理位置流量管理的 DNS 原則
- 透過主要-次要部署使用地理位置流量管理的 DNS 原則
- 使用 DNS 原則以時間為基礎進行智慧型 DNS 回應
- 使用 Azure 雲端應用程式伺服器以時間為基礎的 DNS 回應
- 使用適合拆分式 DNS 部署的 DNS 原則
- 在 Active Directory 中使用適合拆分式 DNS 的 DNS 原則
- 使用 DNS 原則進行 DNS 查詢上的篩選套用
- 使用 DNS 原則進行應用程式負載平衡
- 使用 DNS 原則進行具有地理位置感知的應用程式負載平衡
在唯讀網域控制站上使用 DNS 原則
DNS 原則與唯讀網域控制站相容。 請注意,需要重新啟動 DNS 伺服器服務,才能將新的 DNS 原則載入唯讀網域控制站上。 這在可寫入的網域控制站上並非必要。