MSN無法登錄問題解決過程中的意外收獲
最近在運維過程中,遇到了兩個歷史悠久而且截然不同的疑難問題。但巧合的是,兩個問題殊途同歸,最后居然使用了同樣的解決方法。為了慶祝送別這兩個問題,也為了和大家共同學習,共同進步,現(xiàn)在把解決問題的詳細過程獻出來和大家分享。
先對問題進行一下描述啊。第一個問題就是MSN無法登錄!估計很多朋友看到這個題目就要暗自點頭,大有一見如故的感覺。這個問題非常普遍,在我們公司更是由來已久。無論用戶的級別高低,無論使用的MSN版本新舊,總有一部分不和諧的用戶會跑來反映自己的MSN無法登錄。按理說,即時通訊軟件很不受網(wǎng)管待見,應(yīng)該學會在夾縫里求生存,登錄方式應(yīng)該手段繁多,花樣翻新。什么封裝成HTTP,HTTPS,什么通過Web代理,Socks代理,加密代理登錄等等,應(yīng)該讓網(wǎng)管覺得MSN登錄真是防不勝防,堵不勝堵才好??蒑SN倒好,我們還沒想限制呢,它先自己頂不住了。
為了解決這個問題,勞動人民可是想了不少主意,大家上網(wǎng)搜了不少辦法。什么導入證書法,什么在瀏覽器中勾選自動檢測設(shè)置啊,這些方法倒也不是一無是處,可奇怪的是有些辦法在張三的機器上行,在李四的機器上就不行,搞來搞去,也沒有一個通用的解決辦法。最可氣的是有些用戶第一天能登錄,第二天就不能登錄了,搞得大家每次登錄MSN時心情都忐忑不安,充滿了憧憬和期待。以前在MSN中配置代理服務(wù)器登錄還是比較靠譜的一招,我們在TMG服務(wù)器上也配置了防火墻策略,希望用戶通過HTTPS協(xié)議登錄MSN服務(wù)器??珊髞砼渲肳eb代理基本上就毫無作用了。很長一段時間以來,遇到用戶無法登錄MSN,大家都很頭疼去進行技術(shù)支持。對比一下吃苦耐勞,從不挑肥揀瘦的QQ,這MSN跟別人的差距可真不是一星半點。
第二個問題也是一個老問題了,WPAD和WSUS之間有沖突。這個問題聽起來挺匪夷所思的,WSUS是干嘛的,WSUS是用于給客戶機自動更新微軟補丁的;WPAD是干嘛的,WPAD是自動在客戶機的Web代理或防火墻客戶端上配置代理服務(wù)器的。咋一看這兩者之間沒什么關(guān)聯(lián),可奇怪的是只要一啟用WPAD,客戶機能自動發(fā)現(xiàn)代理服務(wù)器的同時會立即和WSUS服務(wù)器失去聯(lián)系。為了解決這個奇怪的問題,我們在微軟特意開了CASE,可微軟抓了不少包進行分析,最后也沒分析出什么結(jié)果。結(jié)果呢,這個CASE就一直掛在那了。問題沒解決,我們只能在WPAD和WSUS之間選擇Kill一個了,WSUS是負責更新補丁的,安全問題應(yīng)該優(yōu)先保證,所以只能委屈一下WPAD了。
介紹完現(xiàn)有的問題后,再來介紹一下是怎么解決問題的。我們先在MSN問題上找到了突破口,查詢微軟Technet三月份的安全博客時,忽然發(fā)現(xiàn)有篇文章介紹MSN登錄原理,文章提到如何希望MSN通過代理服務(wù)器登錄服務(wù)器,僅僅配置Web代理是不夠的,MSN只是在完成登錄的部分工作時使用到Web代理!注意,這也就意味著如果僅僅在MSN中配置下圖所示的Web代理,是無法完成MSN登錄的。
通過在客戶機上抓包分析,發(fā)現(xiàn)MSN登錄時要做很多工作,要聯(lián)系一些*.microsoft.com的服務(wù)器,要聯(lián)系一些*.hotmail.com的服務(wù)器,還要聯(lián)系一些*.live.com和*.msn.com的服務(wù)器。當MSN訪問這些服務(wù)器時,有部分工作可以由Web代理完成,但有些工作是不能通過Web代理的。那剩下的登錄工作應(yīng)該交給誰呢?答案是Winhttp代理!
Winhttp代理和Web代理是兩套不同的代理機制,我們在瀏覽器中配置的代理服務(wù)器屬于Web代理,那Winhttp代理應(yīng)該如何配置呢?其實在Win7計算機中使用Netsh就可以輕松配置,如下圖所示,我們在Win7客戶機中以管理員身份運行一個命令提示符,然后輸入:Netsh Winhttp Set Proxy proxy.chamc.com.cn:80。這條指令的目的就是把我們當前使用的代理服務(wù)器proxy.chamc.com.cn設(shè)置為Winhttp的代理服務(wù)器。
設(shè)置了Winhttp代理后,果然效果不凡,大家的MSN紛紛能夠成功登錄了!真是不容易啊,這個該死的微軟,居然畫蛇添足地設(shè)計什么Winhttp代理!群眾中有幾個人懂這個啊,都使用Web代理不就完事了嘛,這些程序員到底有木有腦子啊!大家正在義憤填膺地譴責微軟,忽然有同事發(fā)現(xiàn)新問題了。只要在計算機上配置了Winhttp代理,就無法訪問WSUS服務(wù)器了!
檢查一下計算機c:\windows\windowsupdate.log文件,可以發(fā)現(xiàn)客戶機訪問WSUS服務(wù)器時的日志內(nèi)容,日志中有這樣的語句DownloadFileInternal failed for http://hq-sus/selfupdate/wuident.cab: error 0x801901f6。這種錯誤提示和配置WPAD后的錯誤提示完全相同,這種情況下我們就提高警惕了,為什么WSUS和Winhttp代理之間也有這種兼容性問題呢?
通過查閱資料,發(fā)現(xiàn)原來WSUS客戶端在訪問WSUS服務(wù)器時,也是要調(diào)用Winhttp代理進行通訊的。由于WSUS客戶機和WSUS服務(wù)器同在TMG的內(nèi)網(wǎng),因此WSUS客戶機應(yīng)該直接訪問WSUS服務(wù)器,根本不應(yīng)該客戶機先訪問到TMG服務(wù)器,然后再通過TMG服務(wù)器訪問WSUS服務(wù)器!找到問題之后,怎么解決呢?其實解決方法也很簡單,在netsh Winhttp中設(shè)置旁路列表,告訴Winhttp代理,訪問WSUS服務(wù)器不用經(jīng)過Winhttp代理,這樣就可以了。例如WSUS服務(wù)器是hq-sus,那么我們就可以在客戶機上輸入如下圖所示命令:Netsh Winhttp set proxy proxy.chamc.com.cn:80 “hq-sus”。這條指令就是通知Winhttp代理,訪問hq-sus服務(wù)器可以直接訪問,不用經(jīng)過Winhttp代理了。如果有內(nèi)網(wǎng)其他的服務(wù)器要排除,可以用分號隔開
在客戶機上配置完Netsh Winhttp后,問題解決了。用戶可以登錄MSN,也不會和WSUS有沖突了,問題貌似圓滿解決??!但是,但是,問題好像還留了一個小尾巴。為什么WSUS和WPAD當初會有沖突呢?難道也是類似原因?qū)е碌摹T谖④浘W(wǎng)站找資料!找啊找,找啊找,嘿嘿,功夫不負有心人啊,真的被俺找到了。原來Winhttp代理除了可以通過Netsh Winhttp進行配置,還可以通過WPAD進行自動配置。但是,當Winhttp代理通過WPAD下載wpad.dat文件進行自動配置時,由于wpad.dat文件中沒有對wsus服務(wù)器進行排除,因此WSUS客戶端通過Winhttp代理就不會直接訪問WSUS服務(wù)器。而是需要通過TMG代理服務(wù)器去訪問WSUS服務(wù)器,這樣當然是不行的!
搞清楚道理,問題就好解決了。只要在配置WPAD時把內(nèi)網(wǎng)的WSUS服務(wù)器排除之外就OK了。在TMG服務(wù)器上打開管理控制臺,找到“網(wǎng)絡(luò)連接”-“內(nèi)部”-“屬性”中的“Web瀏覽器”標簽,如下圖所示,把WSUS服務(wù)器hq-sus添加到直接訪問的列表中,這樣WPAD就會通知使用Web代理或Winhttp代理不要通過代理服務(wù)器訪問WSUS服務(wù)器,如果還有其他的服務(wù)器要排除,參考這種操作就可以。
排除的服務(wù)器可以通過TMG服務(wù)器上的wpad.dat文件體現(xiàn)出來,我們可以使用瀏覽器從TMG服務(wù)器上下載wpad.dat文件查看排除服務(wù)器列表。如下圖所示,我們使用記事本打開TMG服務(wù)器上的wpad.dat,可以看到WSUS服務(wù)器hq-sus已經(jīng)被排除使用代理服務(wù)器訪問了。
現(xiàn)在,通過在WPAD中設(shè)置排除服務(wù)器,WPAD可以啟用了。用戶的Winhttp代理可以通過WPAD自動獲取配置,不需要通過Netsh Winhttp進行配置?,F(xiàn)在,用戶登錄MSN,訪問WSUS服務(wù)器都沒有問題了,非常和諧。從這個問題中,我們可以得出兩個結(jié)論:第一是不要迷信微軟,微軟的產(chǎn)品之間也會有兼容性問題;第二是一定要相信微軟,問題最終還是可以解決的。
關(guān)鍵詞:MSN無法登錄
閱讀本文后您有什么感想? 已有
0
人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0