收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 6647|回复: 2

[网络] 介绍Dnsmasq

[复制链接]
发表于 2010-7-26 19:05:49 | 显示全部楼层 |阅读模式
Dnsmasq是一个很实用的小工具,解决局域网的需求看来非常合适,特别是网关和防火墙上。

它可以提供如下几个实用的功能:
1 提供dns服务
2 优先使用本地自定义dns
3 提供dhcp服务

一般情况下,我们可以用bind解决dns的问题,dhcpd解决dhcp的问题,另外,还可以用ypbind解决自定义hostname解析的ip(当然还有用户的功能),它都解决了!很实用吧?这真的很吸引人,况且它一直在更新维护,最新版本是6月份的。

安装过程很简单:

  1. wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.55.tar.gz
  2. tar xfz dnsmasq-2.55.tar.gz
  3. cd dnsmasq-2.55
  4. make
  5. make install
  6. cp dnsmasq.conf.example /etc/dnsmasq.conf
复制代码


运行起来就可以解决第一个问题:

  1. [root@aslibra dnsmasq-2.55]# dnsmasq
  2. [root@aslibra dnsmasq-2.55]# netstat -nlp|grep dnsmasq
  3. tcp        0      0 0.0.0.0:53                  0.0.0.0:*                   LISTEN      25584/dnsmasq      
  4. tcp        0      0 :::53                       :::*                        LISTEN      25584/dnsmasq      
  5. udp        0      0 0.0.0.0:53                  0.0.0.0:*                               25584/dnsmasq      
  6. udp        0      0 :::53                       :::*                                    25584/dnsmasq      
复制代码


默认情况下,作为dns服务,第一个问题解决了。

我们尝试解决第二个问题,可以说是dns劫持?没有那么严重,用好了其实很实用。
有如下几个问题比较棘手:

1 局域网有很多机器希望使用一份一样的hosts定义一批名称对应的ip,你需要经常维护这份列表
2 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以
3 禁止某个域名的正常解析

这个更改涉及两个文件:
1 /etc/hosts
2 /etc/dnsmasq.conf

我们先在hosts文件里加入两行:

  1. 192.168.1.3     server1
  2. 192.168.1.2     www.aslibra.com
复制代码


编辑dnsmasq.conf,找到如下代码:

  1. # Add local-only domains here, queries in these domains are answered
  2. # from /etc/hosts or DHCP only.
  3. local=/localnet/

  4. # Add domains which you want to force to an IP address here.
  5. # The example below send any host in doubleclick.net to a local
  6. # webserver.
  7. #address=/doubleclick.net/127.0.0.1
  8. address=/baidu.com/127.0.0.1
复制代码


重启dnsmasq即可,下面我们在局域网另外一个机器用dig命令测试一下:


  1. #说明:查询公网返回失败
  2. [root@aslibra ~]# dig server1
  3. ...
  4. ;; QUESTION SECTION:
  5. ;server1.                       IN      A

  6. ;; AUTHORITY SECTION:
  7. .                       9949    IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2010072501 1800 900 604800 86400
  8. #说明:查询dnsmasq,这里是dig的功能,模拟dns查询,返回hosts文件的设定
  9. [root@aslibra ~]# dig server1 @192.168.1.45
  10. ...
  11. ;; QUESTION SECTION:
  12. ;server1.                       IN      A

  13. ;; ANSWER SECTION:
  14. server1.                0       IN      A       192.168.1.3
  15. #说明:正常查询
  16. [root@aslibra ~]# dig www.aslibra.com
  17. ...
  18. ;; QUESTION SECTION:
  19. ;www.aslibra.com.               IN      A

  20. ;; ANSWER SECTION:
  21. www.aslibra.com.        1029    IN      A       218.241.231.187
  22. #说明:查询dnsmasq,返回hosts文件的设定
  23. [root@aslibra ~]# dig www.aslibra.com @192.168.1.45
  24. ...
  25. ;; QUESTION SECTION:
  26. ;www.aslibra.com.               IN      A

  27. ;; ANSWER SECTION:
  28. www.aslibra.com.        0       IN      A       192.168.1.2
  29. #说明:正常查询
  30. [root@aslibra ~]# dig www.baidu.com
  31. ...
  32. ;; QUESTION SECTION:
  33. ;www.baidu.com.                 IN      A

  34. ;; ANSWER SECTION:
  35. www.baidu.com.          1200    IN      CNAME   www.a.shifen.com.
  36. www.a.shifen.com.       600     IN      A       119.75.213.50
  37. www.a.shifen.com.       600     IN      A       119.75.213.51
  38. #说明:查询dnsmasq,返回配置文件的设定
  39. [root@aslibra ~]# dig www.baidu.com @192.168.1.45
  40. ...
  41. ;; QUESTION SECTION:
  42. ;www.baidu.com.                 IN      A

  43. ;; ANSWER SECTION:
  44. www.baidu.com.          0       IN      A       127.0.0.1
  45. #说明:其它二级域名也不能幸免
  46. [root@aslibra ~]# dig tieba.baidu.com @192.168.1.45
  47. ...
  48. ;; QUESTION SECTION:
  49. ;tieba.baidu.com.               IN      A

  50. ;; ANSWER SECTION:
  51. tieba.baidu.com.        0       IN      A       127.0.0.1
复制代码


至此已经成功解决,dhcp功能可以自行测试,阅读默认配置文件即可,很便捷,可以按机器名称或mac地址分配ip。

另外,重启dnsmasq可以用SIGHUP(可以在修改hosts文件后,让配置生效)

  1. killall -s SIGHUP dnsmasq
复制代码


参考阅读:
1 dnsmasq官网
2 dnsmasq手册

原文会持续更新:http://www.aslibra.com/blog/post/dnsmasq.php

[[i] 本帖最后由 hqlulu 于 2010-7-26 19:18 编辑 ]
发表于 2010-7-26 20:49:06 | 显示全部楼层
不错,谢谢提供
回复 支持 反对

使用道具 举报

发表于 2011-12-9 18:58:48 | 显示全部楼层
不连接INTERNET网,可以 提供dns服务 建WEB服务器吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-8-8 18:09 , Processed in 0.109098 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表