本文分四個部分:

1.信息收集與分析

2.總結和猜想

3.解決與驗證

4.相關知識點介紹(DNS是什麼,為什麼要進行公共DNS阻斷等)

先說結論:校園網場景下,出現QQ可以使用,但網頁打不開的問題,最有可能的原因是設置非法(即除校園網自動分配外)的DNS伺服器地址。

1.信息收集與分析

背景:

今天基友找我,說他macbook連校園網,可以登QQ但是打開不了網頁。

作為直覺,一定是DNS(先記住這個詞,作用和原理在第二部分詳解)出了問題。所以我看了一下他的DNS伺服器地址:8.8.8.8和114.114.114.114。

可能是他某次手動加上去的(因為是黑色字)

一般來說,這兩個地址是可用的。

但由於事先不了解校園網場景下,經常阻斷公共DNS這件事,所以我又否定了是DNS的問題。

經過一頓亂操作(重啟、清空DNS緩存等),無果,只好又回到DNS上來。

1:手機連校園網wifi正常嗎?同時將校園網開熱點給電腦,能打開網頁嗎?

手機正常,電腦仍然不能打開網頁。(可能是電腦配置問題)

2:手機數據流量開熱點給電腦,能正常打開網頁嗎?

能,但很慢。(對比1,說明校園網也存在問題。)

3:分別通過ip地址和baidu.com訪問百度

瀏覽器輸入ip訪問,正常
輸入域名訪問,失敗

ip地址訪問成功,網址訪問失敗。(問題一定出在DNS)

4:nslookup www.baidu.com

nslookup

解析失敗。(現有DNS未工作)

正常情況下應該是這樣:

正常解析

5:打開控制台 ping 8.8.8.8

ping通

ping通。(DNS 伺服器連通性沒有問題)


二、總結和猜想:

電腦的配置和校園網可能都存在問題(實際上主要問題在於校園網)。電腦可以訪問互聯網,同時8.8.8.8可以ping通,但仍然出現典型的DNS問題。

所以我猜測8.8.8.8與114.114.114.114被學校禁掉了,只允許使用自動分配的內網DNS伺服器地址。


三:解決方案和驗證:

刪除手動添加的DNS伺服器地址,黑色字為手動添加。刪除後出現自動出現灰色字。地址為自動分配得到的內網DNS伺服器地址。

灰色字,自動獲取的地址

打開網頁,成功。

為了排除「手動添加導致故障」的可能性,手動添加了10.1.1.1這個地址作為DNS伺服器地址。

打開網頁,成功。

說明校園網只允許使用內網DNS伺服器地址(8.8.8.8與114.114.114.114屬於公網DNS伺服器地址)。

到這裡,回過頭來看,似乎是一個很簡單的東西,只是觸及到了知識盲區。

但是我又有了一個深深的疑問:

學校為什麼要這樣做?


四:DNS是什麼、為什麼要阻斷公共DNS

DNS(Domain Name System)域名系統

1.DNS是幹嘛的?

一句話,把域名轉換成ip地址baidu.com轉換成14.215.177.39)

實際上,我們訪問任何網站,本質上都是在利用ip地址進行訪問

舉個便於理解的例子:DNS相當於一本電話簿,網址(域名)就是想要聯繫人的名稱備註,ip地址就是電話號碼。你和他打電話,不是在用名稱備註打電話,而是在用11位手機號打電話。而網址(域名)是為了方便我們記憶而產生的。你肯定希望訪問百度的時候是在地址欄輸入baidu.com而不是14.215.177.39。

不然又是數字又是點的,那麼多網站,這我tm哪記得住啊?

當你訪問baidu.com的時候,DNS伺服器會找到它相對應的ip地址,並且把這個地址告訴你的電腦。你的電腦將這個ip地址作為目標,發出數據包。但是直接輸入ip地址14.215.177.39進行訪問,無需經過DNS解析。

當DNS出現問題時,地址解析功能無法生效,所以所有利用域名進行訪問的操作都失效

你說你要打電話給cxk約他出來打球,你的手機伸手給你一摑腦:「電話號碼都沒有,我tm去哪給你找cxk?」


2.工作原理

一般查詢步驟:

緩存-->hosts文件(寫入了一些域名和ip的綁定關係) -->本地DNS伺服器-->轉發器-->根伺服器(內置13個地址)以新浪為例,查詢.cn(根)-->查詢.com.cn-->查詢sina.com.cn

對於我們的電腦來說,只進行遞歸查詢(沒錢就跟你爸要,就是不去打工賺錢)。而DNS伺服器之間往往進行迭代查詢(我兒子沒錢了,我有錢就給他,沒錢就去賺錢)。遞歸查詢不包括5-6步。


3.其他

一個網址可能有多個ip與之對應

比如訪問百度,baidu.com解析出來的可能是14.215.177.39,也可能是119.75.217.109以及其他很多ip。這裡涉及DNS的記錄知識,有興趣的可以自行了解一下。好處是高可用性(一個伺服器掛了,另一個仍然可以被訪問)以及負載均衡(所有病人都詢問同一個醫生,這誰頂得住啊)。

上文提到使用手機數據熱點可以打開,但是很卡

是因為使用的是8.8.8.8(谷歌提供,伺服器在美國)作為固定的DNS解析伺服器而不是運營商給手機分配的DNS伺服器(本地)。這就相當於本來可以在學校超市買牙膏,你非要坐高鐵回家買然後再坐高鐵回來。一般8.8.8.8是作為最低生活保障出現的。當然也有國內比較好用的DNS地址,這裡就不多作介紹,搜一下有很多。


4.為什麼阻斷公共DNS?

按照學校的做法,只能使用10.1.1.1和10.1.89.98兩個內網(私有、學校自己的)DNS伺服器地址。

目的大致如下:

1)方便訪問校園內網,訪問速度優化。

假如你的學校網站是xxx.edu.cn,學校里建了一個校內資源網站movie.xxx.edu.cn。這個域名沒有註冊,並不是公有域名,所以公有DNS伺服器找不到這個域名對應的ip地址。這個時候,學校自己的DNS伺服器里會寫上一個記錄,把movie.xxx.edu.cn對應上10.2.2.2。這樣你就可以通過校園網訪問校內資源網站了。

以及其他所有學校自建的內網地址都可以這樣訪問,省去了數據包跑上互聯網一頓亂找的過程。

2)節省帶寬

DNS查詢是以數據包傳輸形式進行的,它一定是會佔用你的帶寬。個人網路被佔用的情況或許不嚴重,但是校園網出口帶寬是上千上萬人在用。利用本地DNS伺服器,可以在很多情況下,直接通過查看緩存等方式返回ip地址,而不需要進行更複雜的迭代查詢。

一次迭代查詢抓包實驗

3)限制

就是你訪問什麼它都會過濾一遍,你懂的。

4)其他

對公網DNS不信任、會被公網DNS拒絕等並不是很常見的情況。

一般場景下,qq能用(使用ip,不使用域名),但網頁打不開,就幾乎一定是DNS的問題。但具體是刪掉手動配置的DNS地址,還是添加一個公有DNS地址視情況而定。在校園網的特殊情況下,往往是刪掉,使用自動分配的DNS地址。

推薦閱讀:

相关文章