﻿# 主機於 AD 環境下設定 VPN 時需注意 DNS 設定是否正確

前陣子一直有同事有帳號鎖定的問題，自從我將 **帳戶鎖定閥值** (允許登入失敗次數) 調高一些之後不再有帳號鎖定的情況，不過卻還是有人反應「偶爾」會有連不上公司內特定網站的情況，例如：TFS 無法登入之類的。原來這問題就出在使用 Windows 內建的 VPN 撥接上遠端網路後會多註冊 DNS 進來，進而導致主機原本指定的 DNS 多出了兩組（原本兩組，撥接上 VPN 後變成四組），因此才會偶爾發生找不到 DC 進而導致認證失敗的狀況，這真是魔鬼總在細節裡的另一個案例了。

在 Windows 系統中設定 DNS 的方式如下圖所示：

 ![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5336d2c55f540b1bc7ae-image_394.png "title")

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2e87cac4b9b3621b9a05-SNAGHTML2168d0.png "title")

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/da633d19714d4194f5ff-SNAGHTML1dd059.png "title")

事實上，如果你有兩個網路介面，如果個別註冊兩個 DNS 的話，兩個網路介面裡所定義的 DNS 都會自動被列為「本機系統」中所有可用的 DNS 伺服器清單，那麼也就是有 4 組 DNS 可以使用，不過 AD 的運作非常依賴 DNS 伺服器，在網域內使用相關 Windows 驗證的服務時經常需要透過 DNS 伺服器查出與 AD 相關的服務資源紀錄(SRV Record)以便於找到五大角色相對應的主機位置以進行操作。

原本設定好的兩組 DNS 原本可以正常查詢公司內的 DC 上的 DNS 伺服器，但是當 VPN 撥接成功後，在本機等同於多出一張**網路介面**可用，而當好大部分 VPN 伺服器通常都是設定自動取得 IP 與 DNS 的設定，在這種情況下就會導致在撥接上 VPN 之後多出了兩組不是網域內使用的 DNS 伺服器，當你在使用網域內服務時剛好切換到 VPN 伺服器所提供的 DNS 伺服器那就糟糕了，因為這樣你根本無法取得網域內的相關資源，登入自然失敗了。

為了避免這個問題發生，必須修改 VPN 撥接連線的 TCP/IPv4 設定，讓這個 VPN 連線能夠使用用戶端常用的 DNS 設定（也就是網域內 DNS 的位址），如此一來此問題才能真正被解決。

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/fc0cf01a9fddd17d62b7-image_395.png "title")

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/915a067ffae8993ecf09-SNAGHTML31d558.png "title")

若要查詢目前本機已經註冊了多少個 DNS 必須使用 **ipconfig /all** 進行查看，查詢的結果會有所有網路介面的 DNS 伺服器資料，所有列出來的都是可用的 DNS 伺服器：

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ea49d8b066a3442e6f13-image_396.png "title")

**最後再次提醒**

如果系統內有多組**網路介面**被啟用的話，所有網路介面中所設定的 DNS 伺服器位址將全部都會列入可用的 DNS 伺服器清單，若有網域的環境需正常運作則必須手動指定各網路介面 DNS 伺服器位址才行。
