一次離奇的DHCP故障排查
本文非嚴肅技術文章,純扯淡,純備忘,生人勿近。
端午之前,媳婦的大學同學聯繫我,說是她的筆記本有毛病,在醫院上網時,可以訪問公網網站,可以上PC版微信,獨獨不能訪問她們院內一個內部網站。
遠程指揮她初步排查了一番。確認是x64/Win7,一周前還沒這事,中途該電腦帶回家中上過網,當時有些網路設置方面的提示,由於她完全外行,已經無法精確複述當時所見提示。再後來回到醫院上網,就出現前述故障。找過一些院內同事,排查未果。
考慮到能上公網,不像是什麼特別大的故障,更像是防火牆一類的安全設置在起作用。遠程間接排查,很不方便。懷著萬分之一的希望問了一句,你知道啥是cmd嗎?她果斷地反問我,這是啥?我默默地忘掉這個問題。還好,比起媳婦,這位屬於蠻有點天賦的那種,我是說電腦方面。我經常這樣寫操作步驟"A->B->C->...",她能不需要我說第二遍的情況下順利操作完成,這次我居然沒有吐血一次。而我在別人那裡碰上過太多反例,比如,"我找到了A,但沒看到B啊,C又是什麼鬼"。後來我跟媳婦說,XX還真行,比你強,你能配合著遠程處理電腦故障,是我訓練了多年的結果,她可沒有這經歷,看得出來人很聰明,讓她截幾張圖,只需要用自然語言描述一下大意,她就能理解你要什麼東西。
讓她暫時卸載某電腦管家、關閉Win7自帶防火牆等等。第一個是因為她說看到過右下角提示"檢測到敏感詞",第二個就更直白了,PFW有入站規則,也有出站規則,比如對付奇葩的Adobe Flash Player安裝流程,可以利用PFW的出站規則。我懷疑那個不能訪問的院內IP在出站規則中被禁了。由於不會cmd,不能指望ping、telnet等等,索性指揮她關閉PFW。她平時用360瀏覽器,讓她用IE測試,現象依舊。截了IE屬性里區域網設置的圖,確認沒有錯誤的代理設置。至此,已經不是遠程排查能搞掂的了。
媳婦把XX的筆記本背回家,我檢查了一番,沒看到什麼明顯的設置問題,能夠正常訪問公網。這在意料之中,如果想排查解決,只能帶著電腦回到XX所在醫院的內網。不過我還是提前在家中給她裝了Firefox,萬一是個瀏覽器設置問題呢。
端午,悶熱的下午,老磚家小四背上XX的筆記本,在媳婦和陳北雁殷切目光的注視中離開了家門,前往XX醫院,大有風蕭蕭兮兮易水寒的味道;呃,不對,應該是不破樓蘭終不還的味道。
到了XX醫院,TNND,門診大樓的南門、東門全關,嗯,人家醫務工作者也是要過端午的,我想在門診大廳吹空調的願望破滅了。只好縮坐在東門的石台上,給XX發了個微信,說我在哪哪哪等她,南門已關云云。其實,這是提醒XX,本怪已到,你丫快點從家裡趕過來。若干時辰過後,終於見面了。且說本怪在XX帶領下穿堂越院行至X樓醫生辦公室,哇,別有洞天,一屋子醫生護士?
按下廢話不表,開始排查。XX沒有騙我,癥狀描述到位,可以反覆重現。是台Home版的x64/Win7,DHCP分配IP,公網沒問題,院內伺服器連不上,IE、Firefox都連不上。在cmd里ping院內伺服器的IP,居然可達!本想手工GET、HEAD一下,但沒有telnet可用。想想,還是去下載wireshark,抓包看看。她們這兒的網速實在不敢恭維,龜速下載的間隙,讓XX去借幾台同事的筆記本來,最好是Win7。不幸只借到了XP和Win10。XP、Win10也是DHCP分配IP,訪問院內IP、公網均無問題。肯定是XX的這台Win7有個很細小的設置與它們不同,導致這種局面。期間XX問我,重裝是不是能解決。我對這種為了拍死蒼蠅而引爆核彈的行為表示無奈。
既然XP、Win10正常,那就來玩"找不同"吧。各開一個cmd,"ipconfig /all",有些人可能喜歡用"netsh interface ipv4 show address"。三者得到的IP設置差得有點大,示意數據如下:
不管這三台機器重啟多少次,它們總是各自得到上述配置。按我理解,DHCP沒這麼靜態啊。好奇為什麼子網網段都不同,DHCP Server識別了DHCP Client的某種屬性,分配不同的子網網段?掩碼不是255.255.255.0,而是255.255.254.0。Win7得到動態IP相當詭異,192.168.54.255,這個IP居然可以ping通網關,可以正常上公網。我提出一個猜測,Win7少了某種Agent或其他配置,致使DHCP Server分配的IP位於不可信範圍,從而不能訪問可信的院內IP,可能這是XX醫院的安全措施之一。前面說了,XX無法精確複述Win7帶回家中時遭遇的設置提示,我只能亂試。
netsh winsock reset
這個沒用,DHCP仍然給重啟後的Win7分配192.168.54.255。
索性流氓一把,給Win7設置靜態IP。先是設成192.168.87.55/23/192.168.87.254,結果ping不通192.168.87.254。然後設成192.168.54.54/23/192.168.54.254,暫時沒有發現IP衝突,可以ping通192.168.54.254;用Firefox訪問院內IP,哇哦,成功打開網頁;訪問公網,正常。至此確認是DHCP惹的禍。不知道DHCP出了什麼幺蛾子,看上去像是DHCP Server配置有問題。安慰XX,說可能不是你的錯,估計這一周內你們網管動過DHCP Server的配置,你運氣不好,攤上了。
現在有了一個臨時不完美解決方案,靜態設置IP。讓XX用手機拍了IPv4的設置界面,另截了一張圖存在桌面上。XX可以通過GUI來設置靜態IP,但她如何知道192.168.54.54/23/192.168.54.254這種信息呢?開個cmd執行"ipconfig /all"對她有點困難。而且,還有更要命的IP衝突等著她,現在是端午,周二都上班了可就不好說了。老磚家小四陷入了新的沉思,此處自行腦補現場影像。
XX突然多了一句嘴,說她好像設過192.168.54.255這個IP。我滿心狐疑,不可能吧,這是DHCP動態分配的,怎麼著也不會正常蹦出個界面讓你設它。事後復盤,這只是一名醫務工作者的癔症,確無其事。但在彼時,剎那間,懷疑之餘我想到一種可能,該不是她在家中碰到的那個提示讓她設置過這個IP,可能是我二十多年專業生涯中從未碰上過的某種提示。基於這個猜測,我決定去註冊表裡找找蛛絲馬跡。當時我想的是,DHCP動態分配的IP信息只應出現在內存中,而不應該出現註冊表中,如果在註冊表中找到192.168.54.255,就能解釋這個詭異IP的來源何在。regedit,搜,還真搜到了。
一看到這個,心就涼了,這明顯是DHCP動態分配的IP信息,之前我的猜測不成立。有點不甘心,仔細查看了這個子鍵,發現其下有些鍵值不是動態出現的,應該是靜態存在的。反覆對比XP和Win7的這個子鍵,找到多處不同的鍵值,其中包括IPAddress。這個鍵值是REG_MULTI_SZ類型,那台一切正常的XP,此處有個值,0.0.0.0,這台不正常的Win7此處為空。不知道這個鍵值本意是啥,抱著消除差異性的態度,給Win7這個鍵值手工設置0.0.0.0。禁用網卡,重新啟用網卡,"ipconfig /all"檢查DHCP分配的IP信息,奇蹟般看到192.168.54.54/23/192.168.54.254,不再是192.168.54.255。用三種瀏覽器訪問院內IP、公網,皆正常,故障消除。旁邊的XX長鬆了一口氣。
不是DHCP Server的問題,就是這台Win7自身配置的問題。通過修改IPAddress鍵值,至少從癥狀上徹底消除了故障。仍然不知道最初發生了什麼,我問XX,你再想想,當時發生了啥,她是不可能手動修改註冊表的。她說,我啥也沒幹。我打斷了她的話,這就跟病人上門來看病,大夫讓TA把情況介紹一下,TA說我啥也沒幹,就這樣了,你信嗎?算了,先這樣吧。XX估計這撥被折騰怕了,說以後再以不帶這台Win7回家上網了。
老磚家小四在XX那兒表現得很淡定,解決完問題立馬走人,一分鐘不帶停留的,實則內心得意洋洋。這個故障,我從未見過,平生第一次,事後看,真是屬於我專業生涯中少有的疑難雜症。最後的解決有其必然性,但也有其偶然性,從刷經驗值的角度看,我賺到了。回到家中,趕緊跟媳婦一通狂吹,你想啊,在外面得裝謙虛,不好意思吹,回家了不得可勁地吹。媳婦問我,那你跟XX說這些了嗎?我說,那哪能,不能夠,我是一個謙虛的人。不過,突然想起一件事來,我很嚴肅地跟媳婦說,你跟XX說說,她讓我這種老磚家頂著悶熱縮在她們東門石階上等她,這合適嗎?我要不發微信,估計她還能來得再晚些。讓她們姐倆開玩笑去。
想想挺悲催的,我在媳婦的同學、同事圈裡,屬於踏實能幹的修電腦老師傅,你跟她們說計算機、說程序員、說網路安全、說這個那個,全白扯。
花開兩朵、各表一枝,事後我查了一下IPAddress這個鍵值。
TCP/IP and NBT configuration parameters for Windows XP
https://support.microsoft.com/en-us/help/314053/tcp-ip-and-nbt-configuration-parameters-for-windows-xp
Win32_NetworkAdapterConfiguration class
https://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx
本以為這就是終級真相。我手賤,本著大膽假設、小心求證的專業習慣,檢查了一台x64/Win7虛擬機,用的是NAT模式,VMnet8上啟用了DHCP。很不幸,這台Win7的IPAddress為空,但DHCP分配的IP正常,沒有幺蛾子。有幾種可能,一是我這台Win7與XX那台Win7還是有很多不一樣的,比如我的是專業版,她的是家庭版,我的補丁安裝情況與她肯定也不一樣;二是設置IPAddress可能只是對症解決了問題,並不是真正的"root cause"。
儘管我們非正常人類研究中心的被研究對象們永遠充滿著好奇心,但我們也信奉某種程度的視而不見,尤其在這世界盃的日子裡。就這樣不求甚解吧。
TAG:青衣十三樓飛花堂 |