Dnsmasq加速本地DNS請求


 

 

 

默認的情況下,我們平時上網用的本地DNS服務器都是使用電信或者聯通的,但是這樣也導致了不少的問題,首當其沖的就是上網時經常莫名地彈出廣告,或者莫名的流量被消耗掉導致網速變慢。其次是部分網站域名不能正常被解析,莫名其妙地打不開,或者時好時壞。

如果碰上不穩定的本地DNS,還可能經常出現無法解析的情況。除了要避免“壞”的DNS的影響,我們還可以利用DNS做些“好”事,例如管理局域網的DNS、給手機App Store加速、糾正錯誤的DNS解析記錄、保證上網更加安全、去掉網頁討厭的廣告等等。

這時候搭建一個屬於自己的本地DNS服務器就十分必要了,本篇文章就來分享一下Dnsmasq安裝與配置方法,利用Dnsmasq來搭建一個屬於自己的本地DNS服務器,享受更干凈無污染、更智能快速和沒有廣告干擾的DNS解析服務。

選擇好的本地DNS可以讓我們上網更快更舒心,而對於網站,選擇一個好的DNS域名解析服務也是十分重要:

Dnsmasq安裝與配置-搭建本地DNS服務器 享受更干凈更快無廣告DNS解析

一、Dnsmasq安裝

1、執行以下命令在VPS上安裝Dnsmasq:


yum install dnsmasq -y 
service dnsmasq start 

 

二、Dnsmasq配置

1、Dnsmasq的配置文件是放在 /etc/dnsmasq.conf 中。

 

2、打開編輯,配置:resolv-file=/etc/resolv.dnsmasq.conf,表示dnsmasq 會從這個指定的文件中尋找上游dns服務器。同時取消 strict-order 前面的注冊#號。

 

3、檢查一下no-hosts前面是不是已經有了#號,默認的情況下是有的,dnsmasq 會首先尋找本地的 hosts 文件再去尋找緩存下來的域名, 最后去上游dns 服務器尋找。

 

4、設置:listen-address=127.0.0.1,表示這個 dnsmasq 本機自己使用有效。注意:如果你想讓本機所在的局域網的其它電腦也能夠使用上Dnsmasq,應該把本機的局域網IP加上去:listen-address=192.168.1.123,127.0.0.1

 

5、修改好了dnsmasq.conf 后,就可以將它重新上傳覆蓋原文件了。

6、另外我們還需要修改/etc/resolv.conf這個文件,執行以下命令:


echo 'nameserver 127.0.0.1' > /etc/resolv.conf
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.dnsmasq.conf
echo 'nameserver 199.91.73.222' > /etc/resolv.dnsmasq.conf
cp /etc/hosts /etc/dnsmasq.hosts
echo 'addn-hosts=/etc/dnsmasq.hosts' >> /etc/dnsmasq.conf

 

7、resolv.dnsmasq.conf中設置的是真正的Nameserver,可以用谷歌、V2EX等公共的DNS。

三、Dnsmasq啟動

1、執行以下命令設置Dnsmasq開機啟動並啟動Dnsmasq服務:


chkconfig dnsmasq on
/etc/init.d/dnsmasq restart

 

2、執行命令:netstat -tunlp|grep 53 可以查看Dnsmasq是不是已經正常啟動:

 

3、測試:dig www.freehao123.com,第一次是沒有緩存,所以時間是200多。

 

4、第二次再次測試,因為已經有了緩存,所以查詢時間已經變成了0.

 

四、Dnsmasq使用

1、本地DNS。將Dnsmasq作為本地DNS服務器使用,直接修改電腦的本地DNS的IP地址即可。

 

2、應對ISP的DNS劫持。輸入一個不存在的域名,正常的情況下瀏覽器是顯示無法連接,DNS劫持會跳轉到一個廣告頁面。先隨便nslookup 一個不存在的域名,看看ISP商劫持的IP地址。

 

3、接着編輯/etc/dnsmasq.conf文件,將:bogus-nxdomain=123.123.123.123 加入進去,后面的IP是剛剛查詢到的DNS劫持IP地址。

4、重啟dnsmasq,再嘗試打開不存在的域名,這時瀏覽器就會顯示正常的無法連接頁面了。

 

5、智能DNS加快解析速度。打開/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如國內外不同的網站使用不同的DNS。


#國內指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
#國外指定DNS
server=/google.com/223.5.5.5

6、server=/cn/表示所有的cn域名都使用114這個公共DNS,server=/taobao.com/表示所有的taobao.com域名都用114,223.5.5.5 是阿里雲的公共DNS,你可以換成其它的。

7、屏蔽網頁廣告。將指廣告的URL指定127這個IP,就可以將網頁上討厭的廣告給去掉了。


address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1

8、指定域名解析到特定的IP上。這個功能可以讓你控制一些網站的訪問,非法的DNS就經常把一些正規的網站解析到不正確IP上。


address=/freehao123.com/123.123.123.123

9、內網DNS。首先將局域網中的所有的設備的本地DNS設置為已經安裝Dnsmasq的服務器IP地址。然后修改已經安裝Dnsmasq的服務器Hosts文件:/etc/hosts,指定域名到特定的IP中。

10、例如想讓局域網中的所有用戶訪問www.freehao123.com時跳轉到192.168.0.2,添加:192.168.0.2 www.freehao123.com在Hosts文件中既可,整個過程也可以說是“DNS劫持”。

[qiangjian@be001 ~]$ dig g.cn 

; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> g.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42317
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 8

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;g.cn.				IN	A

;; ANSWER SECTION:
g.cn.			234	IN	A	203.208.40.151
g.cn.			234	IN	A	203.208.40.152
g.cn.			234	IN	A	203.208.40.143
g.cn.			234	IN	A	203.208.40.159

;; AUTHORITY SECTION:
g.cn.			86334	IN	NS	ns3.google.com.
g.cn.			86334	IN	NS	ns1.google.com.
g.cn.			86334	IN	NS	ns2.google.com.
g.cn.			86334	IN	NS	ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com.		345210	IN	A	216.239.34.10
ns3.google.com.		101918	IN	A	216.239.36.10
ns4.google.com.		97664	IN	A	216.239.38.10
ns1.google.com.		97664	IN	AAAA	2001:4860:4802:32::a
ns2.google.com.		155008	IN	AAAA	2001:4860:4802:34::a
ns3.google.com.		94591	IN	AAAA	2001:4860:4802:36::a
ns4.google.com.		94591	IN	AAAA	2001:4860:4802:38::a

;; Query time: 1 msec   #查詢時間從86 msec到 1msec
;; SERVER: 10.55.21.254#53(10.55.21.254)
;; WHEN: Thu Jun 28 15:01:22 CST 2018
;; MSG SIZE  rcvd: 339
  

五、Dnsmasq小結

1、Dnsmasq作為本地DNS服務器安裝方便,操作簡單,改動的地方也不是很多,如果用國內的VPS來搭建本地DNS,響應的速度會更快,也更穩定。

2、Dnsmasq的功能強大,反DNS劫持、加快解析速度、屏蔽廣告、控制內網DNS、強制域名跳轉到特定IP上等這些功能在我們的實際的生活中都是很有用的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM