随着 Windows 8 消費者預覽版的釋出,我第一時間把它安裝到了自己的兩台電腦中,體驗其帶來的最新特性,不想卻遇到了家中區域網路内部不能共享資源的奇怪問題,而讓人郁悶的是,導緻這一問題的竟然是網際網路服務提供商在進行DNS劫持。
首先,兩台電腦情況如下:
桌上型電腦:主機名 W8,Win8消費者預覽版,家中IP 192.168.137.1,位于家中
工作筆記本:主機名 HJW,Win8消費者預覽版,家中IP 192.168.137.68 已加入公司AD域,每天也會帶回家使用
家中網絡使用的是北京聯通 ADSL 寬帶。基于上述情況,在兩台電腦間共享檔案、互相通路幾乎是每天的必備操作。使用 Windows 7 時沒有遇到什麼問題,但更新到 Windows 8 消費者預覽版之後卻莫名其妙的出現 HJW 無法通路 W8 的問題,但同時 W8 卻可以正常通路 HJW:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image27.png"></a>
嘗試2:通過ping和遠端桌面連接配接,同樣無法發現 W8 的身影:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image28.png"></a>
嘗試3:通過 Windows 8 建立家庭組來共享,在檢測到 W8 上建立的家庭組之後點選加入,并輸入密碼,但提示無法加入:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image30.png"></a>
嘗試4:通過 W8 通路 HJW,則完全沒有問題,ping、共享檔案夾、遠端桌面連接配接均能正常通路:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image31.png"></a>
遇到這樣的問題,首先懷疑是 W8 上沒有打開網絡發現和檔案和列印機共享的功能,但檢視相關選項和防火牆之後,排除了這一可能,相關服務顯示是正常開啟的。在再次排除路由器相容性的可能性之後,又想想,既然ping不通,而W8一方實際上是正常運作的,那是否是因為 DNS 沒能正确解析呢?
想到這裡,再一次在 HJW 上對 W8 進行的 ping 嘗試讓我發現了蛛絲馬迹:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image32.png"></a>
由于 HJW 加入了公司的AD域,在進行 ping 時,程式會首先嘗試查詢公司域中的 W8 主機(W8.domain.com),由于在家中沒有連接配接到公司内網,它向公網上的 DNS 伺服器進行了查詢。經了解,公司域中并沒有一台名為 W8 的計算機,并且即使存在,在公網上也是不能通路的。像這種找不到目标主機的情況,DNS解析将提示“找不到主機 XXX”:
而此例中,公網上的該 DNS 竟然還傳回了一個IP位址,隻不過該主機沒有響應 ping 操作,是以我看到了“請求逾時”的提示,誤認為是 W8 的服務或端口沒有打開導緻的。
在浏覽器中嘗試打開帶有公司域名的該主機路徑,出現的畫面終于讓真相有了眉目:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image33.png"></a>
原來,之是以ping的時候會解析出IP位址,是由于聯通在幫我傳回資料,完成了這次DNS解析!在百度上查詢 202.106.199.35 的确可以看到這是北京聯通的域名通路錯誤提示頁面的IP。
找到原因之後,我手動将 HJW 上網絡的 DNS 位址指向第三方的公用伺服器,終于順利ping通W8:
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image34.png"></a>
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image35.png"></a>
<a href="http://blog.wbpluto.com/wp-content/uploads/2012/03/image36.png"></a>
到此得出的初步結論是(至少在我的Win8下是這樣):如果 Windows 加入了AD域網絡,在筆記本連接配接到其他網絡時可以正常通路其他網絡中的主機及共享資源,因為在域範圍進行DNS解析失敗後會自動在目前區域網路内進行查詢;而如果營運商進行DNS解析劫持,在嘗試獲得域内相關主機的IP時,營運商傳回的IP位址讓系統認為找到了目标主機,但實際上需要的資源是無法通路的,你在通路的隻是運作商的網站主機!
我們使用DNS查詢軟體對一個不存在域名進行測試,可以更清楚的看到兩種情況的差異:
到此為止,問題似乎可以用更改DNS伺服器的方式迎刃而解,但其實仍然存在問題,如果筆記本接入到公司的域網絡中,為了正常通路AD中的資源,又需要把 DNS 設定回預設的狀态。當然,在這種域名解析存在歧義的情況下,可以使用 .local 字尾來通路内網中主機(W8.local),避免上述無法通路的問題,但這畢竟不是治本的辦法,我們希望相關企業能夠合理的使用自己手中的資源,遵守社會上和技術上的标準,不要為了自身發展而不顧公共準則,給支援自己的廣大使用者造成麻煩。
本文轉自wbpluto 51CTO部落格,原文連結:http://blog.51cto.com/wbpluto/890103,如需轉載請自行聯系原作者