文档章节

本地dns的更新:dnsmasq的使用

xueyi28
 xueyi28
发布于 06/14 11:36
字数 826
阅读 210
收藏 0

###背景

最近各种ad服务挂掉的情况连连出现,一个域名解析需要花上3秒钟,业务上黄花菜都凉了,有的/etc/resolv.conf里面就配置一个nameserver,一点用都没有,dns服务出现问题之后整个应用服务都跟着受损,现在的ad服务大多企业全部用的商业软件,微软这上面真是霸道,简直是受制于人,windows上的服务说没就没了,全看脸,ldap dns 用户验证统统就见如来了,还全是底层的核心系统。

###配置和启动

listen-address=127.0.0.1
interface=lo
bind-interfaces
resolv-file=/etc/dnsmasq.resolv.conf
addn-hosts=/etc/hosts
cache-size=150
local-ttl=30
clear-on-reload
no-negcache

启动方式

dnsmasq --all-servers --conf-file=/etc/dnsmasq.conf --pid-file=/var/run/dnsmasq.pid

启动脚本

#!/bin/sh

case $1 in
	start)
	dnsmasq --all-servers  --conf-file=/etc/dnsmasq.conf --pid-file=/var/run/dnsmasq.pid
	;;
	stop)
		kill $(cat /var/run/dnsmasq.pid)
	;;
	test)
		dnsmasq --test  --conf-file=/etc/dnsmasq.conf 
	;;
	reload)
		cat /var/run/dnsmasq.pid|xargs kill -SIGHUP 
	;;
	*) 
	echo "$0 {start|stop|reload|test}"
	exit 4
	;;
esac

将你所有的nameserver地址全部写到/etc/dnsmasq.resolv.conf,dnsmasq每次会全量发起域名解析请求,取最快的解析地址(不过我没有测试如果nameserver返回的不一致会怎么样)。

###测试和容器 ####1. /etc/hosts修改测试 容器中启动之后的/etc/hosts和/etc/resolve和主机中保持一致

修改了容器中的/etc/hosts

bash-4.1# ping nvwa.com
PING nvwa.com (192.168.1.184) 56(84) bytes of data.
64 bytes from nvwa.com (192.168.1.184): icmp_seq=1 ttl=52 time=27.9 ms
64 bytes from nvwa.com (192.168.1.184): icmp_seq=2 ttl=52 time=27.9 ms

主机中的记录

[root@myserver ~]# ping nvwa.com
PING nvwa.com (192.168.1.181) 56(84) bytes of data.
64 bytes from 192.168.1.181: icmp_seq=1 ttl=52 time=27.2 ms
64 bytes from 192.168.1.181: icmp_seq=2 ttl=52 time=27.1 ms

可以看到容器中的/etc/hosts修改会立即生效,且不会影响主机对此域名的解析

再次修改容器中的/etc/hosts域名指向也是立即生效

bash-4.1# ping nvwa.com
PING nvwa.com (192.168.1.182) 56(84) bytes of data.
64 bytes from nvwa.com (192.168.1.182): icmp_seq=1 ttl=52 time=27.8 ms

####2. 容灾测试 增加防火墙模拟深圳的dns挂掉

iptables -A OUTPUT   -d 8.8.8.8  -j DROP

当所有的dns禁用之后,dnsmasq的缓存还可以保留解析,但是如果重启之后dnsmasq之后,缓存消失,容器内和主机的dns均出现问题 主机中

[root@myserver ~]# nslookup  bbs.com
Server:		127.0.0.1
Address:	127.0.0.1#53
** server can't find bbs.com: REFUSED

容器内

bash-4.1# ping bbs.com 
ping: unknown host bbs.com

当放通其中一个地区的dns服务之后,域名解析立即恢复

####3. 主机/etc/hosts测试 注意,如果使用nslookup命令,以下配置全部都会按照缓存来,如果是ping命令,会首先使用hosts的解析 主机中如果新增hosts,域名会立即生效 删除/etc/hosts, 域名更改也会立即生效 修改也会立即生效,如果出现缓存的情况,可以/etc/init.d/dnsmasq reload处理刷新

dig nslookup ping 这几个命令很好玩

####4. 剩余一个dns cache刷新时间的点没测试

###注意点:

  1. dnsmasql不单单是做dns解析的,他跟tftp dhcp ldap都有关系,老版本的安全漏洞很多,好像有的还还严重,尽量不要开到公网
  2. 开始不懂这个版本的配置listen-address老是不起左右,后来才看到解释原来要绑定设备

http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example

© 著作权归作者所有

共有 人打赏支持
xueyi28
粉丝 7
博文 93
码字总数 33978
作品 0
南宁
私信 提问
dnsmasq安装配置

Dnsmasq安装配置 默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致...

周新宇1991
2017/01/17
0
0
使用Dnsmasq加速苹果App Store、iCloud、iTunes、Mac更新等访问速度

原理 苹果绝大多数服务都使用了CDN,用户发起DNS查询请求时,DNS服务器会根据上游DNS(即你请求的这个DNS)的地址返回一个距离用户最近的数据中心IP,而造成国内访问速度慢的原因是国内发起查...

iiiiiiiii
2012/12/21
0
0
使用Dnsmasq搭建本地dns服务器上网

导读 搭建一个属于自己的本地DNS服务器很有必要,利用Dnsmasq来搭建一个属于自己的本地DNS服务器,享受更干净无污染、更智能快速和没有广告干扰的DNS解析服务。 一、Dnsmasq安装 安装并启动D...

linuxprobe16
2016/11/17
66
0
Linux DNS 查询剖析(第三部分)

在 Linux DNS 查询剖析(第一部分)中,我们介绍了: 与 查询方式的对比 而在 Linux DNS 查询剖析(第二部分),我们介绍了: 和对应的 服务 和 剖析进展如下: (大致)准确的关系图 很可惜...

07%
09/01
0
0
烂泥:dnsmasq搭建简易DNS服务器

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb。 今天我们来介绍一个比较简单的DNS服务器dnsmasq。这款软件,已经被我成功使用到公司的所有...

烂泥行天下
2015/11/01
0
1

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
4
0
windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
5
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部