天天看點

用戶端解鎖緩慢故障解決方法

故障現象:

用戶端管理者為保證用戶端資源通路安全,設定了組政策中的“互動式登入:需要域控制器身份驗證以進行解鎖”。客戶離開座位時習慣鎖屏,正常情況下輸入密碼可以迅速恢複桌面,但個别需要等待30-60秒不等時間才能通過驗證,影響了辦公效率。

環境描述:

用戶端大部分為XP系統,少量WIN7;AD父子域結構,子域負責用戶端登陸驗證,域控2003和2008系統混合,分屬不同站點,用戶端預設使用2003域控驗證。

解決方法:在用戶端上建立并設定以下系統資料庫鍵值:

Path:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\ Kerberos\Parameters

Name: MaxPacketSize

Type: REG_DWORD

Value: 1

原因分析:

2003以後,AD使用Kerberos協定進行身份驗證,分為TCP和UDP兩種。在RFC 1510的規範下,XP用戶端預設首先通過UDP發送資料包到域控KDC的88端口。而現在RFC4120逐漸取代1510,指定KDC必須接受TCP請求,預設下,vista和2008以後直接使用TCP

預設下,2003使用UDP資料包最大size為1465位元組,而對于XP是2000位元組,TCP用于超過此最大值的情況,可以通過修改系統資料庫更改UDP包最大值。XP用戶端向2003域控送出驗證資料包時,首先使用UDP,資料包大小根據使用者賬戶而大小不一,其中影響較大的是SID曆史記錄群組成員身份(故障的使用者賬戶大部分是經常用于組測試的,即反複從不同的組中添加删除,判斷這是造成上述的SID曆史記錄龐大的原因)。當超過最大值,系統将資料包分段打包發送,由于UDP天生不可靠性,到底目的地無序而且沒有完整性檢驗的回報,最後結果就是丢包。這一切用戶端無從得知,隻能幹等,隔一定時間後重新發送UDP以及後續改用TCP才成功驗證。

系統資料庫中的MaxPacketSize=1可以強制用戶端使用TCP發送kerberos資料包,由于面向連接配接是以不會丢包(注意,vista和2008以後預設MaxPacketSize=0,但事實上已經強制使用TCP了),這樣就解釋了為什麼XP/WIN7/SERVER2003/2008不同組合會有不同的登陸結果

本文轉自天鬼皇 51CTO部落格,原文連結:http://blog.51cto.com/ghostlan/1300000,如需轉載請自行聯系原作者

繼續閱讀