1. 程式人生 > >DNS 劫持和DNS 汙染

DNS 劫持和DNS 汙染

DNS 是domain name server 的簡稱。

當然如果你搜索到這篇文章,那麼我猜測你可能對DNS也有一定的瞭解了。所以對DNS的基本知識我就不在介紹了。。

DNS 劫持

舉個例子,說到劫持,我們可能聯想到一個壞蛋劫持了DNS伺服器,拿著刀架在脖子上。

這時候你問DNS伺服器,博主帥嗎?(發出請求)。
DNS伺服器聽到了,他心裡的答案是,好帥哦(返回正確ip地址)。
由於壞蛋控制了他,並且對他做了修改。所以DNS只好不情願的說,你真醜(錯誤的ip地址)。

這個過程中,你和DNS伺服器之間,一來一回,流程上沒有任何問題,唯一的問題就是,DNS伺服器告訴了你錯誤的ip地址。DNS也不想啊,但是有人控制了他的許可權,或者修改了他的記錄值等等。我們稱為DNS劫持。

類似我們使用網路的時候,明明訪問的是普通網站,卻突然跳到什麼電信什麼宣傳頁面一樣。

我們大膽分析下。其實這種情況不多見,偶爾出現一次。我猜測是因為,平時DNS 有瀏覽器的快取,還有作業系統的快取,一般不太請求到運營商的DNS伺服器,而好久不上,可能快取已經失效,在請求直接到了運營商的DNS伺服器上,那可能就會被劫持一下。同時,雖說好久不上,但也不是每次都能遇到,也可能和運營商分配的ip地址有關,有可能當你的ip變動,並且符合運營商的一些規則,他們就劫持一下。

第一個我覺得還靠譜點,第二種情況屬於臆測。。。這些不是重點。

DNS 汙染

這招是GFW常用的,舉例子說吧。
你訪問google.com 因為人家伺服器在國外,你的DNS過去解析,肯定要走國際頻寬的出口,然後就被GFW逮住了。因為DNS 走的是UDP協議,且UDP又沒有什麼校驗機制,只管傳送。所以這時候,GFW就假裝成DNS伺服器迴應你了,而此時真正的請求可能正在被真正的DNS伺服器處理,假的已經返回給你了,瀏覽器就選擇了最快返回的那個地址去解析了。當然是一個不可用的地址啦。

因為DNS 走的UDP協議,並且是53埠,所以這有多好發現也就不言而喻了。如果你強行讓DNS走TCP協議,GFW 有辦法讓你連線重置,雖然汙染不了你的DNS,但是你還是無法獲得ip。

也就是為什麼有一種FQ方式就叫修改host 檔案,修改後,域名不需要去DNS伺服器請求了,直接在你的作業系統裡就已經解析出了ip 地址。但是,GFW還是會定期封殺這些網站的ip地址,你的host就沒用了。

好了,別的不扯,DNS劫持和DNS汙染這兩個不同的東西,能區分開了吧