DNS反劫持的几种方式
? ? ? ? 家里聯通寬帶到期,之前使用的時候感覺出口速度并不好,聽說移動寬帶因為用的人少,出口帶寬不錯,準備換一下試試.臨上馬之前先考察一下,普遍反映移動的DNS限制比較多,各種DNS劫持.要是能有辦法檢測到自己正在使用的DNS是哪個就好了,還好有這個:
? ? ? ??http://dnsleaktest.com/
? ? ? ??
? ? ? ? 結果如下:
? ? ? ??
? ? ? ? 檢測之前已經把本機DNS設置成114.114.114.114了,從結果上看果然有問題,應該是使用了透明DNS代理的技術,導致DNS泄漏.
? ? ? ??
? ? ? ? 總結一下:
? ? ? ??DNS劫持,劫持單條DNS查詢信息,返回不正確的結果.
? ? ? ??透明DNS代理,劫持所有查詢信息,只要是經過運營商網關的發往53端口的UDP類型的DNS協議,全部都轉移到自己DNS服務器上去,所以在本機上設置是沒用的.
?
? ? ? ??這樣一來,即使在內部網絡中部署了DNS服務器也只可以起到加速作用,依然無法反劫持.因為內網中的DNS服務器向上級DNS服務器請求時的數據同樣會被透明DNS代理劫持到ISP的DNS上.內部DNS服務器緩存的數據依然是被污染過的.
?
? ? ? ??如果想突破這種劫持,有三種方式. 這三種方式,都需要在本機對DNS請求數據進行預處理,所以本機都需要部署處理程序,同時將本地DNS設置為127.0.0.1.
? ? ? ??1.???使用DNS協議的TCP形式.
? ? ? ??按照約定,DNS服務器都要同時實現TCP形式的DNS協議處理.這樣一來,只需要在本地把UDP形式的協議轉換為TCP形式就可以了.可以使用的工具有:
? ? ? ??(1)? socat
? ? ? ??socat是linux下很好用的端口轉發工具,支持UDP轉TCP,試用了一下,并不好用,經常各種錯誤.
? ? ? ??使用方法倒是很簡單: socat udp4-listen:53,reuseaddr,fork TCP:114.114.114.114:53
? ? ? ??socatwindows版本的下載地址
? ? ? ??(2)? Tcp-DNS-proxy和pwx-dns-proxy
? ? ? ??這兩個都是專門的DNS協議轉換工具,實際使用了一下,效果都很不理想,速度很慢.
? ? ? ? (3)pdnsd
? ? ? ? 這個其實是個dns服務器,需要設置向上級服務器請求時只使用TCP格式.貌似也就這個方案比較靠譜.
? ? ? ??之前還有嘗試過其他的端口轉發工具,要么不支持UDP,要么號稱支持UDP,但是只支持UDP到UDP,不支持UDP到TCP.
? ? ? ??2.???使用加密軟件對DNS請求和回復數據進行加密.
? ? ? ??這種方式的弊端是,既然內部有加密,外部必須有一個相應的解密工具.對個人來說,外部還需要部署一套專門的解密工具,需要VPS,代價有點大.
? ? ? ??使用這種方式的工具找到兩個:
? ? ? ??(1)? dnscrypt
? ? ? ??這個工具貌似很有名,所以本身內置的DNS服務器地址已經大部分被封.速度很不理想,沒有嘗試自己部署服務器端會怎么樣.
? ? ? ??(2)? tcp-over-dns
? ? ? ??沒有具體試用.
? ? ? ??3.???使用其他端口.
? ? ? ??沒有具體試用,沒找到現成的工具.這種方式,需要本地轉發DNS請求到指定端口,然后還需要在外網部署使用特定端口的DNS服務器.同樣需要一臺VPS.
?
總結
以上是生活随笔為你收集整理的DNS反劫持的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《明朝那些事儿》读书笔记
- 下一篇: 税控接口 - 模拟录入