DNSmasq搭建自己的递归DNS服务器

1. 安装dnsmasq

#centos
yum -y install dnsmasq
#ubuntu
apt-get -y install dnsmasq

2. 配置dnsmasq

有三个关键配置文件:

  1. 主配置文件,安装后自动生成
/etc/dnsmasq.conf
  1. 添加内部需要解析的地址和域名
/etc/dnsmasq.hosts

3、dnsmasq的上游DNS服务器,可以将reslove.conf配置文件复制为resolv.dnsmasq.conf,进行添加nameserver

/etc/resolv.dnsmasq.conf 

编辑/etc/dnsmasq.conf配置文件:

# 指定上游dns服务器
resolv-file=/etc/resolv.dnsmasq.conf

#严格按照resolv-file文件中的顺序从上到下进行DNS解析
strict-order
#监听地址
listen-address=10.0.0.1

#使用DNS服务器
server=119.29.29.29

#防止dns劫持
bogus-nxdomain=119.29.29.29

#指定域名解析到特定的IP上
address=/www.hanyibo.com/192.168.0.3

#本地域名配置文件(不支持泛域名),添加内部需要解析的地址和域名(重新加载即可生效)
addn-hosts=/etc/dnsmasq.hosts

#可以通过server对不通的网站使用不通的DNS服务器进行解析。如下表示对于google的服务,使用谷歌的DNS解析
server=/google.com/8.8.8.8

主要的配置说明:

  • resolv-file
    定义dnsmasq从哪里获取上游DNS服务器的地址, 默认从/etc/resolv.conf获取。
  • strict-order
    表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
  • listen-address
    定义dnsmasq监听的地址,默认是监控本机的所有网卡上。
  • address
    启用泛域名解析,即自定义解析a记录,例如:address=/long.com/192.168.115.10 访问long.com时的所有域名都会被解析成192.168.115.10
  • bogus-nxdomain
    对于任何被解析到此 IP 的域名,将响应 NXDOMAIN 使其解析失效,可以多次指定
    通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点
  • server
    指定使用哪个DNS服务器进行解析,对于不同的网站可以使用不同的域名对应解析。
    例如:server=/google.com/8.8.8.8 #表示对于google的服务,使用谷歌的DNS解析。

3. 测试配置文件

使用如下命令检查配置文件是否正确:

dnsmasq -test

4. DNS缓存

要在单台电脑上以守护进程方式启动dnsmasq做DNS缓存服务器,编辑/etc/dnsmasq.conf,添加监听地址:

listen-address=127.0.0.1

如果用此主机为局域网提供默认 DNS,请用为该主机绑定固定 IP 地址,设置:

listen-address=192.168.x.x

这种情况建议配置静态IP.
多个ip地址设置:

listen-address=127.0.0.1,192.168.x.x

5. 测试

  1. 安装网络工具
sudo yum install bind-utils

测试:

dig www.baidu.com

6. 可视化界面

  1. 下载
    从 https://github.com/jpillora/webproc/releases 下载对应版本需要的可执行文件。

  2. 安装
    解压可执行文件,然后进行安装:

webproc --configuration-file /etc/dnsmasq.hosts -- dnsmasq --no-daemon

如果要以守护进程运行则可以把--no-daemon改为--daemon

注意:可以同时使用多个–configuration-file加载多个配置文件。

7. 解析配置

  1. 自动解析
    可在/etc/dnsmasq.conf中增加如下配置添加自动解析规则:
address=/.map.fyx.ingress.local/10.8.202.135
address=/.map.fyx.ingress.local/10.8.202.136
address=/.map.fyx.ingress.local/10.8.202.137
address=/.map.fyx.ingress.local/10.8.202.131

该规则表示所有**.map.fyx.ingress.local**的子域名都会解析到10.8.202.135~10.8.202.137及10.8.202.131上。
2. 手动解析
手动解析可以修改/etc/dnsmasq.host文件,在其中增加解析配置:

10.8.202.131 test.fyx.com

表示将test.fyx.com解析到10.8.202.131服务器上。

8. 常见问题

8.1 Affress already in use

使用sudo lsof -i:53查看当前占用端口的经常,之后kill该进程。

你可能感兴趣的:(linux,devops,网络,linux,dns,dnsmasq)