Windows Server 2016 DNS Policy Geo-Location 1

     隨着信息技術的不斷髮展,人們對於IT基礎架構的要求也越高,開始要求提供快速交付,批量部署,數據分析,網絡虛擬化等新需求,各大廠商也針對自己的產品進行不斷地完善,DNS最開始在Windows Server上面只是提供最簡單的域名解析,緩存,轉發等功能,後來越來越完善,到了2008時代新增了DNSSEC,單標域,名稱保護等新功能,使DNS更加安全規範化,Windows Server 2016上面,DNS新增了在作者看來非常不錯的功能,DNS policy,近日測試了許多裏面的新功能,甚是爲之驚豔,作者甚至認爲這項功能將Windows Server上面的DNS提升到了“ 基本智能化 ”的程度,決定分享給大家

    在接下來幾篇文章中,老王將通過搭建環境,實際操作的方式,爲大家導入DNS新功能DNS policy的使用方法,使用場景,希望能爲大家拋磚引玉。


  開篇第一章,作者將介紹2016 DNS policy裏面基於地理位置進行隔離流量訪問,我將設計一個場景,假設Contoso是一家圖書公司,分別在大連和威海設有分公司,公司有一個辦公網站,大連和威海的員工都需要訪問,在以前是通過DNS輪詢實現負載均衡,有時候經常大連的人訪問到了威海的服務器,導致出現訪問延遲,在Windows Server 2016裏面將通過DNS地域隔離技術,實現檢查到來自大連的客戶端就分流到大連的服務器,威海的客戶端訪問就分流到威海的服務器,很神奇有沒有,以前的Windows Server DNS要實現這樣的功能是非常困難的,現在自身就可以實現了


實驗環境介紹


16DNS:承擔DNS服務器,設置在公司總部  IP地址:100.0.0.2  GW:100.0.0.1

Web01:承擔大連的Web服務器,同時也承擔連接總部DNS,威海客戶端,大連客戶端的路由器

IP地址1:80.0.0.1 

IP地址2:90.0.0.1

IP地址3:100.0.0.1 DNS 100.0.0.2

Web02:承擔威海的Web服務器,假設在威海DC,IP地址:90.0.0.2 GW:90.0.0.1

dalian:模仿大連客戶端 IP地址:80.0.0.100 GW:80.0.0.1 DNS : 100.0.0.2

weihai:模仿威海客戶端 IP地址:90.0.0.100 GW:90.0.0.1 DNS:100.0.0.2


老王已經做好了網頁,分別放在Web01和Web02上面,訪問不同的服務器可以看到不同的網頁內容


注:Web01雖然具備三個IP地址,但是筆者已經在IIS上面綁定了80.0.0.1,即只有輸入80.0.0.1纔可以訪問到Web01的網站內容


開始做之前,我們先來看一下重要的新概念


  1. DnsServerClientSubnet 

  2. DnsServerZoneScope


這兩個命令是之前沒有的,也是要實現DNS邏輯地理範圍隔離的關鍵


要實現地域隔離,首先要先創建DnsServerClientSubnet 

也就是說,你要先告訴DNS,那一段子網是屬於大連的客戶端,那一段子網是屬於威海的客戶端,你告訴了DNS之後,他才知道以後該怎麼判斷轉發請求


子網創建好了,我們還需要創建DnsServerZoneScope,這裏是核心中的核心,我們需要在一個DNS區域裏面創建出來多個邏輯的地理區域,一定要理解這個概念,例如,現在有個DNS主區域叫eip.com,OK,我們就要在eip.com這個區域裏面再劃分出來邏輯地理範圍,比如需要創建一個大連區域,一個威海區域,這樣做了之後,就實現了同一個DNS主區域下面,包括了多個地理區域。


上一步我們創建的邏輯地理區域,主要用來包含主機記錄,串起來做Policy 判斷使用,例如我們創建了邏輯地理區域dalian,接着我們就需要創建大連Web服務器的主機記錄,在創建主機記錄過程中,最主要的一步就是指定-ZoneScope,指定了這個參數之後創建出來的這個主機記錄就會綁定在這個地理區域內,之後創建策略,只有策略中指定的子網範圍內客戶端可以訪問對應的“包括地理區域的主機記錄”


調料放好了,下面該上主菜了,最關鍵的三步準備好了之後,我們需要創建一個policy,來把這三個東西包起來,再定義出來判斷及轉發條件,告訴DNS,那些客戶端來了,他們是屬於哪個地理區域的,這個地理區域應該由那臺服務器來提供服務。


OK,思路整理好了之後我們直接來進行操作


首先,來到16dns上面,打開powershell,執行命令,創建子網範圍



Add-DnsServerClientSubnet -Name "daliansubnet" -IPv4Subnet "80.0.0.0/24"

Add-DnsServerClientSubnet -Name "weihaisubnet" -IPv4Subnet "90.0.0.0/24"


詳細命令參數可以參考technet,如果同一個地理位置有很多個子網,可以在IPv4Subnet裏面用英文逗號隔開輸入


wKiom1kC-FHRIYMbAACd4vahWxo235.jpg


創建完成子網範圍後再來創建邏輯地理區域,執行命令


Add-DnsServerZoneScope -ZoneName "eip.com" -Name "dalian"  

Add-DnsServerZoneScope -ZoneName "eip.com" -Name "weihai"  


可以看到,上面的子網命令是在DnsServer級別定義的,這裏的邏輯地理區域劃分是在現有的DNS區域中進行定義


wKioL1kC-X6w2hz2AADSjGcUG98530.jpg

接下來關鍵的一步,添加主機記錄,起到決定性作用的就是新增的ZoneScope參數,如果不加這個參數那和以前我們在界面上新增DNS記錄沒區別,添加好了後隨機輪詢,添加了這個參數之後,就可以根據定義的邏輯地理區域進行流量隔離


Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "80.0.0.1" -ZoneScope "dalian"

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "90.0.0.2" -ZoneScope "weihai"

wKiom1kC-sXy3m4CAAFCRcYj8BU908.jpg

最後我們創建DNS查詢返回策略,也是重中之重,在這裏我們指定客戶端子網範圍,eq代表等於的意思,一旦客戶端子網等於已經定義好的範圍,即有對應區域內的主機記錄給予響應,Zone Scope參數後面有一個1,這個在之後的文章我們會多次用到,在本次場景中我們是一個完全的分流的場景,如果不完全分流,例如大連用戶百分之70訪問大連服務器,百分之30訪問威海服務器,這裏就可以定義,dalian,7;weihai3  ,我們寫1,代表大連客戶端訪問百分之百是由大連區域的主機記錄給予響應


Add-DnsServerQueryResolutionPolicy -Name "dalianPolicy" -Action ALLOW -ClientSubnet "eq,daliansubnet" -ZoneScope "dalian,1" -ZoneName "eip.com"  


Add-DnsServerQueryResolutionPolicy -Name "dalianPolicy" -Action ALLOW -ClientSubnet "eq,weihaisubnet" -ZoneScope "weihai,1" -ZoneName "eip.com"  


wKioL1kC_NGDV5T1AACu8Cxr-Zw715.jpg

登錄dalian客戶端,打開訪問www.eip.com,可以看到是大連的服務器內容


wKiom1kC_seztttwAAHo5TpO1BI726.jpg

運行nslookup,發現只能看到大連的Web主機迴應,如果在2016之前,我們創建了多個一樣的DNS主機記錄,是會看到所有輪詢主機的,這裏只看到大連的Web主機,說明我們定義的邏輯地理區域生效了。

wKioL1kC_sjw41FqAAFFTDDfpEo434.jpg

登錄weihai客戶端,打開訪問www.eip.com,可以看到是威海的服務器內容

wKioL1kC_8SjyRgUAAHohD8oUzg085.jpg

運行nslookup,發現只能看到威海的Web主機迴應

wKiom1kC_8XA0cYqAAGtrG4PyKU849.jpg

到這裏相信大家已經看懂這項功能了,作者相信這是項很實用的功能,和一些業內朋友聊天也都感覺是一項不錯的技術,開發測試的環境的隔離,跨地域之間的流量分流,甚至是網絡虛擬化場景下租戶隔離的場景,如果使用這個新功能,是不是就不用多搭建那麼多DNS Server了。


在使用過程中老王發現這項功能還是很方便,也沒什麼先決條件,你只需要一臺2016 Server上面裝DNS角色就可以了,可以是工作組或者域環境,對於客戶端版本沒有限制,至少目前發現2003,win7客戶端都沒問題。


在使用過程中老王發現三個值得注意的地方


  1. 使用命令創建的主機記錄,不會出現在DNS控制檯中,如果你簽發完創建主機記錄那條命令之後沒在Console看到,不要擔心,只要命令輸入正確就可以,這點希望後期微軟可以改善下

  2. 老王實際測試中文版2016 Server在刪除策略的時候會出現bug,已經創建好的dns policy會無法刪除,這點希望是我的操作失誤,大家可以試下

  3. 雖然我們實現了基於地理區域的主機記錄隔離,大連客戶端訪問大連服務器,威海客戶端訪問威海服務器,但是!老王親自測試,一旦按照文中方法做了,除了大連子網客戶端和威海子網客戶端之外,別的子網範圍客戶端將無法訪問這兩個主機記錄,因爲已經綁死了


    假設,你要實現不光僅僅做到不同地理區域客戶端的隔離訪問,還希望主機記錄在別的網段也可以訪問,那你需要再執行以下命令,通過這條命令創建出來的記錄,會出現在DNS管理控制檯中。


Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "80.0.0.1" 

Add-DnsServerResourceRecord -ZoneName "eip.com" -A -Name "www" -IPv4Address "90.0.0.2" 


這樣做了之後,凡是不在大連子網範圍和威海子網範圍的其它客戶端訪問,將使用輪詢的方式分別訪問大連和威海的服務器

wKiom1kDBMfBZF9mAABbrw7f3KM980.jpg

沒執行這兩條命令之前,在總部DNS ,網段100.0.0.0/24 nslookup提示無法解析www.eip.com
wKiom1kDBQGhRF8QAAAlrDNeVUE547.jpg

執行之後清理下dns緩存16dns再次執行nslookup,發現已經開始輪詢

wKiom1kDBT-gQ6QEAACNGi8VIp0142.jpg

第一篇到這裏也接近尾聲,由於環境有限,另外一種場景我沒有演示,如果你的環境夠大還可以實現,總部一臺16dns,大連和威海也分別部署一臺dns做區域傳送,這樣做了可以減輕DNS服務器的負擔,幫助本地客戶端更快的進行智能定位,實際使用時需要注意,大連和威海的DNS服務器,需要複製使用命令複製總部DNS的客戶端子網範圍,主機記錄,邏輯範圍,policy等數據


後續老王還將繼續連載2016 dns policy系列,包括分腦,應用負載均衡,基於時間的智能DNS定位等



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章