1. 程式人生 > >Windows Server 2016 智能DNS(一)

Windows Server 2016 智能DNS(一)

包括 訪問服務器 fab 們的 準備 img 就會 解析 今天

說到智能DNS,作為一個IT人員來說並不陌生,但是一般都是第三方提供的,很少可以在本地實現,今天我們說說可以在本地實現配置智能DNS的解決方案,那就是Windows Server 2016下通過配置DNS Policy可以實現智能DNS解析,我們必須要重申一下,只有Windows Server 2016下的DNS才支持哦,Windows Server 2016已經發布很長時間了,所以今天我們對於Windows Server上DNS支持的功能我們做一下功能演示,首先介紹的是DNS Policy Geo-Location,言外之意就是通過DNS Policy裏面可以基於地域進行隔流量訪問,對於這個功能我們已經應用到了生產環境上,首先說說我們日常環境需求,我們公司的www站點,在中國有一臺服務器,美國有一臺服務器,兩臺服務器數據進行同步,在最初DNS中有兩條記錄同時指向不同的區域服務器,以前是通管局哦DNS輪詢機制實現負載及跳轉,有的時候中國用戶會訪問到美國服務器上,這樣就出現了訪問緩慢的現象,美國用戶訪問就會訪問到中國的服務器,以上問題給用戶體驗帶來很多困擾,但是在Windows server 2016裏面外面可以通過配置DNS Policy實現中國用戶訪問中國服務器,美國用戶訪問美國服務器,最終的結果是不是很神奇,對於這個神奇的功能,外面今天通過以下實現呈現給大家,如有總結不對的地方歡迎大家來交流。
註:需要註意的是,DNS Policy是針對於本地的,不能在全局環境中進行同步。所以我們需要在負責DNS解析的服務器上均需要配置Policy。
環境介紹:
Hostname:DC.ixmsoft.com
Roles:DC、DNS
IP:192.168.5.20
Hostname:Web1.ixmsoft.com
Roles:Web Server
IP:192.168.6.198
Location:China
Hostname:Web2.ixmsoft.com
Roles:Web Server
IP:192.168.7.198
Location:US
我們先確認兩臺WEB服務器的訪問內容:
首先是中國服務器
技術分享圖片
然後訪問美國服務器:
技術分享圖片
兩個區域的服務器準備好後,我們就可以要配置DNS Policy了,我們配置需要使用Powershell來進行配置,要實現地域隔離,首先要先創建DnsServerClientSubnet
也就是說,你要先告訴DNS,那一段子網是屬於北京的客戶端,哪一段子網是屬於美國的客戶端,你告訴了DNS之後,他才知道以後該怎麽判斷轉發請求
我們開始創建北京及美國的子網

Add-DnsServerClientSubnet -Name "beijingsubnet" -IPv4Subnet "192.168.6.0/24"
Add-DnsServerClientSubnet -Name "ussubnet" -IPv4Subnet "192.168.7.0/24"

技術分享圖片
創建完成後,我們可以查詢
Get-DnsServerClientSubnet
技術分享圖片
子網創建好了,我們還需要創建DnsServerZoneScope,這裏是核心中的核心,我們需要在一個DNS區域裏面創建出來多個邏輯的地理區域,一定要理解這個概念,例如,現在有個DNS主區域叫ixmsoft.com,我們就要在ixmsoft.com這個區域裏面再劃分出來邏輯地理範圍,比如需要創建一個北京區域,一個美國區域,這樣做了之後,就實現了同一個DNS主區域下面,包括了多個地理區域

Add-DnsServerZoneScope -ZoneName "ixmsoft.com" -Name "beijing"  
Add-DnsServerZoneScope -ZoneName "ixmsoft.com" -Name "us"

技術分享圖片
創建完成後,我們也可以查詢
Get-DnsServerZoneScope -ZoneName "ixmsoft.com"
技術分享圖片
創建完成邏輯地理區域,主要用來包含主機記錄,串起來做Policy 判斷使用,例如我們創建了邏輯地理區域北京,接著我們就需要創建北京Web服務器的主機記錄,在創建主機記錄過程中,最主要的一步就是指定-ZoneScope,指定了這個參數之後創建出來的這個主機記錄就會綁定在這個地理區域內,之後創建策略,只有策略中指定的子網範圍內客戶端可以訪問對應的“包括地理區域的主機記錄”

Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.6.198" -ZoneScope "beijing"
Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.7.198" -ZoneScope "us"

我們在此也需要註意:我們定義的-A -Name名稱為web,所以我們用戶最終是以web.ixmsoft.com來訪問服務器的。
技術分享圖片
創建完成後,我們可以查詢該記錄
Get-DnsServerResourceRecord -ZoneName "ixmsoft.com"
技術分享圖片
我們上面創建的是基於ZoneScope區域的解析記錄,但是我們需要註意的是,如果只有給ZoneScope區域中增加記錄,ZoneScope以外沒有記錄的話,除了自定義的子網用戶以外訪問都會出現無法解析的問題,所以我們還需要在ZoneScope中增加解析記錄

Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.6.198"
Add-DnsServerResourceRecord -ZoneName "ixmsoft.com" -A -Name "web" -IPv4Address "192.168.7.198"

執行後,我們就會在DNS中看見剛才上面增加的兩條記錄
技術分享圖片
以上條件配置好後,我們接下來要創建DNS查詢返回策略了,也是非常重要的,
在這裏我們指定客戶端子網範圍,eq代表等於的意思,一旦客戶端子網等於已經定義好的範圍,即有對應區域內的主機記錄給予響應,Zone Scope參數後面有一個1,這個在之後的文章我們會多次用到,在本次場景中我們是一個完全的分流的場景,如果不完全分流,例如大連用戶百分之70訪問北京服務器,百分之30訪問美國服務器,我們寫1,代表大連客戶端訪問百分之百是由北京區域的主機記錄給予響應

Add-DnsServerQueryResolutionPolicy -Name "beijingPolicy" -Action ALLOW -ClientSubnet "eq,beijingsubnet" -ZoneScope "beijing,1" -ZoneName "ixmsoft.com"  

Add-DnsServerQueryResolutionPolicy -Name "usPolicy" -Action ALLOW -ClientSubnet "eq,ussubnet" -ZoneScope "us,1" -ZoneName "ixmsoft.com" 

技術分享圖片
創建好Policy後,我們可以查詢的
Get-DnsServerQueryResolutionPolicy -ZoneName "ixmsoft.com"
技術分享圖片
接著我們就可以測試了,
我們模擬北京的子網地址,然後訪問的是北京的服務器
技術分享圖片
我們模擬美國的子網地址,然後訪問的是美國的服務器
技術分享圖片
在此我們的基本配置已經完成了,我們下一節繼續介紹關於Windows Server DNS的相關文章。

Windows Server 2016 智能DNS(一)