Dnsmasq是一个很实用的小工具,解决局域网的需求看来非常合适,特别是网关和防火墙上。
它可以提供如下几个实用的功能:
1 提供dns服务
2 优先使用本地自定义dns
3 提供dhcp服务
一般情况下,我们可以用bind解决dns的问题,dhcpd解决dhcp的问题,另外,还可以用ypbind解决自定义hostname解析的ip(当然还有用户的功能),它都解决了!很实用吧?这真的很吸引人,况且它一直在更新维护,最新版本是6月份的。
安装过程很简单:
运行起来就可以解决第一个问题:
默认情况下,作为dns服务,第一个问题解决了。
我们尝试解决第二个问题,可以说是dns劫持?没有那么严重,用好了其实很实用。
有如下几个问题比较棘手:
1 局域网有很多机器希望使用一份一样的hosts定义一批名称对应的ip,你需要经常维护这份列表
2 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以
3 禁止某个域名的正常解析
这个更改涉及两个文件:
1 /etc/hosts
2 /etc/dnsmasq.conf
我们先在hosts文件里加入两行:
编辑dnsmasq.conf,找到如下代码:
重启dnsmasq即可,下面我们在局域网另外一个机器用dig命令测试一下:
#说明:查询公网返回失败
[root@aslibra ~]# dig server1
...
;; QUESTION SECTION:
;server1. IN A
;; AUTHORITY SECTION:
. 9949 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010072501 1800 900 604800 86400
#说明:查询dnsmasq,这里是dig的功能,模拟dns查询,返回hosts文件的设定
[root@aslibra ~]# dig server1 @192.168.1.45
...
;; QUESTION SECTION:
;server1. IN A
;; ANSWER SECTION:
server1. 0 IN A 192.168.1.3
#说明:正常查询
[root@aslibra ~]# dig www.aslibra.com
...
;; QUESTION SECTION:
;www.aslibra.com. IN A
;; ANSWER SECTION:
www.aslibra.com. 1029 IN A 218.241.231.187
#说明:查询dnsmasq,返回hosts文件的设定
[root@aslibra ~]# dig www.aslibra.com @192.168.1.45
...
;; QUESTION SECTION:
;www.aslibra.com. IN A
;; ANSWER SECTION:
www.aslibra.com. 0 IN A 192.168.1.2
#说明:正常查询
[root@aslibra ~]# dig www.baidu.com
...
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
www.a.shifen.com. 600 IN A 119.75.213.50
www.a.shifen.com. 600 IN A 119.75.213.51
#说明:查询dnsmasq,返回配置文件的设定
[root@aslibra ~]# dig www.baidu.com @192.168.1.45
...
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 0 IN A 127.0.0.1
#说明:其它二级域名也不能幸免
[root@aslibra ~]# dig tieba.baidu.com @192.168.1.45
...
;; QUESTION SECTION:
;tieba.baidu.com. IN A
;; ANSWER SECTION:
tieba.baidu.com. 0 IN A 127.0.0.1
至此已经成功解决,dhcp功能可以自行测试,阅读默认配置文件即可,很便捷,可以按机器名称或mac地址分配ip。
另外,重启dnsmasq可以用SIGHUP(可以在修改hosts文件后,让配置生效)
参考阅读:
1 dnsmasq官网
2 dnsmasq手册
3 移植Dnsmasq到Android
4 用dnsmasq解决firefox上网慢
5 dns缓存服务器 dnsmasq
原创内容如转载请注明:来自 阿权的书房
它可以提供如下几个实用的功能:
1 提供dns服务
2 优先使用本地自定义dns
3 提供dhcp服务
一般情况下,我们可以用bind解决dns的问题,dhcpd解决dhcp的问题,另外,还可以用ypbind解决自定义hostname解析的ip(当然还有用户的功能),它都解决了!很实用吧?这真的很吸引人,况且它一直在更新维护,最新版本是6月份的。
安装过程很简单:
wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.55.tar.gz
tar xfz dnsmasq-2.55.tar.gz
cd dnsmasq-2.55
make
make install
cp dnsmasq.conf.example /etc/dnsmasq.conf
tar xfz dnsmasq-2.55.tar.gz
cd dnsmasq-2.55
make
make install
cp dnsmasq.conf.example /etc/dnsmasq.conf
运行起来就可以解决第一个问题:
[root@aslibra dnsmasq-2.55]# dnsmasq
[root@aslibra dnsmasq-2.55]# netstat -nlp|grep dnsmasq
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 25584/dnsmasq
tcp 0 0 :::53 :::* LISTEN 25584/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 25584/dnsmasq
udp 0 0 :::53 :::* 25584/dnsmasq
[root@aslibra dnsmasq-2.55]# netstat -nlp|grep dnsmasq
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 25584/dnsmasq
tcp 0 0 :::53 :::* LISTEN 25584/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 25584/dnsmasq
udp 0 0 :::53 :::* 25584/dnsmasq
默认情况下,作为dns服务,第一个问题解决了。
我们尝试解决第二个问题,可以说是dns劫持?没有那么严重,用好了其实很实用。
有如下几个问题比较棘手:
1 局域网有很多机器希望使用一份一样的hosts定义一批名称对应的ip,你需要经常维护这份列表
2 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以
3 禁止某个域名的正常解析
这个更改涉及两个文件:
1 /etc/hosts
2 /etc/dnsmasq.conf
我们先在hosts文件里加入两行:
192.168.1.3 server1
192.168.1.2 www.aslibra.com
192.168.1.2 www.aslibra.com
编辑dnsmasq.conf,找到如下代码:
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/
# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
#address=/doubleclick.net/127.0.0.1
address=/baidu.com/127.0.0.1
# from /etc/hosts or DHCP only.
local=/localnet/
# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
#address=/doubleclick.net/127.0.0.1
address=/baidu.com/127.0.0.1
重启dnsmasq即可,下面我们在局域网另外一个机器用dig命令测试一下:
#说明:查询公网返回失败
[root@aslibra ~]# dig server1
...
;; QUESTION SECTION:
;server1. IN A
;; AUTHORITY SECTION:
. 9949 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2010072501 1800 900 604800 86400
#说明:查询dnsmasq,这里是dig的功能,模拟dns查询,返回hosts文件的设定
[root@aslibra ~]# dig server1 @192.168.1.45
...
;; QUESTION SECTION:
;server1. IN A
;; ANSWER SECTION:
server1. 0 IN A 192.168.1.3
#说明:正常查询
[root@aslibra ~]# dig www.aslibra.com
...
;; QUESTION SECTION:
;www.aslibra.com. IN A
;; ANSWER SECTION:
www.aslibra.com. 1029 IN A 218.241.231.187
#说明:查询dnsmasq,返回hosts文件的设定
[root@aslibra ~]# dig www.aslibra.com @192.168.1.45
...
;; QUESTION SECTION:
;www.aslibra.com. IN A
;; ANSWER SECTION:
www.aslibra.com. 0 IN A 192.168.1.2
#说明:正常查询
[root@aslibra ~]# dig www.baidu.com
...
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
www.a.shifen.com. 600 IN A 119.75.213.50
www.a.shifen.com. 600 IN A 119.75.213.51
#说明:查询dnsmasq,返回配置文件的设定
[root@aslibra ~]# dig www.baidu.com @192.168.1.45
...
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 0 IN A 127.0.0.1
#说明:其它二级域名也不能幸免
[root@aslibra ~]# dig tieba.baidu.com @192.168.1.45
...
;; QUESTION SECTION:
;tieba.baidu.com. IN A
;; ANSWER SECTION:
tieba.baidu.com. 0 IN A 127.0.0.1
至此已经成功解决,dhcp功能可以自行测试,阅读默认配置文件即可,很便捷,可以按机器名称或mac地址分配ip。
另外,重启dnsmasq可以用SIGHUP(可以在修改hosts文件后,让配置生效)
killall -s SIGHUP dnsmasq
参考阅读:
1 dnsmasq官网
2 dnsmasq手册
3 移植Dnsmasq到Android
4 用dnsmasq解决firefox上网慢
5 dns缓存服务器 dnsmasq
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
转个视频:2006年以来华中科技大学部分交通事故
两则关于android的消息

看上去是很实用的工具。
阁下是个高手啊,对这么多领域都有涉及