2014年1月21日全國DNS污染始末以及分析(作死)

Facebook

【新唐人2014年1月23日訊】21日大陸網絡大面積處於癱瘓狀態,面對中共當局荒唐的解釋,網友紛紛發文,解密原因。

2014年1月21日 分享 DNSDNS劫持DomainDomain Name SystemGFW域名 41 Comments

丫丫丫~好久都沒見到各位了,Ovear都有點想念各位了。於是今天就來碼一篇=w=

群眾:滾,你的反編譯和海量查詢系統呢

Ovear:QAQ Ovear剛剛考完試,也要讓Ovear喘口氣嘛。。那些文章很難寫的,一不小心就被噴的要死

群眾:吃翔翔,看你天天在某群里聊天,還說自己玩過頭掛科了

Ovear:啊哈哈哈哈哈 今天下午出了個大新聞你們知道了

群眾:啊?啥信息,喂別轉移話題

=w=大概今天15:30的時候,Ovear正在調試新的伺服器,結果發現腫么突然上不去了。。結果ping了以下,結果嚇尿了,Ovear的域名都指向到[65.49.2.178]這個IP。Ovear第一反應就是,尼瑪DNSPOD又被黑了! 為什麼說DNSPOD被黑了呢,其實以前DNSPOD就出過一次類似的問題=。=,導致所有的域名都跪了,剛好Ovear這個域名還有測試的幾個域名都是那裡的,然後就到某交流群吐槽。結果管理員說他們的DNS被污染了,Ovear心想不會是全國DNS都被污染了吧。結果烏鴉嘴說中了。。還真的是全國劫持。

然後Ovear就很好奇,到底是怎麼回事呢~有誰能做到這樣的事情~於是就有了以下的分析和科普~

—————–以下內容為Ovear家電腦中病毒所致,跟本人無任何關係,謝絕跨省————————

balablabala說了這麼久,肯定有同學問了,窩又不是學計算機的,(╯‵□′)╯︵┻━┻dns是什麼玩意,跟我有什麼關係!

那麼DNS是什麼呢,Ovear就來科普下┑( ̄Д  ̄)┍。

我們訪問一般是通過域名[Domain]來訪問的,咦DNS怎麼也是D開頭的,難道有關係?說對了!就是有關係:DNS的全稱其實是[Domain Name System]翻譯過來就是域名系統。

在互聯網中,是只存在IP的,IP其實就是一串數字,相當於你家裡的門牌號,大家在網路中想找到你,必須通過這個,所以IP對於每個人來說是唯一的。但是第四代IP都是XXX.XXX.XXX.XXX這樣的,多難記啊,誰會沒事記住IP呢,更何況以後天那麼長的IPV6,要記住不是得要人命!這時候一個聰明的科學家出來,我們給IP加一個別名,大家通過別名不就可以不記住這個IP,也可以知道這個IP了!於是就有了域名[Domain]這個東西.

當你訪問www.ovear.info的時候

電腦的DNS解析系統就會自動問DNS伺服器:尼知道www.ovear.info對應的IP地址是神馬么?

DNS:窩幫你查查,奧,找到了,IP是[122.10.94.169].

Ovear的電腦:謝啦,再見

DNS:恩

對應現實就是,問知道張三的人:尼知道張三家在哪裡么? 回答 在南山區 balabalabla。

當然這樣解釋還是不怎麼恰當的,因為一個DNS伺服器是不可能知道所有域名的地址的,因為這需要耗費極大地代價,所以這時候就出現了遞歸DNS和根DNS。(由於篇幅原因,Ovear就簡單的說一下,其實還是有問題的。Ovear以後再寫一篇文章詳細闡述下DNS的工作原理,或者看[http://en.wikipedia.org/wiki/Domain_Name_System] QAQ)

根DNS是什麼呢?大家想想,每個域名都有一個後綴,比如說ovear是[.info]後綴的。那麼就有一個專門記錄[.info]後綴的dns伺服器,其他後綴也一樣。這個DNS就是該域名的根DNS。

那麼遞歸DNS呢?其實遞歸DNS就是一個代理人,是用來緩解[根DNS]壓力的,如果大家都去問[根DNS],那[根DNS]不早就跪了。畢竟一個人(網站)的地址不是經常變的,所以就有了TTL這一說法,根據DNS的規定,在一個TTL時間呢,大家就認為你家裡(域名所指向的IP)的地址是不會變的,所以代理人[遞歸DNS]在這個時間內,是只會問一次[根DNS]的,如果你第二次問他,他就會直接告訴你域名所指向的IP地址。這樣就可以解決[根DNS]負載過大的問題啦。

順便這一張圖也可以很準確反映出來之前所說的~ =w=

說了這麼久,口水都幹了,那麼DNS到底跟這次事件有什麼關係呢~

首先來看張圖

瓦特!腫么這麼多域名都指向同一個IP了,這是什麼情況0 0。其實這就是典型的[DNS污染]了。

我們知道互聯網有兩種協議,一種是TCP,一種則是UDP了(知道泥煤啊(╯‵□′)╯︵┻━┻都說我不是學計算機的了)。

TCP和UDP的主要差別就是:能不能保證傳遞信息的可靠性。UDP是不管消息是否到達了目標,通過什麼途徑的,他只管我發出去了就好,所以UDP比TCP快得多,但是可靠性沒有TCP好。

而DNS查詢默認就是用的是UDP,那麼就很好劫持啦。在UDP包任何傳輸的路途上,直接攔截,然後返回給接收端就行了。

嘖嘖,說道這大家也隱隱約約知道這次事件的問題了吧,範圍如此之廣的劫持,必須要在各個省市的主幹網上進行,而能處理這麼大數據,同時能控制這麼多主幹網的。。嘖嘖嘖。。。沒錯!就是GFW了~至於GFW是什麼,Ovear在這就不說了,不然可能大家都見不到Ovear了QAQ。

說道這裏,Ovear就準備手動查一下,到底是不是所推測的GFW呢?於是拿到了這個圖(From XiaoXin)

與此同時運維也在各地的伺服器上開始了跟蹤查詢,發現全國各地解析時間均為25ms左右。這時候結論就出來了。

這樣就明顯了,肯定是GFW做的了~~於是Ovear又好奇的查了下,這個IP是什麼來頭,為什麼都要指向到這裏去,於是Ovear發現了一些好玩的東西~(http://bgp.he.net/net/65.49.2.0/24#_dns)

從側面點出了此次事件的始作俑者。

那麼某FW為什麼要這麼做呢?Ovear在這裏做一個無責任的推測,最有可能的就是:某FW的員工本來是想屏蔽這個IP段的,但是呢一不小心點進去了DNS污染這個選項,然後又沒寫污染目標,於是就全局污染了嘖嘖嘖~

但是有些童鞋會問了(╯‵□′)╯︵┻━┻為什麼他們都說用8.8.8.8就沒事了~

其實這樣子說是不正確的,因為Ovear之前用的就是8.8.8.8,上面也說了DNS查詢默認使用的UDP查詢,所以不管你用什麼,照樣劫持不誤。其實8.8.8.8沒問題是因為污染事件已經基本結束導致的,那麼為什麼污染結束后其他國內DNS都不能用,而Goole的DNS確可以正常的使用~於是Ovear就找到了張有趣的圖片~

我先來解釋下上面命令的用途吧~這個命令是用來直接向DNS伺服器查詢域名的~

其中的[-vc]參數是強制使用TCP來查詢DNS伺服器,這樣就可以避免UDP污染的地圖炮。

那麼為什麼污染結束后,DNS還會受到污染呢?其實原因很簡單。Ovear之前說了,[遞歸DNS]是需要詢問[根DNS]的,而默認的詢問方式是採用的UDP,所以在國內的DNS伺服器,自然就受到污染了。而之前Ovear也提到過TTL這件事~

在TTL周期內,根據協議[遞歸DNS]是直接吧結果緩存在自己那,是不會再去查詢[根DNS]的,所以國內的DNS就把錯誤的結果緩存起來了~

而Google的DNS伺服器基本都是在國外,所以查詢的時候影響並不大,但是國內挺多域名使用DNSPOD啦,DNSLA的DNS,所以Google進國內查,還是會受到一定影響的。

因此,如果要完全避免這次的影響,有兩個條件

1、你的域名的DNS必須是在國外

2、你查詢的DNS必須在國外,而且如果在污染期需要通過TCP查詢。

這樣就可以避免這個問題了。

然後Ovear又手賤查了下這次的TTL,嘖嘖

如果沒有人員來手動干預,這次的事件還是要持續蠻久的~。

另外Ovear在這裏奉勸一句媒體,不要聽風就是風,聽雨就是雨。不要一味的把責任推給無關的DNSPOD等廠商。自己要有判斷力。

順便引用江主席的一句話

媒體啊,還是要提高自己的知識水平,曉得不曉得啊?(裝幽默)唉,我也替你們著急啊,真的

哎呀先不說了,我去開門收個快遞~,雙十二買的好東西終於到了~,回來繼續說O(∩_∩)O~~

相關文章