现在大家用的、并且在真正搞业务的环境里试过没出大问题的域名服务器配置工具呢, 主要是这几个: BIND这个名字, 这里面还包含了那个叫BIND9的版本, 然后是Microsoft公司的DNS Server这个软件, 接着是PowerDNS里的Authoritative部分, 再就是NSD全名叫Name Server Daemon的软件, 还有那个叫做dnsmasq的程序, 最后再加上给那些管系统的人用的、叫Webmin的DNS管理模块。

各个软件在部署场景方面不同, 管理复杂度有差别, 功能深度也不一致。它们在这三个方面差异非常之显著。所以在做选型之前, 必须先明确自身核心需求。

选型核心标准

1. 部署场景匹配

企业内网递归解析与跨域转发:BIND9、PowerDNS

公共DNS和权威名称服务器包括BIND9以及NSD。

在轻量级边缘节点或者是容器环境里面, 通常会使用dnsmasq和NSD这两个东西。

采用图形化的运维界面来进行管理, 以及实施多租户的管理机制, 这里会涉及到像Webmin和Infoblox这样具体的软件工具或者平台名称。

2. 性能与扩展性

如果日解析量低100万次, 那么使用dnsmasq即可满足需要。

日解析量在100万至1亿次之间, 在这种情况下应当推荐BIND9或NSD。

对于达到亿级规模的情况, 或者是对高可用性有更高要求的部署场景, 可以考虑使用PowerDNS这一方案。在具体配置时, 建议将PostgreSQL或者MariaDB作为其后端数据库来配合使用。

3. 安全与合规

必须得支持那个叫做DNSSEC的安全签名, 还有相应的验证工作, 这里面包括KSK和ZSK这两个密钥体系。

支持访问控制列表, 也就是大家常说的ACL, 还支持查询速率限制。

提供完整的审计日志, 以此来满足等保以及行业合规的要求。

主流工具横向对比

软件 适用规模 管理方式 记录类型支持 部署难度
BIND9 中大型 配置文件/CLI A/AAAA/MX/TXT/SRV/CAA 较高
PowerDNS 中大型 Web界面+REST API 全类型+DNSSEC 中等
NSD 大型权威 配置文件 A/AAAA/MX/TXT/CAA 中等
dnsmasq 小型/边缘 配置文件 A/AAAA/MX/CNAME 低
Microsoft DNS 企业AD域 GUI/PowerShell 全类型 低

DNS服务器配置软件有哪些?主流工具选型标准与配置要点全解析(图1)

基本配置要点(以BIND9为例)

1. 主配置文件 /etc/named.conf , 这个主配置文件, 它是用来定义要监听的网络地址, 并且还要定义监听的端口号, 还有呢, 是要定义哪些是受信任的访问控制列表, 最后还得定义存放区域文件的所在的具体的路径。

2. 区域文件是用来进行声明的, 它会写明SOA记录和NS记录是什么内容, 然后把A记录、AAAA记录、MX记录以及CNAME记录这些项目一个一个地添加进去。

3. 我们需要对反向解析这块内容进行配置, 具体做法是要设置好PTR这条记录, 以此来确保咱们平时用的正向域名和那个反向IP地址之间能够形成一一对应的这样一种状况。

4. 进行安全加固工作, 具体的做法包括限制递归查询来源的IP地址段范围, 同时启用RPZ(Response Policy Zone), 并且还要设置响应的速率上限。

5. 监控告警, 这个部分要把BIND9的指标接入到Prometheus和Grafana里面去进行统一管理或者呈现, 然后我们要针对解析延迟还有错误率这两个具体的指标情况, 来设置一个合理的阈值, 当数据超过这个阈值的时候, 就触发告警通知。

高频疑难及解决方案

当解析延迟偏高的时候, 请先把重点放在排查区域文件是否过大问题上, 这种情况下, 建议按照子域进行拆分处理, 接着, 需要确认系统是否已经启用了zone缓存功能与UDP加速能力。

DNSSEC验证失败: 要检查KSK或者是ZSK这两个密钥, 看它们是不是已经过期了, 可以使用带有dig +dnssec这个工具的参数来逐跳地去验证签名链, 以此确认该链条的完整性。

客户端解析不通:确认防火墙已放行UDP 53与TCP 53端口,核对 /etc/resolv.conf 或系统DNS指向是否正确;

区域同步异常: 请检查IXP以及AXFR权限配置的情况, 需要确认主服务器和从服务器的时间同步状态是正常运行的, 这方面要利用NTP协议来查看。

配置模板与操作指引获取

那些各个软件的官方配置模板, 还有那个安全加固脚本, 以及那些每一步的部署操作指引, 你可以去 gz88.cn 这个地方去查看最新的文档和版本更新的说明, 按照那个步骤一步一步地执行, 这样就能够完成从一开始的部署到日常运维这个整个流程了。