Dnsmasq
简介
Dnsmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。
作为dhcp服务器,它可以为局域网电脑提供内网ip和路由。
如果是在本地搭建,还可以大幅提高解析速度。还可以有效的防止DNS劫持,实现屏蔽广告等作用。
如果是在公网搭建Dnsmasq,还可以对指定的域名解析hosts指向,从而避免DNS污染。
工作原理
当接受到一个DNS请求时,Dnsmasq首先会查找/etc/hosts
这个文件,然后查找/etc/resolv.conf
中定义的外部DNS。所以说Dnsmasq是一个很不错的外部DNS中继。
配置Dnsmasq为DNS缓存服务器,同时在/etc/hosts
文件中加入本地内网解析,这样一来每当内网机器查询时就会优先查询hosts文件,这就等于将/etc/hosts
共享给全内网机器使用,从而解决内网机器互相识别的问题。相比逐台机器编辑hosts文件或者添加Bind DNS记录,仅编辑一个hosts文件,这简直太容易了。
安装
1 | yum install -y dnsmasq |
配置
Dnsmasq处理DNS设置与BIND等其他DNS服务有所不同。所有的配置都在一个文件中完成/etc/dnsmasq.conf
配置文件说明
resolv-file=/etc/resolv.dnsmasq.conf
:指定该文件来管理上游的DNS服务器strict-order
:默认情况下Dnsmasq会发送查询到它的任何上游DNS服务器上,如果取消注释,则Dnsmasq则会严格按照/etc/resolv.conf
中的DNS Server顺序进行查询。no-hosts
:如果不想使用/etc/hosts
,则取消下面的注释。listen-address=127.0.0.1
:设置想监听的地址,如果你本机要使用写上127.0.0.1。如果你想让本机所在的局域网的其它电脑也能够使用上Dnsmasq,应该把本机的局域网IP加上去。
编辑配置
1 | # 需要新建一个resolv.dnsmasq.conf文件,这个是配置上游DNS,也就是真正的公共DNS |
1 | vim /etc/dnsmasq.conf |
使用
DNSmasq可以设置不同的域名指定不同的DNS进行解析,修改/etc/dnsmasq.conf
文件即可,若不对域名设置DNS,则从上游DNS获取记录。
1 | vim /etc/dnsmasq.conf |
启动
1 | # 启动 |
测试
本机
1 | # 本机测试 |
内网
添加dns服务器
1 | [root@jw-etcd02 ~]# cat /etc/resolv.conf |
测试
1 | [root@jw-etcd02 ~]# dig www.topsec-etcd.com |