dnsmasq是一个超好用的dns解析工具!在openwrt系统里面就默认使用dnsmasq。
dnsmasq的下载地址:http://www.thekelleys.org.uk/dnsmasq/
我选择的是最新的版本:dnsmasq-2.72
wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.72.tar.gz
解压:
tar xf dnsmasq-2.72.tar.gz
编译:
cd dnsmasq-2.72
make V=s
一切都非常顺利¬_¬
源码make不带etc等等,然后我很无耻地用yum install安装dnsmasq……
yum install dnsmasq
自带安装的2.4……所以……复制2.7的文件覆盖……
cp -f ./src/dnsmasq /usr/sbin/dnsmasq
好了……终于用上最新版本的dnsmasq了……(强迫症患者福音)
然后我们需要修改下必要的设置……
1 2 3 4 5 6 | cd /etc ls dns* -rw-r--r-- 1 root root 21214 Jun 16 2014 dnsmasq.conf dnsmasq.d: total 0 |
可以看到设置默认有dnsmasq.conf和dnsmasq.d文件夹……
自带的dnsmasq.conf有一堆说明,我们可以直接清空来写自己的设置,当然你喜欢的话可以留着当说明书……
1 2 3 | #备份原来的dnsmasq.conf mv dnsmasq.conf.bal dnsmasq.conf.bak vi /etc/dnsmasq.conf |
1 2 3 4 5 6 7 8 9 10 11 | #因为我是配合dnscrypt-warpper用的,就不用作本地解析了 #同时查询所有dns服务器,加速查询 all-servers #定义恶意网站的host文件路径 addn-hosts=/etc/dnsmasq-host/banhost #dnsmasq缓存设置,缓存解析条数,默认是150 cache-size=1024 #设置监听地址127.0.0.1只为本机使用 listen-address=127.0.0.1 #设置监听端口,自己喜欢,不冲突就行 port=553 |
然后我们新建一个host测试下:
1 2 3 | mkdir dnsmasq-host cd dnsmasq-host vi banhost |
添加一条host:
1 | 8.8.8.8 qq.com |
敲入dnsmasq启动,安装dig等工具包先:
1 2 | dnsmasq yum install bind-utils |
然后就可以用dig命令测试下host是否生效:
1 | dig -p 553 qq.com @127.0.0.1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> qq.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63133 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;qq.com. IN A ;; ANSWER SECTION: qq.com. 0 IN A 8.8.8.8 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Apr 30 23:46:11 2015 ;; MSG SIZE rcvd: 40 |
很好,生效了。
然后我们再测试下,把5.6.7.8 baidu.com添加进去,再dig一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> baidu.com @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6544 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;baidu.com. IN A ;; ANSWER SECTION: baidu.com. 147 IN A 123.125.114.144 baidu.com. 147 IN A 220.181.57.217 baidu.com. 147 IN A 180.149.132.47 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Apr 30 23:49:58 2015 ;; MSG SIZE rcvd: 75 |
卧槽问题来了,原来这个host文件是在一开始就加载,之后就不再读取了!也就是说,我用计划任务自动更新host的话不会起作用!(╯‵□′)╯︵┻━┻
然后我修改dnsmasq.conf,添加conf-dir=/etc/dnsmasq.d的命令,然后重启dnsmasq,在dnsmasq.d目录下新建一个banhost文件,写入一个规则例如:
1 | address=/youku.com/4.3.2.1 |
然后dig发现不奏效╮(╯▽╰)╭……
好吧,不管了,把计划任务弄成更新host后自动重启dnsmasq就好了……
添加恶意网站host并自动更新
首先,恶意网站列表来自恶意网站实验室:
http://dn-mwsl-hosts.qbox.me/hosts.txt
然后我们新建一个自动下载host的脚本:
1 2 | cd ~ vi banhost-update |
1 2 3 4 5 | #!/bin/sh rm -rf /etc/dnsmasq-host/banhost wget -t0 http://dn-mwsl-hosts.qbox.me/hosts.txt -O /etc/dnsmasq-host/banhost sleep 3 service dnsmasq restart |
1 | chmod +x ~/banhost-update |
添加计划任务:
1 | crontab -e |
添加一行:
1 | 33 2 * * * /root/banhost-update>/dev/null |
该计划任务表示每天2:33执行banhost-update更新恶意网站列表~~~
原文链接:https://03k.org/linux-install-dnsmasq.html
本站博文无特别声明均为原创,转载请注明原文链接。本站软件均搜集自互联网,供学习研究之用,请下载后24小时内删除。
疑问OR交流点我加QQ群喵喵喵!
折腾好久,不知道为什么我的腾讯云配置文件里的listen-address得写两个才能用
listen-address=127.0.0.1
listen-address=10.*.*.*
第二个是我的内网ip
直接写0.0.0.0外网内网都不能用
dnsmasq的min-cache-ttl限制了1小时以内,网络不好的情况下有点蛋疼,经常卡在dns解析上