DNSmasq配置与使用

摩天居士-谢烟客 / 2023-04-28 / 原文

1、什么是DNSmasq?

  这里用轻量的Dnsmasq服务器来实现内网DNS服务器搭建。Dnsmasq 是提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络。此外它还自带了一个 PXE 服务器。

2、解析流程及参数说明

  a.查询流程及优先级

  先查找hosts文件,再查找/etc/dnsmasq.d/*.conf,之后查找/etc/dnsmasq.conf。

  是否查找hosts,还能通过no-hosts来定义,no-hosts表示不查找hosts文件。

  因此,如果你想让dnsmasq本身提供解析服务,且无需去上游DNS查询,或者说你要做任意域名的DNS解析,就可以将记录写到上面任意一个文件,conf的语法形如:address=/test.com/192.168.1.1,hosts则遵循hosts文件的语法:192.168.1.1 test.com。

  b.常用参数说明

参数

说明

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解析。

no-hosts

直接查询上游DNS,忽略hosts文件。

no-reslov

不做上游DNS查询。

cache-size

设置缓存域名的数量,默认150,硬限制为1000。

log-queries

记录查询请求,并通过log-facility指定记录日志。

3、DNSmasq使用经验

  安装DNSmasq最好是两台,配置想同,在客户端/etc/resolv.conf配置这两台DNS的nameserver,这样当一台DNS故障时可以通过另外一台来解析,避免单点故障。

4、DNSmasq部署与配置

安装

# yum -y install dnsmasq

启动

systemctl start dnsmasq   # 启动
systemctl stop dnsmasq    # 关闭
systemctl restart dnsmasq # 重启
systemctl enable dnsmasq  # 设置开机启动 

配置示例

server=/www.zw-e3m3-sg001-w.com/10.1.12.200
server=/www.zw-e3m3-sg001-r.com/10.1.12.200
server=/www.zw-e3m3-sg002-w.com/10.1.12.203
server=/www.zw-e3m3-sg002-r.com/10.1.12.203
server=/www.zw-e3m3-sg003-w.com/10.1.13.200
server=/www.zw-e3m3-sg003-r.com/10.1.13.200