主流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 声明
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发布的那个企业网络运维专栏, 从那儿就能获取这些信息。


