本地dns的更新:dnsmasq的使用 原

###背景

最近各种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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

通过实例来学习使用Linux KVM

KVM是Kernel-based Virtual Machine的缩写,从名字上可以知道,KVM是在支持虚拟化硬件环境上,基于Linux操作系统内核的虚拟化技...

24320
来自专栏三木的博客

内核源码编译

编译内核的目的在于把纷繁复杂的内核源码编译成一个可执行的镜像文件。当然,内核功能复杂,并不是所有的 功能都需要用到,所以,我们在使用make对其编译前,要做一件...

23470
来自专栏运维小白

11.3/11.4/11.5 MySQL安装

MySQL目录概要 MySQL的几个常用安装包:rpm、源码、二进制免编译 cd /usr/local/src //切换到下载源码包的目录 wge...

21650
来自专栏云极客Frey

腾讯云容器微服务API设计实践

本文会在腾讯云容器服务上面构造微服务基础小项目, 通过搭建ELK集群,实现利用Logstash 采集Nginx日志,收纳及利用kibana展示的功能。

2.6K220
来自专栏惨绿少年

inotify+rsync实现实时同步

1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送...

24800
来自专栏A周立SpringCloud

Docker系列教程23-docker-compose常用命令

38230
来自专栏有困难要上,没有困难创造困难也要上!

使用 Anaconda 管理 Python 环境

37260
来自专栏大数据-Hadoop、Spark

Linux本地Yum源制作

操作之前准备好以下环境: VMWare Workstation SecureCRT CentOS-6.7-x86_64-minimal.iso //用来...

74850
来自专栏吴柯的运维笔记

案例:配置HAProxy负载平衡集群

准备三台Linux服务器,两台做Web服务器,一台安装HAProxy,实现如下功能: 客户端访问HAProxy,HAProxy分发请求到后端Real Serv...

396110
来自专栏Debian社区

Debian 光盘安装简易教程

这篇文章我会尽可能详细地说明如何快速安装纯净的Debian 8.2.0,需要懂一点vi编辑器的使用方法。 如果是新手,没用过 vim 编辑器也不用担心,我会尽量...

36720

扫码关注云+社区

领取腾讯云代金券