DNS原理及劫持問題

夢共裡醉發表於2019-05-20
對於網際網路,人們總是高談闊論,卻很少有人願意去了解電腦、手機、電視這些裝置到底是如何被“連線”起來的。本文透過“我”,一個普通的網路請求的視角,給大家介紹下“我”的工作流程是如何的。

人們動動手指,點點滑鼠,圖片、影片便順理成章地即時顯示在螢幕上。只是,這一切並非理所應當,五光十色的網際網路世界之下,是我們在夜以繼日地工作。
我是一個普通的網路請求。我很渺小,但始終都在履行責任——尋找被指定的資源,再將它們交付到我的主人手中。就像這座城市中成千上萬而又默默無聞的快遞小哥,穿梭在大廈與樓宇之間,完成使命。
不同的是,真正的網路環境可不像現代化城市那麼光鮮亮麗。它陰暗、潮溼,充滿了未知的危險,如同一座黑暗森林。而我要做的,就是一場不折不扣的冒險。

URL與IP到底是什麼?

我的冒險,要從一張“羊皮卷”說起。那天,瀏覽器大叔神秘兮兮招呼我過去,告訴我CPU下達了一個 :派遣使者訪問外邦。而我是大叔最得力的門生,也是這類任務最合適的人選。大叔為我準備了一張羊皮卷,上面記錄了我這次冒險需要用到的必要資訊。
當仁不讓地,我接過了它,即刻啟程。
我緩緩展開羊皮卷,第一行赫然寫著:URL:
什麼是“URL”?我在腦中快速回憶著,對了!URL即 Uniform Resource Locator的縮寫,翻譯成中文便是“統一資源定位符”。因為網際網路世界存在著不計其數的資源,每一處資源都需要有一個標記來定位它,正如人類城市中的門牌號。
有人可能會認為,既然有了門牌號,找到指定地點不是輕而易舉嗎?朋友們,我也希望如此,但現實往往沒有這麼簡單。
即使有了URL,恕我愚笨,我還是無法直接理解它所指向的目的地。因為這是人類的語言,我無法翻譯解讀。(其實是人類太笨了,記不住IP地址,需要用方便記憶的域名來代替)
對我來說,IP地址才是唯一的座標。什麼是IP?IP即Internet Protocol的縮寫,中文譯為“網際網路協議”,一個如雷貫耳的名字,網際網路的基石之一,一切依賴網際網路通訊的軟體都得遵循這個協議。
那麼,如何才能將域名轉換為IP地址呢?
瀏覽器大叔在平日工作之餘,十分細心,他將使用者訪問過的站點整理了一份“域名-IP對應清單”。假如是一個已被記錄的IP地址,那麼他會直接告訴我,我可以立即向著目標IP地址出發,這就是瀏覽器快取的作用。
假如使用者輸入的URL不在瀏覽器的記錄範圍之內,那麼作業系統會查詢一個名為“hosts”的檔案。它是一份文字,記錄了域名和IP地址的對映。如果“hosts”能夠告訴我目標IP地址,那也能節省我不少工夫。這就是系統快取。
此外,還有路由器快取,相信不用我多介紹了,即儲存在路由器中的域名-IP對映。
這些快取都能有效幫助我以最快的速度找到相應的IP地址。但是,網際網路世界日新月異,各種資源層出不窮。在很多情況下,使用者會想要訪問一個全新的、任何快取都沒有記錄過的域名。
為此,人類專門設計了DNS。在這次任務中,我的第一站,就是趕往DNS。為了更短的響應時間與更好的使用者體驗,我快馬加鞭。

關於DNS劫持的記憶

DNS是什麼?全稱Domain Name System,是一個將域名和IP相互對映的分散式資料庫。
全球有很多家DNS服務中心,假如你關心過你的計算機,你會發現,在你的網路卡上,有著一項“DNS伺服器”的配置項,它設定了我將要抵達的目的地。
輕鬆瞭解DNS劫持輕鬆瞭解DNS劫持
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
一轉眼的工夫,我來到了114.114.114.114DNS中心。
這個地方我來過很多次,表面上風平浪靜,實則暗流湧動。我小心翼翼地來到辦事大廳,不禁想起了我第一次被DNS劫持的經歷。
那天,我來到辦事視窗,櫃員熱情地接待了我。
“先生,請問你想要查詢哪個地址?”當時我還是一位新晉的網路請求,涉世尚淺,不知曉一些不可說的條例,於是毫不避諱地回答:“你好,我要去大名鼎鼎的mail.google.com!”
櫃員的表情一下子凝固了,他上下打量了我一番,然後硬擠出一絲微笑,“好的先生,請稍等。”說完,他便向旁邊的同事使了個眼色。我正納悶呢,突然兩邊竄出身材魁梧的警衛,架著我強行往一處拖拽。
我這才意識到大事不妙,“這是怎麼回事?!你們憑什麼劫持我?”我發瘋了一般嘶吼著。
“你好,根據本ISP(電信運營商)頒佈的條例,世界上不存在你所說的站點,現懷疑你是一個不合規的網路請求,將把你轉發至baidu.com的IP地址。你有權保持沉默!”警衛冷漠地望著我。
我知道,現在無論如何解釋、掙扎都沒有用了,只怪自己太年輕。無奈,我只好乖乖就範。
輕鬆瞭解DNS劫持輕鬆瞭解DNS劫持
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
還好當時正在使用計算機的使用者有一些網路知識,當他發現自己輸入的是google,返回的是baidu的頁面時,並沒有怪罪於我,大概是他心中已經猜到了原因。於是他將網路卡的DNS配置為:8.8.8.8,這是一個國際上“不存在”的公司提供的DNS服務中心。
僅僅這樣就能暢通無阻地訪問網際網路了嗎?經歷了被DNS劫持,我依然不敢放鬆。

我遇到過DNS投毒

還未休息片刻,瀏覽器大叔再一次地給我分配了任務:繼續嘗試請求mail.google.com的資源。
人類出國要坐飛機,要辦護照。我們網路請求也是這樣,全國只有在幾個主要城市才會部署國際出口,所有訪問境外資源的網路請求,都得經過這兒接受檢查。
與上次不同,因為這次我要訪問的DNS伺服器位於海外,所以我首先來到了大中華區域網的上海國際出口。
我一路奔波到上海真的是又累又乏,正當我火急火燎地準備過安檢,通道附近有一位穿著制服的小夥迎了上來。
還沒等我開口,他熱情地迎了上來:“遠道而來的朋友,一定是十分疲憊了吧?天氣這麼熱,先喝杯水吧!”我悄悄地打量著他,看他的打扮應該是一位服務人員。
“國際出口就是不一樣啊,服務真到位!”由於確實是太渴了,我放鬆了警惕。“啊,真清涼,謝……”我一邊感嘆著,一邊接過了小夥遞給我的水。
可當我第二個“謝”字還沒說出口,立即感到一陣頭暈目眩。
“不好!遇上了駭客,這是DNS投毒!”我的視線漸漸模糊,小夥的微笑也漸漸似乎變成了獰笑。我盡力搜尋著腦海中和這一切有關的知識,想要知道尋求的辦法。
輕鬆瞭解DNS劫持輕鬆瞭解DNS劫持
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
DNS投毒,英文叫DNS cache poisoning,也叫做DNS汙染。從客戶端向DNS伺服器發出查詢IP的請求,到響應返回到客戶端的這段時間裡,如果有駭客或者其他一些不可說的設施偽造返回了一個錯誤的DNS應答,那麼使用者將不能訪問到真正的資源。
想到這裡,我已經明顯感覺難以控制自己的身體了,眼前一黑,就什麼都不知道了。

DNS正常解析

以前發生過的險情歷歷在目,如今想起來,我依舊心有餘悸。這次,為了確保萬無一失,我打起了十二分精神。
這次,我已經順利來到8.8.8.8 DNS服務中心。
“你好親,有什麼可以幫到您的嘛”辦事視窗內傳來了軟妹子的聲音。
“我想查詢域名mail.google.com的IP地址。”我試探性地問,依然不敢鬆懈。
“好的呢親,這邊透過樹狀檢索,在頂級域名com下,查詢到google目錄,在google目錄下查詢到mail,IP地址是xx.xxx.xx.xx呢。”
輕鬆瞭解DNS劫持輕鬆瞭解DNS劫持
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
我鬆了口氣,謝天謝地,終於拿到了結果。可我知道作為一次完整的網路請求,這剛剛開始,這才是萬里長征第一步,我得趕緊將這個解析結果帶回去,等會還得馬不停蹄往返三次建立連線。
輕鬆瞭解DNS劫持輕鬆瞭解DNS劫持


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2644923/,如需轉載,請註明出處,否則將追究法律責任。

相關文章