使用 Ntdsutil.exe 在 Active Directory 中檢視和設定 LDAP 原則

本文說明如何使用 Ntdsutil.exe 工具來管理輕量型目錄存取通訊協定 (LDAP) 原則。

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

摘要

若要確定域控制器可以支援服務層級保證,您必須指定許多LDAP作業的作業限制。 這些限制可防止特定作業對伺服器的效能造成負面影響。 它們也會讓伺服器更能復原某些類型的攻擊。

LDAP 原則是使用 類別的 對象來 queryPolicy 實作。 查詢原則物件可以在查詢原則容器中建立,這是組態命名內容中目錄服務容器的子系。 例如,cn=Query-Policies,cn=Directory Service,cn=Windows NT,cn=Services 組態命名內容

LDAP 系統管理限制

LDAP 系統管理限制如下:

  • InitRecvTimeout - 此值會定義域控制器在域控制器收到新連線之後,等待用戶端傳送第一個要求的秒數上限。 如果用戶端未在這段時間內傳送第一個要求,伺服器就會中斷用戶端的連線。

    預設值:120 秒

  • MaxActiveQueries - 允許在域控制器上同時執行的並行 LDAP 搜尋作業數目上限。 達到此限制時,LDAP 伺服器會傳回 忙碌 錯誤。

    默認值:20

    注意事項

    此控件與 MaxPoolThreads 值的互動不正確。 MaxPoolThreads 是每個處理器的控件,而 MaxActiveQueries 則定義絕對數目。 從 Windows Server 2003 開始,不再強制執行 MaxActiveQueries。 此外,MaxActiveQueries 不會出現在 Windows Server 2003 版 NTDSUTIL 中。

    默認值:20

  • MaxConnections - 域控制器將接受的同時 LDAP 連線數目上限。 如果在域控制器達到此限制之後連線,域控制器就會卸除另一個連線。

    默認值:5000

  • MaxConnIdleTime - 在LDAP 伺服器關閉連線之前,用戶端可以閒置的最長時間,以秒為單位。 如果連線閑置超過此時間,LDAP 伺服器會傳回LDAP中斷連線通知。

    預設值:900 秒

  • MaxDatagramRecv - 域控制器將處理的數據報要求大小上限。 會忽略大於 MaxDatagramRecv 值的要求。

    默認值:4,096 個字節

  • MaxNotificationPerConnection - 單一聯機允許的未處理通知要求數目上限。 達到此限制時,伺服器會將 忙碌 錯誤傳回給該連線上執行的任何新通知搜尋。

    預設值:5

  • MaxPageSize - 這個值會控制單一搜尋結果中傳回的物件數目上限,與每個傳回的物件大小無關。 若要執行結果可能超過此物件數目的搜尋,客戶端必須指定分頁搜尋控件。 它是將傳回的結果分組為不大於 MaxPageSize 值的群組。 總而言之,MaxPageSize 會控制單一搜尋結果中傳回的物件數目。

    默認值:1,000

  • MaxPoolThreads - 域控制器致力於接聽網路輸入或輸出的每個處理器, (I/O) 的最大線程數目。 此值也會決定每個處理器可同時處理LDAP要求的線程數目上限。

    預設值:每個處理器 4 個線程

  • MaxResultSetSize - 在組成分頁結果搜尋的個別搜尋之間,域控制器可能會儲存用戶端的元數據。 域控制器會儲存此數據,以加速頁面結果搜尋的下一個部分。 MaxResultSize 值會控制域控制器針對這種搜尋儲存的數據總量。 達到此限制時,域控制器會捨棄這些中繼結果中最舊的 ,以騰出空間來儲存新的中繼結果。

    默認值:262,144 個字節

  • MaxQueryDuration - 域控制器在單一搜尋上花費的時間上限,以秒為單位。 達到此限制時,域控制器會傳回 「timeLimitExceeded」 錯誤。 需要更多時間的搜尋必須指定分頁結果控制件。

    預設值:120 秒

  • MaxTempTableSize - 處理查詢時, dblayer 可能會嘗試建立暫存資料庫數據表來排序及選取中繼結果。 MaxTempTableSize 限制可控制此暫存資料庫數據表的大小。 如果暫存資料庫數據表所包含的物件數目超過 MaxTempTableSize的值, dblayer 則 會執行完整 DS 資料庫和 DS 資料庫中所有物件的較不有效率剖析。

    默認值:10,000 筆記錄

  • MaxValRange - 這個值會控制針對對象的屬性所傳回的值數目,與對象擁有的屬性數目或搜尋結果中的物件數目無關。 在 Windows 2000 中,此控件會硬式編碼為 1,000。 如果屬性的值數目超過 MaxValRange 值所指定的數目,您必須使用 LDAP 中的值範圍控件來擷取超過 MaxValRange 值的值。 MaxValueRange 會控制在單一物件的單一屬性上傳回的值數目。

    • 最小值:30
    • 默認值:1500

開始 Ntdsutil.exe

Ntdsutil.exe 位於 Windows 安裝 CD-ROM 上的 [支援工具] 資料夾中。 根據預設,Ntdsutil.exe 會安裝在 System32 資料夾中。

  1. 按一下 [開始],再按一下 [執行]
  2. 在 [ 開啟 ] 文本框中,輸入 ntdsutil,然後按 ENTER。 若要隨時檢視說明,請在命令提示字元中輸入 ?

檢視目前的原則設定

  1. 在 Ntdsutil.exe 命令提示字元中輸入 LDAP policies,然後按 ENTER。
  2. 在LDAP原則命令提示字元中,輸入 connections,然後按 ENTER。
  3. 在伺服器連線命令提示字元中,輸入 connect to server <DNS name of server>,然後按 ENTER。 您要連線到您目前使用的伺服器。
  4. 在伺服器連線命令提示字元中,輸入 q,然後按 ENTER 傳回上一個功能表。
  5. 在LDAP原則命令提示字元中,輸入 Show Values,然後按 ENTER。

出現原則存在時的顯示。

修改原則設定

  1. 在 Ntdsutil.exe 命令提示字元中輸入 LDAP policies,然後按 ENTER。

  2. 在LDAP原則命令提示字元中,輸入 Set <setting> to <variable>,然後按 ENTER。 例如,輸入 將 MaxPoolThreads 設定為 8

    如果您將另一個處理器新增至伺服器,此設定會變更。

  3. 您可以使用 Show Values 命令來驗證您的變更。

    若要儲存變更,請使用 認可變更

  4. 當您完成時,輸入 q,然後按 ENTER。

  5. 若要結束 Ntdsutil.exe,請在命令提示字元中輸入 q,然後按 ENTER。

注意事項

此程式只會顯示預設網域原則設定。 如果您套用自己的原則設定,就看不到它。

重新啟動需求

如果您變更域控制器目前使用的查詢原則值,這些變更會在不重新啟動的情況下生效。 不過,如果建立新的查詢原則,則需要重新啟動,新的查詢原則才會生效。

變更查詢值的考慮

若要維護網域伺服器復原能力,我們不建議您將逾時值增加 120 秒。 形成更有效率的查詢是慣用的解決方案。 如需建立有效率查詢的詳細資訊,請 參閱建立更有效率的 Microsoft Active Directory-Enabled 應用程式

不過,如果變更查詢不是選項,請只在一個域控制器或只有一個站臺上增加逾時值。 如需指示,請參閱下一節。 如果設定套用至一個域控制器,請減少域控制器上的 DNS LDAP 優先順序,讓用戶端較不可能使用伺服器進行驗證。 在具有增加優先權的網域控制器上,使用下列登入設定來設定 LdapSrvPriority

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

在 [ 編輯] 功能表上,選取 [ 新增值],然後新增下列登錄值:

  • 項目名稱:LdapSrvPriority
  • 數據類型:REG_DWORD
  • 值:將值設定為您想要的優先順序值。

如需詳細資訊,請 參閱如何優化位於用戶端網站外部的域控制器或全域編錄位置

設定每個域控制器或每個月台原則的指示

  1. 在 CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,樹系根目錄下建立新的查詢原則。

  2. Query-Policy-Object 屬性中輸入新原則的辨別名稱,將域控制器或月臺設定為指向新原則。 屬性的位置如下所示:

    • 域控制器的位置是 CN=NTDS 設定、CN= DomainControllerName、CN=Servers、CN= 月臺名稱、CN=Sites、CN=Configuration、 樹系根目錄

    • 月臺的位置是 CN=NTDS 月臺設定,CN= 月台名稱,CN=Sites,CN=Configuration, 樹系根目錄

指令碼範例

您可以使用下列文字來建立 Ldifde 檔案。 您可以匯入此檔案來建立逾時值為 10 分鐘的原則。 將此文字複製到Ldappolicy.ldf,然後執行下列命令,其中 forest root 是樹系根目錄的辨別名稱。 保持 DC=X 原樣。 這是一個常數,會在腳本執行時由樹系根名稱取代。 常數 X 不會指出域控制器名稱。

ldifde -i -f ldappolicy.ldf -v -c DC=X DC= forest root

啟動 Ldifde 腳本

dn: CN=Extended Timeout,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=X  
changetype: add  
instanceType: 4  
lDAPAdminLimits: MaxReceiveBuffer=10485760  
lDAPAdminLimits: MaxDatagramRecv=1024  
lDAPAdminLimits: MaxPoolThreads=4  
lDAPAdminLimits: MaxResultSetSize=262144  
lDAPAdminLimits: MaxTempTableSize=10000  
lDAPAdminLimits: MaxQueryDuration=300  
lDAPAdminLimits: MaxPageSize=1000  
lDAPAdminLimits: MaxNotificationPerConn=5  
lDAPAdminLimits: MaxActiveQueries=20  
lDAPAdminLimits: MaxConnIdleTime=900  
lDAPAdminLimits: InitRecvTimeout=120  
lDAPAdminLimits: MaxConnections=5000  
objectClass: queryPolicy  
showInAdvancedViewOnly: TRUE

匯入檔案之後,您可以使用Adsiedit.msc或 Ldp.exe 來變更查詢值。 此腳本中的 MaxQueryDuration 設定為 5 分鐘。

若要將原則連結至 DC,請使用 LDIF 匯入檔案,如下所示:

dn: CN=NTDS  
Settings,CN=DC1,CN=Servers,CN=site1,CN=Sites,CN=Configuration, DC=X  
changetype: modify  
add: queryPolicyobject  
queryPolicyobject: CN=Extended Timeout,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=X

使用下列命令匯入:

ldifde -i -f link-policy-dc.ldf -v -c DC=X DC= **forest root**

針對網站,LDIF 匯入檔案會包含:

dn: CN=NTDS Site Settings,CN=site1,CN=Sites,CN=Configuration, DC=X  
changetype: modify  
add: queryPolicyobject  
queryPolicyobject: CN=Extended Timeout,CN=Query-Policies,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=X

注意事項

Ntdsutil.exe 只會顯示預設查詢原則中的值。 如果已定義任何自定義原則,Ntdsutil.exe 不會顯示這些原則。