域控制器在 Windows 中的定位方式

本文說明 Windows 用來在 Windows 網域中尋找域控制器的機制。

注意事項

本文適用於 Windows 2000。 Windows 2000 的支援將於 2010 年 7 月 13 日終止。 Windows 2000 終止支持解決方案中心是從 Windows 2000 規劃移轉策略的起點。 如需詳細資訊,請參閱 Microsoft 支援服務 生命周期原則

適用於: Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
原始 KB 編號: 247811

摘要

本文詳述依網域 DNS 樣式名稱和其一般樣式 (NetBIOS) 名稱尋找網域的程式。 一般樣式名稱用於回溯相容性。 在所有其他情況下,DNS 樣式名稱應該作為原則的用途。 本文也說明域控制器位置程式的疑難解答。

定位器如何尋找域控制器

此順序描述定位器如何尋找網域控制器:

  • 在用戶端 (尋找域控制器) 的計算機上,定位器會啟動為遠端過程調用, (RPC) 至本機 Netlogon 服務。 Locator DsGetDcName 應用程式開發介面 (API) 呼叫是由 Netlogon 服務實作。

  • 用戶端會收集選取域控制器所需的資訊。 然後,它會使用 DsGetDcName 呼叫,將資訊傳遞至 Netlogon 服務。

  • 用戶端上的 Netlogon 服務會使用收集到的資訊,以下列兩種方式之一來查閱指定網域的域控制器:

    • 針對 DNS 名稱,Netlogon 會使用 IP/DNS 相容定位器來查詢 DNS。 也就是說,DsGetDcName 會呼叫 DnsQuery 呼叫,以在將域名附加至指定 SRV 記錄的適當字串之後,從 DNS 讀取服務資源 (SRV) 記錄和 “A” 記錄。

    • 登入 Windows 網域的工作站會以一般形式查詢 DNS 的 SRV 記錄:

      _service._protocol.DnsDomainName
      

      Active Directory 伺服器透過 TCP 通訊協定提供輕量型目錄存取通訊協定 (LDAP) 服務。 因此,客戶端會查詢 DNS 以取得表單的記錄,以尋找 LDAP 伺服器:

      _ldap._tcp。DnsDomainName

  • 針對 NetBIOS 名稱,Netlogon 會使用 Microsoft Windows NT 4.0 版相容定位器來執行域控制器探索。 也就是說,使用傳輸特定機制,例如 WINS。

    在 Windows NT 4.0 和更早版本中,“discovery” 是在主域或受信任網域中尋找域控制器進行驗證的程式。

  • Netlogon 服務會將數據報傳送至註冊名稱的計算機。 對於 NetBIOS 功能變數名稱,數據報會實作為 mailslot 訊息。 針對 DNS 功能變數名稱,數據報會實作為 LDAP 用戶數據報通訊協定 (UDP) 搜尋。 (UDP 是屬於 TCP/IP 通訊協定套件的無連線數據報傳輸通訊協定。TCP 是面向連線的傳輸通訊協定。)

  • 每個可用的域控制器都會響應數據報,指出其目前運作正常,並將資訊傳回給 DsGetDcName。

UDP 允許一部電腦上的程式將數據報傳送至另一部計算機上的程式。 UDP 包含通訊協定埠號碼,可讓寄件人區分多個目的地, (遠端電腦上) 程式。

  • 每個可用的域控制器都會響應數據報,指出其目前運作正常,並將資訊傳回給 DsGetDcName。
  • Netlogon 服務會快取域控制器資訊,讓後續要求不需要重複探索程式。 快取這項資訊可鼓勵一致地使用相同的域控制器和一致的 Active Directory 檢視。

當用戶端登入或加入網路時,它必須能夠找到域控制器。 用戶端會將 DNS 查閱查詢傳送至 DNS 以尋找域控制器,最好是在用戶端自己的子網中。 因此,用戶端會藉由查詢 DNS 以取得表單的記錄來尋找域控制器:

_LDAP._TCP.dc._msdcs.domainname

在用戶端找到域控制器之後,它會使用LDAP來建立通訊,以取得Active Directory的存取權。 在該交涉中,域控制器會根據該用戶端的IP子網來識別用戶端所在的月臺。

如果用戶端與不在最接近 (最佳) 站台中的域控制器通訊,域控制器會傳回用戶端月臺的名稱。 如果客戶端已嘗試在該網站中尋找域控制器,則用戶端會使用不是最佳的域控制器。 例如,用戶端會將 DNS 查閱查詢傳送至 DNS,以尋找用戶端子網中的域控制器。

否則,用戶端會使用新的最佳月臺名稱再次進行網站特定 DNS 查閱。 域控制器會使用一些目錄服務資訊來識別月臺和子網。

用戶端找到域控制器之後,會快取域控制器專案。 如果域控制器不在最佳站台中,用戶端會在 15 分鐘後清除快取,並捨棄快取專案。 然後,它會嘗試在與用戶端相同的站台中尋找最佳的域控制器。

用戶端建立域控制器的通訊路徑之後,就可以建立登入和驗證認證。 如果 Windows 電腦需要的話,它可以設定安全通道。 接著,用戶端就可以開始執行一般查詢,並針對目錄搜尋資訊。

用戶端會建立域控制器的LDAP連線以登入。 登入程式會使用安全性帳戶管理員。 通訊路徑會使用LDAP介面,而用戶端是由域控制器驗證。 因此,客戶端帳戶會經過驗證,並透過安全性帳戶管理員傳遞至目錄服務代理程式,然後傳遞至資料庫層,最後傳遞至可延伸記憶體引擎中的資料庫, (ESE) 。

針對網域定位器程序進行疑難解答

若要針對網域定位器程式進行疑難解答:

  1. 檢查客戶端和伺服器上的 事件檢視器。 事件記錄檔可能包含錯誤訊息,指出發生問題。 若要檢視 事件檢視器,請選取 [開始],指向 [程式>管理工具],然後選取 [事件檢視器]。 檢查客戶端和伺服器上的系統記錄。 另請檢查伺服器上的目錄服務記錄和 DNS 伺服器上的 DNS 記錄。

  2. 在命令提示字元中使用 ipconfig /all 命令來檢查IP組態。

  3. 使用 Ping 公用程式來驗證網路連線能力和名稱解析。 Ping IP 位址和伺服器名稱。 您可能也想要 Ping 功能變數名稱。

  4. 使用 Netdiag 工具來判斷網路元件是否正常運作。 若要將詳細輸出傳送至文字檔,請使用下列命令:

    netdiag /v >test.txt
    檢閱記錄檔、尋找問題,並調查任何隱含的元件。 此檔案也包含其他網路組態詳細數據。

  5. 若要修正次要問題,請使用 Netdiag 工具搭配下列語法:

    netdiag /fix.

  6. 使用 命令 nltest /dsgetdc:domainname 來確認域控制器可以找到特定網域。

  7. 使用 此 NSLookup 工具來確認 DNS 專案是否已在 DNS 中正確註冊。 確認可以解析伺服器主機記錄和 GUID SRV 記錄。

    例如,若要驗證記錄註冊,請使用下列命令:
    nslookup servername. childofrootdomain. rootdomain.com
    nslookup guid._msdcs. rootdomain.com

  8. 如果其中一個命令失敗,請使用下列其中一種方法,以 DNS 重新註冊記錄:

    • 若要強制註冊主機記錄,請輸入 ipconfig /registerdns。
    • 若要強制域控制器服務註冊,請停止並啟動 Netlogon 服務。
  9. 若要偵測域控制器問題,請從命令提示字元執行 DCdiag 公用程式。 公用程式會執行許多測試,以確認域控制器是否正確執行。 使用此指令會傳送至文字檔: dcdiag /v >dcdiag.txt

  10. 使用 Ldp.exe 工具來連線並系結至域控制器,以驗證適當的LDAP連線能力。

  11. 如果您懷疑特定域控制器有問題,開啟 Netlogon 偵錯記錄可能會很有説明。 輸入下列命令來使用 NLTest 公用程式: nltest /dbflag:0x2000ffff。 然後,資訊會記錄在 Netlogon.log 檔案的 [偵錯] 資料夾中。

  12. 如果您仍未隔離問題,請使用網路監視器來監視用戶端與域控制器之間的網路流量。

參考資料

如需詳細資訊,請參閱 Windows 資源套件第 10 章:「Active Directory 診斷、疑難解答和復原」。