在Windows Server 2016發佈的時候其實有些新功能加入,由於在國內大夥都關注公有云了,所以對於本地Windows Server新版本發佈就不是特別關注了,但國內用本地版的Windows Server用戶也很多,所以今天我在這裏結合老王寫過的《Windows Server 2016 DNS Policy Geo-Location 1》來更新一版Windows Server 2019在這裏的表現,個人環境是以下這樣的(整個都是工做組的系統,沒有域環境):web
在總部的這臺Windows Server 2019上我配置好了DHCP的成都和北京做用域shell
DNS上我加了2條A記錄windows
在中間的路由器服務器Win08R2Router我配置了DHCP中繼服務器
在成都站點,WinSrv08-Web01構建好了一個Web網站app
在北京站點,WinSrv08-Web02構建好了一個Web網站ide
成都站點有一臺客戶端WinVista01是能夠訪問到成都和北京的Web服務器的網站
北京站點有一臺客戶端WinVista02是能夠訪問到成都和北京的Web服務器的spa
最後我想達到的效果是:3d
成都站點的客戶端vista01訪問web.basehome.com.cn時能根據網段判別出應該訪問成都站點的web01服務器server
北京站點的客戶端vista02訪問web.basehome.com.cn時能根據網段判別出應該訪問北京站點的web02服務器
那麼接下來就開始幹吧,首先在WinSrv2019-DNS服務器上建立出DNS客戶端子網
以管理員方式運行Powershell
示例:
Add-DnsServerClientSubnet -Name "AmericaSubnet" -IPv4Subnet 192.0.0.0/24,182.0.0.0/24
Add-DnsServerClientSubnet -Name "EuropeSubnet" -IPv4Subnet 141.1.0.0/24,151.1.0.0/24
這裏根據個人環境執行:
Add-DnsServerClientSubnet -Name "ChengduSubnet" -IPv4Subnet 172.16.1.0/24
Add-DnsServerClientSubnet -Name "BeijingSubnet" -IPv4Subnet 192.168.1.0/24
接下來須要建立區域範圍,指定在basehome.com.cn的主區域內建立出成都和北京的2個邏輯地理區域
示例:
Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "DublinZoneScope"
Add-DnsServerZoneScope -ZoneName "contosogiftservices.com" -Name "AmsterdamZoneScope"
這裏根據個人環境執行:
Add-DnsServerZoneScope -ZoneName "basehome.com.cn" -Name "ChengduZoneScope"
Add-DnsServerZoneScope -ZoneName "basehome.com.cn" -Name "BeijingZoneScope"
接下來就須要在各自邏輯區域範圍內添加A記錄了
示例:
Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "×××w" -IPv4Address "151.1.0.1" -ZoneScope "DublinZoneScope」
Add-DnsServerResourceRecord -ZoneName "contosogiftservices.com" -A -Name "×××w" -IPv4Address "141.1.0.1" -ZoneScope "AmsterdamZoneScope"
這裏根據個人環境執行:
Add-DnsServerResourceRecord -ZoneName "basehome.com.cn" -A -Name "web" -IPv4Address "172.16.1.10" -ZoneScope "ChengduZoneScope"
Add-DnsServerResourceRecord -ZoneName "basehome.com.cn" -A -Name "web" -IPv4Address "192.168.1.10" -ZoneScope "BeijingZoneScope"
接下來就是建立DNS的策略了,在此期間須要規劃負載比例,也就是權重
好比我但願:
成都網段的客戶端請求訪問web.basehome.com.cn時成都web服務器承擔75%的訪問請求,北京web服務器承擔25%訪問請求,那麼我就執行:
Add-DnsServerQueryResolutionPolicy -Name "ChengduLBPolicy" -Action ALLOW -ClientSubnet "eq,ChengduSubnet" -ZoneScope "ChengduZoneScope,3;BeijingZoneScope,1" -ZoneName "basehome.com.cn" –ProcessingOrder 1
北京網段的客戶端請求訪問web.basehome.com.cn時北京web服務器承擔50%的訪問請求,成都web服務器承擔50%訪問請求,那麼我就執行:
Add-DnsServerQueryResolutionPolicy -Name "BeijingLBPolicy" -Action ALLOW -ClientSubnet "eq,BeijingSubnet" -ZoneScope "BeijingZoneScope,1;ChengduZoneScope,1" -ZoneName "basehome.com.cn" –ProcessingOrder 2
非成都和北京網段的客戶端請求訪問web.basehome.com.cn時成都web服務器承擔50%的訪問請求,北京web服務器承擔50%訪問請求,那麼我就執行:
Add-DnsServerQueryResolutionPolicy -Name "WorldWidePolicy" -Action ALLOW -FQDN "eq,*.basehome.com.cn" -ZoneScope "ChengduZoneScope,1;BeijingZoneScope,1" -ZoneName "basehome.com.cn" -ProcessingOrder 3
其中須要解釋的是-ProcessingOrder指的是策略的優先級順序;最後一條-FQDN "eq,*.basehome.com.cn"中表示容許對basehome.com.cn的域名進行查詢,EQ後面的值是or關係而NE後面的值是and關係,若是請求的是客戶子網(ClientSubnet)那麼與eq值之一匹配且與任何ne值不匹配則知足表達式規範,好比"EQ,NorthAmerica,Asia,NE,Europe",具體的能夠參看:https://docs.microsoft.com/zh-cn/previous-versions/windows/powershell-scripting/mt126273(v=wps.640);狀態也能夠有三種:ALLOW | DENY | IGNORE
在個人環境中爲了達到更好的效果,我將規劃爲:
成都網段的客戶端請求訪問web.basehome.com.cn時成都web服務器承擔100%的訪問請求:
Add-DnsServerQueryResolutionPolicy -Name "ChengduPolicy" -Action ALLOW -ClientSubnet "eq,ChengduSubnet" -ZoneScope "ChengduZoneScope,1" -ZoneName "basehome.com.cn" -ProcessingOrder 1
北京網段的客戶端請求訪問web.basehome.com.cn時北京web服務器承擔100%的訪問請求:
Add-DnsServerQueryResolutionPolicy -Name "BeijingPolicy" -Action ALLOW -ClientSubnet "eq,BeijingSubnet" -ZoneScope "BeijingZoneScope,1" -ZoneName "basehome.com.cn" -ProcessingOrder 2
非成都和北京網段的客戶端請求訪問web.basehome.com.cn時成都和北京的web服務器各承擔50%的訪問請求:
Add-DnsServerQueryResolutionPolicy -Name "WorldWidePolicy" -Action ALLOW -FQDN "eq,*.basehome.com.cn" -ZoneScope "ChengduZoneScope,1;BeijingZoneScope,1" -ZoneName "basehome.com.cn" -ProcessingOrder 3
最後到Winvista01客戶端驗證下
到WinVista02客戶端驗證下
整個過程只能經過Powershell完成,而且沒法在執行後再DNS控制檯查看到任何變化,所以若是要查詢剛纔作過的DNS客戶端子網,區域範圍,以及DNS策略,也只能經過Powershell來查詢,修改刪除。
若是想查看官方的介紹能夠參看:https://docs.microsoft.com/zh-cn/windows-server/networking/dns/deploy/app-lb-geo