咱们在选择配置 DNS 服务器的软件的时候, 得抓住三个最关键的看家本事。啥叫做看家本事呢? 就是功能能不能全面覆盖需求, 运维起来是不是太麻烦, 还有以后扩展起来方不方便不费劲。

你要是处在中小型的使用场景里头, 直接把 Bind 9 和 dnsmasq 这两个家伙组合在一起用就完全够用了。你要是搞的是企业级的高可用项目, 那就直接选 PowerDNS 这个工具, 再配上 PostgreSQL 数据库来撑着。

要是你的环境是 Windows 域的体系, 压根不用找外部的软件, 直接用系统自带的那个内置 DNS 组件就行了。接下来我要从工具之间的相互对比、选择具体型号时该看的各项参数指标、还有实际部署操作的具体流程这三个方面给你交代得清清楚楚, 让你有个完整的参考依据可以依仗着干事儿。

主流工具对比

1. Bind9: 它是互联网的一个标准实现, 功能是最完整的一个。它支持 DNSSEC、RPZ、TSIG;它的配置是基于 named.conf 的, 它还支持 include 这种分模块的方式。它的部署难度属于中等水平, 社区里的文档是完善的。

2. dnsmasq 是一个功能比较简练的并且把 DNS 功能和 DHCP 整合在一起的解决方案, 它只有一个程序文件, 不需要再装其他的软件包就能正常运行。

在配置这个系统的时候, 通常只要写五十行以内的规则内容就可以让网络环境开始工作起来, 这种设置方式非常适合用在本地局域网以及容器化部署的应用场景当中。

3. PowerDNS 是一种属于企业级别的权威型 DNS 服务, 它的后端能够支持 PostgreSQL 或者 MySQL 数据库, 同时还提供了 REST API 接口, 方便人们进行自动化处理操作。

通过配合使用 pdnscontrol 来实现远程运维管理, 它特别适合用于对数目达到数千个区域的管理任务。

4. Unbound: 它是具备默认安全模式的递归解析工具, 支持采用 DNS-over-TLS 或者 HTTPS 这样的加密协议, 其配置文件 unbound.conf 的内容相对简洁明了, 通常被应用在互联网服务提供商的服务出口位置, 也能用来防止域名服务器污染问题的发生。

5. WindowsDNS: 跟 Active Directory 深度集成, 区域就当作数据库用dns服务器配置软件,图形界面的管理也比较直观, 适合那些已经有 Windows 域架构的组织。

选型关键参数

关于并发量的情况, 当每秒查询数低于五万的时候, 可以选择使用 Bind 或者 dnsmasq;如果每秒查询数超过了十万, 在这种情况下, 建议采用 PowerDNS 的多实例部署方式, 并且加上负载均衡的配置。

区域数量这一项, 如果少于 200 个的话, 就用单实例来处理, 如果高达数千个的话, 就需要用到 PowerDNS 加上数据库这种组合方案。

在进行动态DNS更新时, 如果存在这方面的需要, 那么应当优先考虑使用PowerDNS或者Bind版本9, 并且要配合update-policy策略来配置。

DNS服务器配置软件怎么选?五款主流工具对比与部署要点(图1)

把递归功能和权威解析功能分开。在生产环境里面, 大家都建议递归这块使用 Unbound 来解决, 然后权威性查询这边选择用 Bind 或者 PowerDNS 来处理。

如果你的管理方式需要利用API进行批量操作的话, 你就需要考虑选择使用PowerDNS;而如果你对图形用户界面有所偏好的话, 那么就应当考虑选用Windows DNS。

部署基础流程(Linux + Bind 9)

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

2. 编辑 /etc/named.conf,include 区域文件路径大城新闻网,启用 dnssec-validation yes

3. 创建区域文件, 这个区域文件的示例像 gname.xin.zone 这种形式, 然后把 SOA、NS、A/CNAME 记录都写入到这个文件里面。

4. 防火墙放行 53/udp 与 53/tcp

5. 启动:systemctl enable --now named

6. dig @127.0.0.1 gname.xin NS, 这个指令需要你去执行一遍, 然后通过观察返回的结果, 来确认服务器的权威应答是不是处于正常的状态。

高频疑难与解决

出现解析不生效的情况, 请检查 TTL 的值(建议是小于等于 300s), 确认本地缓存是否已经完成刷新, 排查上游递归是否存在被污染的可能性。

动态记录这一项没有进行更新, 这种情况需要确认一下 DDNS 密钥权限的问题, 针对 Bind 9 这个软件来说, 必须在 named.conf 文件中增加配置代码 update-policy。

进行安全加固, 关闭那些不使用的UDP端口dns服务器配置软件,启用TSIG签名功能, 限制allow-query白名单。

以上所提到的这些参数还有相关的流程, 这些都是根据 ISC、Thema 和 Unbound 的官方文档来进行整理的。在实际情况中进行部署的时候, 一定要以对应版本的 Release Notes 为准, 这才是正确的做法。