Windows DNS服務器的子網掩碼排序


對於跨多個站點部署的應用服務,會在各個站點都有服務器,並且對應不同的IP地址。我們希望每個客戶端訪問就近的資源。這個時候可以啟用Windows DNS服務器中的子網掩碼排序(子網優先)netmask ordering功能。其實Windows服務器默認是啟用這個功能的,但是默認是按照C類地址划分的。只要DNS記錄和客戶端不在同一個C類地址內就會以輪詢round robin的方式返回DNS查詢記錄。

由於一個站點中會有多個網段,通常服務器和客戶端不會放在同一個C類網段里,這個時候就需要修改默認按C類IP返回最近的IP地址了。我的環境中,按A類划分了地址段。命令是dnscmd /config /localnetprioritynetmask 0x00ffffff。可以用dnscmd /info /localnetprioritynetmask來查詢設置的值,Windows默認的是0x000000ff。

參數0x00ffffff的意思是,0對應的是網路號,1對應的是主機號。只要網絡號相同就判斷為和客戶端的IP段是一致的,返回同網段的DNS記錄對應的IP解析回到客戶端。如果想改成按B類地址划分,那么參數就相應的變為0x0000ffff。如果網段划分不是標准的類別,可以手動計算。比如掩碼是255.255.128.0對應的參數就是0x007fffff;掩碼如果是255.255.240.0那么對應的參數就是0x00000fff。

對應的注冊表鍵值HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\LocalNetPriorityNetMask

經過設置之后,發現客戶端查詢都生效了。但是服務自己查詢卻仍然是按照輪詢的結果來的。似乎設置對自己並不生效。經過啟用DNS調式日志,重啟服務器都沒有找到原因。最后發現,服務器的網卡DNS里配置的是127.0.0.1。這個是提升域控制器的時候默認自己寫進去的,后來我也沒把它改成服務器自己的IP。因為127.0.0.0這個段里並沒有對應的DNS記錄,所以就按輪詢來返回查詢結果了。如果你有2台域控制器,首選DNS要填對方的IP,然后備選填自己的IP,不要使用127.0.0.1這個默認設置。為了驗證我的想法,在DNS里手動添加了127段的記錄,並用nslookup查詢。https://www.cnblogs.com/qishine/p/12768749.html



結果就能優先返回127段的地址了。如果同一個段中有多個地址,那么對於這些地址也將按輪詢的方式返回。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM