DNS服务器配置软件这个东西, 它是网络基础设施里面特别核心的一个部分, 它直接管着域名解析快不快, 还有访问安不安全。我们这篇东西, 是从运维技术的角度来看这个问题。我们给出了一些主流的配置软件的完整清单。我们把选型的标准也列出来了。我们还提供了相关的所谓的安全基线。
五款主流DNS服务器配置软件
1. BIND
这份方案的适用对象包括大型企业, 也包括那些被称为ISP的网络服务提供商, 还有政府的各个机构。它支持所有的RFC标准, 并且拥有非常灵活的插件机制。系统是通过名为named.conf的文件来管理区域记录的。
在这个系统中, 支持zone transfer这一功能, 同时也提供支持ACL的访问控制操作。对于在生产环境中使用的情况, 建议大家去部署一个主从式的架构。在这种架构里, 由主节点来进行写入操作, 而查询的任务则由从节点来负责完成。
2. Microsoft DNS Server
适用对象: Windows Active Directory环境。与AD域控深度集成, 提供图形管理控制台。通过Add-DnsServerPrimaryZone等PowerShell命令操作, 利用SRV记录实现服务发现。
3. dnsmasq
它主要可以被拿来用在那些小型企业还有嵌入式网关上面去。你只要进行一个单文件的配置, 它的内存占用情况就会变得非常低, 同时也是支持那个DHCP联动的功能的。
你只需要去对那个特定的路径下的文件进行编辑操作, 也就是/etc/dnsmasq.conf这个配置文件进行修改, 这样就能够直接生效了。这种设定特别适合那种里面节点数量在一百以内的小型网络环境, 但是对于高并发查询这样一种情况, 我们是不建议让它去承载的。
4. Unbound
适合拿来用的场合, 包括那种要一直往下查的递归解析做法、DNSSEC验证这种检查安全的操作, 还有那些特别看重隐私保护的场景。它的底子是靠模块设计拼起来的, 所以能把DNS-over-TLS这事儿也给支持了。
你可以通过编辑那个叫unbound.conf的文件, 去定一下local-zone和forward-zone这两个东西该怎么配。一般大家都会建议把它装成一个单独的递归解析器来跑着玩。
5. PowerDNS
这个方案适合用在那些数据读写压力非常大、运行在云原生环境里, 还要对接多个不同的数据库后端的场景当中。
它既能支持MySQL和PostgreSQL这些数据库作为后端存储, 也提供通过REST API来进行管理的手段, 如果再配合上消息队列技术, 就能轻松搞定多个节点之间的数据同步问题, 这样的能力安排, 天生就是为分布式架构准备的。
选型核心评估维度
关于并发承载的能力这个问题, 我们需要知道BIND以及PowerDNS这两个软件, 它们是适合用在超过万级的QPS这个场景上面的;而dnsmasq这个软件, 它是适合用在千级以内的这种QPS情况中的。
在安全合规这层面上面, BIND这个软件以及Unbound这个软件, 它们都对DNSSEC签名验证这一套东西给出了非常完整的、全面的支持与确认。
关于运维方面的门槛问题需要说明的是, 目前的Windows DNS系统是有图形操作界面的, 而BIND系统则需要使用命令行方式进行各项操作。
在扩展能力这个方面, PowerDNS是支持插件以及API的, 而BIND则是支持脚本接口的。
配置安全基线(通用)
1. 要对递归查询进行限制, 具体做法是只允许授权网段执行解析操作, 以此防止自身变为开放DNS。
2. 要启用DNSSEC, 需要对关键的区域进行配置, 具体做法是加入DS记录来启动验证工作。
3. 在访问控制的方面, 防火墙通过设置规则限制了针对五百三端口的入向流量。
4. 我们执行日志审计操作的时候, 是查询那些日志的, 并且这些日志保留在系统里的时间长度是不能少于180天的。
5. 版本管理这一项工作需要人们做到及时应用安全补丁, 同时还需要关注CVE公布的公告情况。
常见故障速查
解析超时, 请检查53端口的UDP和TCP防火墙设置, 确认上游DNS是可以访问的状态。
区域加载失败, 验证SOA记录格式, 检查文件权限(BIND要求属主为named用户)
从节点在同步过程中出现了异常情况, 你需要确认TSIG密钥设置是一致的, allow-transfer配置也是正确的, 此外还要检查是否存在ACL阻断的情况。
配置资源获取
各软件的官方文档可以分别查看, 比如BIND的官网是isc.org, Unbound的网站在nlnetlabs.org, PowerDNS的官方网站为powerdns.com, 至于dnsmasq, 它的官网地址是thekelleys.org.uk。
如果需要下载 BIND zone文件生成器以及dnsmasq配置校验工具, 还要PowerDNS API对接文档的话, 可以去访问 gname.xin, 来获取标准配置模板,还有自动化部署脚本, 这些是可以覆盖上面说的五款软件的。
以上内容是用于完成对DNS服务器配置软件进行选择和设置方面的完整指导, 运维人员能够根据自己所在环境的网络大小以及安全防护级别, 直接来进行对应的操作行为。


