您好,登錄后才能下訂單哦!
在開始寫這篇文章之前,先要普及一個知識中國長城防火墻(英文名:Great Firewall of China)好偉大的樣子,是XX專門用來對網民進行網絡封鎖,閉關鎖國的的工具。最近一批google.com, youtube.com, facebook.com, dropbox.com等一批國外知名網站,均無法正常訪問,就是拜其所賜。它所實現的主要屏蔽技術有IP封鎖,關鍵字過濾,域名劫持與污染以及HTTPS證書過濾四種。本文主要通過dnscrypt技術反其dns劫持與污染。
先了解一下什么是DNS劫持和DNS污染,其實兩者并不是一個概念。大家都知道主機之間的通信通過ip來標識對方主機,但是IP不容易記憶,后來提出了域名的概念,比如www.baidu.com, 域名與IP之間就是通過DNS解析聯系起來,實現了域名與IP之間的映射。這份映射關系存儲在DNS服務器上。
什么是DNS劫持
DNS劫持一般發生在某些網絡運營商身上,DNS劫持就是劫持了DNS服務器,獲取DNS服務器的控制權。通過某些手段修改這些域名的目的解析IP地址。DNS劫持通過篡改DNS服務器上的數據,給用戶返回一個錯誤的查詢結果來實現的。
DNS劫持癥狀:在某些地區的用戶在成功連接寬帶后,首次打開任何頁面都指向ISP提供的“電信互聯星空”、“網通黃頁廣告”等內容頁面。還有就是曾經出現過用戶訪問Google域名的時候出現了百度的網站。這些都屬于DNS劫持
應對DNS劫持,只需要在網絡配置中把DNS服務器地址配置成國外的DNS服務器地址就可以解決,比如谷歌提供的DNS服務器地址:8.8.8.8 8.8.4.4
什么是DNS污染
DNS污染是一種讓一般用戶由于得到虛假目標主機IP而不能與其通信的方法,是一種DNS緩存投毒***(DNS cache poisoning)。其工作方式是:由于通常的DNS查詢沒有任何認證機制,而且DNS查詢通常基于的UDP是無連接不可靠的協議,因此DNS的查詢非常容易被篡改,通過對UDP端口53上的DNS查詢進行***檢測,一經發現與關鍵詞相匹配的請求則立即偽裝成目標域名的解析服務器(NS,Name Server)給查詢者返回虛假結果。
DNS污染癥狀:目前一些被禁止訪問的網站很多就是通過DNS污染實現的,例如YouTube、Facebook、DropBox等網站。
對于DNS污染,普通用戶是不能夠通過簡單地設置國外DNS服務器就能解決的。需要用到這篇所講的重點:DnsCrypt-proxy,我通過這種方式解決了對Dropbox的訪問封鎖。
先看下谷歌DNS服務器(8.8.8.8)對www.dropbox.com的解析情況
電信DNS服務器(114.114.114.114
)對www.dropbox.com
的解析情況
www.dropbox.com
均被解析到 59.24.3.173
這個IP, 這是一個韓國IP,使用站長ping工具檢測一下,全部超時,我只截取其中的一部分,如果服務器不通或禁ping,則全部超時。
無論我們是從谷歌服務器還是電信服務器拿到的數據包,在到手之前均被長城防火墻進行篡改。為了防止這份數據被篡改,我們需要借助DNSCrypt這款工具保證我們的dns查詢數據包不被篡改。
DNSCrypt是OpenDNS發布的加密DNS工具,可加密DNS流量,阻止常見的DNS***,如重放***、觀察***、時序***、中間人***和解析偽造***。DNSCrypt支持Mac OS和Windows 以及Linux,是防止DNS污染的絕佳工具。我在Mac OS與Centos上均做了嘗試。
在Mac OS
與 Linux
上的安裝非常簡單,按照項目主頁的文檔一步一步操作即可。
brew install dnscrypt-proxy
#安裝依賴
cd /usr/local/src/
wget "https://download.libsodium.org/libsodium/releases/libsodium-0.5.0.tar.gz"tar -xzvf libsodium-*.tar.gzcd libsodium-*
./configure
make
make install
ldconfigecho /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.confcd /usr/local/src/
wget "http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.4.0.tar.bz2"bunzip2 -cd dnscrypt-proxy-*.tar.bz2 | tar xvf -cd dnscrypt-proxy-*
./configure
make
make install
dnscrypt_proxy的用法可以通過man 8 dnscrypt_proxy
查詢
在啟動之前,需要注意一項,因為dnscrypt_proxy作為查詢代理是對通信加密的,這也要求目的dns服務器也要支持,項目主頁提供一份可用列表
啟動腳本
最后我們可以看到建立了本機53端口與目的主機443端口的鏈接;按照官網的提示,如果我們安裝成功,當我們執行dig txt debug.opendns.com
,會看到debug.opendns.com. 0 IN TXT "dnscrypt enabled (......)"
這樣的輸出。
恭喜,我們成功了,下一步我們只需要把本機的dns服務器指向到這臺代理即可
再來查看下www.dropbox.com
的解析情況
訪問一下 https://www.dropbox.com
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。