0
点赞
收藏
分享

微信扫一扫

使用dnsmasq实现自建DNS

爱动漫建模 2024-01-17 阅读 19

相对于bind,dnsmasq的要实现自建DNS相对来说是简化了很多。

安装

yum install dnsmasq

配置dnsmasq

默认配置文件为/etc/dnsmasq.conf、/etc/dnsmasq.d/目录下的文件,

默认从/etc/hosts读取域名

默认从/etc/resolv.conf 读取上游dns

不读取resolv.con

如果不希望通过resolv.con读取上游DNS则添加no-resolv

指定上游DNS

若要指定上游DNS server,可以使用server配置

server=114.114.114.114

不使用默认/etc/hosts

no-hosts

添加额外hosts

配置文件中可以添加除了/etc/hosts之外的host文件

hosts-addn=/xxx/xxx

添加日志文件

log-queries

log-facility=/var/log/dnsmasq.log

配置CNAME

在配置文件中添加如下配置

cname=a.xxx.com,b.xxx.com

配置A记录

address=/c.xxx.com/127.0.0.1


配置案例

精简后的配置文件

/etc/dnsmasq.conf

server=114.114.114.114
no-resolv
no-hosts
addn-hosts=/etc/dnsmasq.hosts/xxx.com
log-queries
log-facility=/var/log/dnsmasq.log
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

设定上游DNS为114.114.114.114

不读取/etc/resolv.conf

不读取默认hosts文件(/etc/hosts)

设定额外的hosts文件

开启日志

设定conf目录,并排除.rpmnew,.rpmsave,.rpmorig结尾的文件

额外配置的hosts文件

/etc/dnsmasq.hosts/xxx.com

192.168.0.1 aaa.xxx.com
192.168.0.2 bbb.xxx.com
192.168.0.3 ccc.xxx.com

额外配置文件

/etc/dnsmasq.d/xxx.com

address=/192.168.0.4/ddd.xxx.com
cname=b.xxx.com,bbb.xxx.com

重启dnsmaq以使上述配置生效

service dnsmasq restart

使用nslookup进行测试

使用dnsmasq实现自建DNS_dnsmasq

可以看到,无论是主动添加的hosts文件中的记录,还是使用address命令添加的记录,还是cname命令的记录,均可以正常解析

常见问题

在使用dnsmasq进行解析操作是,如果发现异常,一定要注意观察日志,观察启动阶段日志,查看其在启动过程中加载了那些文件。

例如在解析CNAME时常见的问题之一就是在日志中发现一些域名记录被加上了.localdomain后缀的

使用dnsmasq实现自建DNS_dnsmasq_02

dnsmasq 的日志中出现 .localdomain 后缀可能是因为在解析域名时,dnsmasq 无法找到与请求的域名直接匹配的记录,于是尝试添加 .localdomain 后缀再次进行解析。

通常,这可能与本地 DNS 解析策略或配置有关。以下是一些可能导致这种情况的原因:

  1. 搜索域设置: 操作系统通常有一个默认的搜索域(search domain)配置,用于在主机名解析时添加后缀。如果在请求中没有指定完整的域名,系统会尝试添加搜索域。这可能导致 dnsmasq 在解析时尝试添加 .localdomain 后缀。
  2. 未完全匹配的域名: 如果请求的域名在 dnsmasq 的配置中找不到完全匹配的记录,dnsmasq 可能会尝试添加 .localdomain 后缀再次解析。
  3. 本地主机名配置: 如果主机的本地主机名配置中包含 .localdomain,则在进行本地域名解析时可能会出现这种情况。

要解决这个问题,你可以考虑以下步骤:

  • 检查搜索域设置: 确保操作系统的搜索域配置与你的预期相符。你可以查看 /etc/resolv.conf 文件来检查搜索域的配置。
  • 检查 dnsmasq 配置: 检查 dnsmasq 的配置文件,通常是 /etc/dnsmasq.conf,确保其中没有不必要的搜索域或其他配置,导致添加 .localdomain 后缀。
  • 本地主机名设置: 检查主机的本地主机名设置,确保不包含不必要的 .localdomain 后缀。
  • 更新客户端配置: 如果问题是在特定客户端上出现,确保客户端的 DNS 配置正确,可能需要更新 DNS 缓存。


举报

相关推荐

0 条评论