主流DNS服务器配置软件对比

现在这个情况之下, 企业级别的DNS服务器配置软件呢被分为了五个大类。

这个BIND, 它比较适合那种比较大的数据中心, 还有根服务器那些环境, 它那个功能能够把全部DNS标准都覆盖进去, 就是像RFC 1035、4034、4035这些, 但是这个配置文件层级, 它是比较深的, 所以让人上手学习起来, 门槛是比较高的。

PowerDNS: 它是面向中等规模企业及云原生场景的。它的模块化架构支持MySQL、PostgreSQL等多数据库后端。它还自带Admin API, 所以扩展性好。

dnsmasq 这个工具属于轻量级的解决方案, 它更适合被应用在小型办公网络环境以及那些嵌入式设备之上, 因为它可以通过单个二进制文件形式来实现部署完成的操作, 同时它还在内部包含了DHCP功能以及对CNAME进行重写的机制, 这就导致它的资源占用情况处于极其低的水平。

Windows Server DNS:与Active Directory深度集成龙南市就业服务平台,提供图形化MMC管理控制台,适合纯微软技术栈企业。

CloudflareDNS是面向公网权威解析以及与CDN进行联动这种场景的服务, 其在全球范围之内部署了超过110个节点, 提供了非常完善的REST API接口, 而且基础套餐是免费使用的。

选型核心考量

在挑选那种用来配置DNS服务器的软件的时候, 大家需要特别地去考察几个方面, 或者说要从四个主要的角度来认真地分析一下。

1. 这个解析规模需要分开来看。当每天查询数量还达不到10万次的时候。使用dnsmasq或者单个电脑运行的BIND软件就完全够了。但如果日查询量超过了千万次。那就建议用PowerDNS来搭建有多个节点的集群方案。或者选择能支持多视图功能的 BIND也就是View方案来解决。

2. 管理方式, 大家如果喜欢用带着图像的窗口来选东西, 那就选择Windows DNS或者是PowerDNS Admin, 大家要是喜欢对着黑底白字的命令符进行操作, 又想搞那种自动化的流程, 那就去用BIND或者dnsmasq。

3. 涉及公网暴露的服务方面, 必须启用TSIG或者RSIG签名, 另外还要限制递归查询来源, 配置响应速率限制也就是RRL, 这些操作需要去实施, 通常推荐的使用版本是BIND 9.18及以上, 或者是PowerDNS 4.7及以上。

4. 架构兼容性: 在AD环境里, 优先使用Windows DNS;在Kubernetes容器网络里, 优先使用CoreDNS;在多租户云环境里, 优先使用PowerDNS加API自动化技术。

部署关键步骤(以BIND为例)

1. 安装:yum install bind bind-utils 或 apt install bind9 bind9utils

2. 编辑 /etc/named.confdns服务器配置软件,配置 listen-on、allow-query、zone 声明

DNS服务器配置软件有哪些?选型要点与部署流程一文说清(图1)

3. 创建主区域文件, 这个文件的名称可以是像 db.example.com 这样的形式, 然后在文件中写入关于 SOA 的记录, 以及 NS 的记录, 还有 A 记录的记录, 同时还可以写入 AAAA 记录的记录。

4. 进行语法的校验, 需要执行 named-checkconf ;进行区域的校验, 则是要运行 named-checkzone example.com db.example.com。

5. 启动并验证:systemctl restart named && dig @127.0.0.1 www.example.com

解析记录管理要点

针对A记录的TTL值建议设置为300秒, 以此来避免出现因为故障切换导致缓存延迟这种情况。

CNAME不能指向自己, 也不能形成循环。

这个MX记录是通过优先级数值, 也就是10、20和30这样的数字, 来实现邮箱出现故障时的转移任务的。

大型组织将zone文件按照部门或者地域来进行拆分, 要把单个文件的记录数量控制在五万条以内。

常见故障速查

当客户端出现解析超时现象时候, 就要去检查防火墙这个设备是不是已经把53号端口的UDP协议给放行了, 同时呢也要去看看53号端口的TCP协议是不是也已经被放行了。

新的记录没有发生变化。上游递归 DNS 缓存还没有过期时间。因此可以一直连接权威服务器用dig +trace方法去验证一下正确性。

如果你遇到递归查询被拒绝的情况, 你需要确认相关设置, 具体来看, allow-recursion 参数与 only-from 参数的取值范围, 必须要涵盖所有的内网网段地址。

进阶与自动化建议

对于中大型企业来说dns服务器配置软件,我们建议把DNS区域变更这件事, 放进CI/CD流程里面去, 这样来做的话, 就可以通过PowerDNS REST API还有BIND gss-tsig这种方式, 配合Ansible以及Puppet这些工具, 来实现在线的自动下发任务了, 同时呢, 还需要部署DNS查询日志分析工具, 这个可以是gDNS, 也可以是自己研发出来的系统, 主要目的就是为了对DNS隧道、挖矿域名这些异常情况所产生的流量, 做到实时告警的效果。

大家如果想知道有关BIND视图配置模板还有PowerDNS集群调优参数这些实际操作的资料怎么弄, 可以去参考一下gz88.cn发布的那个企业网络运维专栏, 从那儿就能获取这些信息。