Dnsmasq是一个很实用的小工具,解决局域网的需求看来非常合适,特别是网关和防火墙上。
它同时也可以作为一个dns查询服务器,虽然不如bind等完善,但基本功能也够用了。
它可以提供如下几个实用的功能:
1 提供dns服务
2 优先使用本地自定义dns
3 提供dhcp服务
能有效解决区域网问题如下:
1 局域网有很多机器希望使用一份一样的hosts定义一批名称对应的ip,你需要经常维护这份列表
2 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以
3 禁止某个域名的正常解析
本文主要讲述dnsmasq 安装、配置、域名解析、域名屏蔽等内容
1.安装dnsmasq:
1 | yum install dnsmasq -y |
喜欢编译安装的,可以访问下面的连接下载源码文件!
http://www.thekelleys.org.uk/dnsmasq/
2.修改系统配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 202.106.0.20' > /etc/resolv.dnsmasq.conf cp /etc/hosts /etc/dnsmasq.hosts |
3.dnsmasq配置
dnsmasq的配置文件为/etc/dnsmasq.conf,编辑该文件,添加内容如下:
1 2 3 4 5 6 7 | cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak #先做个备份 echo 'resolv-file=/etc/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf echo 'addn-hosts=/etc/dnsmasq.hosts' >> /etc/dnsmasq.conf |
4.添加开机启动并启动服务
1 2 3 4 5 | chkconfig --add dnsmasq chkconfig dnsmasq on service dnsmasq start |
重启
1 | /etc/init.d/dnsmasq restart |
验证服务器已启动!@
[root@master ~]#
1 2 3 4 5 | netstat -tunlp|grep 53 tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 10246/dnsmasq udp 0 0 0.0.0.0:53 0.0.0.0:* 10246/dnsmasq |
确认服务启动后,就可以将客户端PC的DNS服务器指向dnsmsq服务器(注意iptables),可以正常访问网络页面为正常!
5.测试
[root@cn-ptmind ~]#
1 | dig www.xmspace.net |
中间省略。。。。。
;; Query time: 50 msec #首次查询域名使用50Mms!!!!
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Oct 8 12:51:50 2013
;; MSG SIZE rcvd: 48
[root@cn-ptmind ~]#
1 | dig www.xmspace.net |
中间省略。。。。。
;; Query time: 0 msec #再次查询域名使用0Mms,说明已经缓存!!!!!!!!
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Oct 8 12:51:53 2013
;; MSG SIZE rcvd: 48
6.域名解析、域名解析
只需要在配置文件下面添加一条address即可!
root@cn-ptmind ~]#
1 2 3 4 5 6 7 8 9 10 11 | vi /etc/dnsmasq.conf resolv-file=/etc/resolv.dnsmasq.conf addn-hosts=/etc/dnsmasq.hosts address=/kkk.ptmind.com/118.126.32.53 #随便写一条不存在的域名,指向我们的一个页面! |
重启服务后在客户端浏览器访问,发现打开页面是指定页面。
通过此方法可以实现泛域名解析、屏蔽等,这是hosts不可能实现的。
例如输入*.domain.name->127.0.0.1则将会把所有domain.name下的域名都指向127.0.0.1,从而实现过滤功能。
小提示:
例如过滤时输入*.it168.com->127.0.0.1,那么不管我们访问wireless.it168.com还是safe.it168.com都将被过滤掉而无法顺利显示相应页面。
而编辑HOSTS时我们则需要针对wireless.it168.com和safe.it168.com两个地址添加两个不同的条目才能实现过滤规则。
如同我们配置本地hosts文件屏蔽广告一样,也可以在这里配置
域名解析屏蔽广告—-当然你要把dns服务器地址设成它而非直接ISP的。
比起本地hosts来
1. 配置一次,内网所有机器各种系统都生效
2. 可以实现泛域名解析,这用hosts是不可能的
【ps: addn-hosts=/etc/dnsmasq.hosts的优先级大于address=/domain.name/127.0.0.1】
这样*.domain.name都会解析到127.0.0.1
需要新的就多加一行address=….格式一样