天天看點

解決DNS污染與劫持之使用特殊DNS端口解決DNS污染與劫持之使用特殊DNS端口

解決DNS污染與劫持之使用特殊DNS端口解決DNS污染與劫持之使用特殊DNS端口

os:ubuntu 12.04 lts

軟體:dnsmasq

dns測試:

dig www.facebook.com @8.8.8.8 +short

37.61.54.158

dig www.facebook.com @208.67.222.222 -p 443

31.13.79.49

31.13.79.49為facebook的正确位址。google的dns服務不支援特殊端口查詢,但opendns支援,其ip為208.67.222.222,208.67.222.220,支援的特殊端口為443,5353。

在ubuntu中,我們可以用dnsmasq來指定被污染ip用特殊端口查詢.

從ubuntu 12.04開始網絡管理器預設開啟了dnsmasq,但出于安全的考慮沒有開啟其緩存功能。這個改動至少在我這裡導緻了一些問題,比如偶爾出現網速變慢。 經過嘗試,可以完全禁用該服務,或者設定使用谷歌dns服務,同時開啟dnsmasq的本地緩存(可以大幅提高重複通路網站時的響應速度)。

完全禁用的方法:

sudo vim /etc/networkmanager/networkmanager.conf

注釋掉裡面的dns=dnsmasq

然後重新開機網絡管理器

sudo restart network-manager

重新安裝完整dnsmasq:

sudo apt-get install dnsmasq

 然後

sudo vi /etc/resolv.conf

 確定resolv.conf内容為:

nameserver 127.0.0.1

sudo vim /etc/dnsmasq.conf

直接在檔案最後添加:

listen-address=127.0.0.1

bind-interfaces

cache-size=100000

domain-needed

resolv-file=/etc/resolv.dnsmasq

server=/facebook.com/208.67.222.222#5353

 其中

即可指定通路facebook網站時向opendns的5353端口進行dns請求,以此類推。

這個設定支援泛解析,比如

server=/com/208.67.222.222#5353

即指定所有.com域名。

重新開機dnsmasq:

sudo service dnsmasq restart

 再測試dns:

dig www.facebook.com +short

 若傳回31.13.79.49或其他不在虛假ip表裡的ip即成功。

ps:用指令

ps -fc dnsmasq|more

 查閱得知dnsmasq在ubuntu中的dns設定在/var/run/dnsmasq/resolv.conf中。

dnsmasq的日志記錄在/var/log/syslog中。

原文釋出時間:2014-08-11

本文來自雲栖合作夥伴“linux中國”