1. 程式人生 > >Linux 下 DNS 汙染解決辦法

Linux 下 DNS 汙染解決辦法

軟體:dnsmasq

dns測試:

dig www.facebook.com @8.8.8.8 +short
37.61.54.158

在wiki詞條域名伺服器快取汙染中可以發現37.61.54.158在虛假ip地址中,說明此dns已遭汙染。

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

其中

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即成功。