当企业在部署DNS服务器的时候, 其中的一个最核心的需求, 就是得去找到那么一款软件, 这款软件在配置效率方面得分很高, 同时在稳定性方面也要很强悍, 并且在后续的管理过程中还得特别容易上手。

目前市场上主流的选择呢, 主要包括了四个具体的选项, 分别是BIND、Microsoft DNS、Unbound以及PowerDNS, 这四款软件各自适配的领域有所不同, 有的专门适配于Linux系统, 有的则是对应Windows系统, 还有的则是更适合那些轻量的解析应用场景。

接下来的内容, 将会分别从功能定位、适用场景这两个具体的方向, 再加上配置方法这一维度, 一共三个主要的维度来进行详细的说明阐述, 以便让读者能够更清晰地了解这些软件的差异与特点。

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

BIND是BerkeleyInternetNameDaemon, 它是历史最为悠久的开源类型的DNS软件, 这个软件支持正向与反向的解析功能, 它还支持区域传送的功能, 它也支持动态更新这一项叫做DNSSEC的功能, 所以对于中大型企业来说, 它适用于对内网还有外网域名的统一管理。

它的配置文件是named.conf, 你可以用rndc命令来在线刷新配置内容, 这样做的话, 就不需要去重启服务了。

微软公司的DNS服务器, 它是集成在了Windows Server系统里面的, 人们可以通过图形界面这种方式, 也就是那个叫作DNS管理器的东西, 或者是通过PowerShell这个工具, 去完成像区域创建、记录添加这样的操作, 它比较适合那些使用Windows生态体系的企业, 因为它支持AD集成DNS, 这样的话域控制器和DNS服务之间就会有一种深度的绑定关系。

Unbound这个名字代表的软件是一个很轻量的递归解析器, 它默认的设定就是只去做递归查询这个功能, 因为这个原因它在资源占用上面是非常低的, 内存方面大概只需要二十兆字节左右, 正是因为这些特点, 所以它非常适合被用在了边缘节点这种地方, 或者用在测试环境里面, 又或者作为权威DNS来充当那个前端缓存层的角色, 而对应的配置文件名字是unbound.conf, 除此之外它还支持使用local-zone这一类的指令来帮助快速下发本地的那种策略。

PowerDNS里面的那个Auth-Server组件, 它是直接用SQL数据库, 比如说MySQL, 或者PostgreSQL这样的数据库, 来存放区域记录的, 而且它还支持多用户权限的隔离, 允许进行HTTP API管理, 还能用Lua脚本进行扩展, 因此它特别合适那些记录量非常大, 达到百万级别域名数量, 并且需要非常高频率批量变更数据的场景。

以BIND为例的标准配置步骤

1. 安装的时候, 如果你是使用CentOS系统的话, 可以在命令行里面输入yum install bind bind-utils来进行操作。

另一方面, 如果你用的是Debian或者Ubuntu系统, 那么你需要在终端里执行apt install bind9 bind9utils这个命令来完成安装过程。

2. 编辑主配置/etc/named.conf,在options块中设置listen-on、allow-query及forwarders(上游DNS)。

DNS服务器配置软件有哪些?主流工具推荐与配置方法(图1)

3. 创建区域文件, 这个文件的路径是/var/named/zone/yourdomain.com.zone, 在内容上面填入SOA记录, 还有NS记录, 接着填入A记录, 最后还得把CNAME等这些类型的记录全部加上。

4. 在named.conf里的zone代码块中要声明这个区域, 指定类型为IN, 还有类, 文件路径及allow-transfer。

5. 你必须执行那个rndc reload的命令, 这样才能让新的配置文件的内容真正产生作用。然后, 你要去使用dig @127.0.0.1 yourdomain.com

选型建议

如果你需要一个在所有的平台上都可以使用、功能也非常全面, 而且社区的生态还比较丰富的软件的话, 那么你去选择BIND。

在纯Windows环境之下, 如果还需要与AD域控制服务器进行联动操作的话, 那么应该选择Microsoft DNS这个服务来进行处理。

如果你在追求极致的轻量效果, 并且打算只去做递归缓存方面的事情, 那么你可以去选Unbound。

因为需要记录的数据量非常大, 并且需要通过API这种批量管理的方式来处理, 同时还需要实现多租户之间的数据隔离情况, 所以应该去选择PowerDNS。

配置常见问题与注意事项

必须让防火墙放行UDP和TCP这两个协议, 并且是针对53这个端口号的情况。如果在启动BIND的时候选择了使用listen-on localhost这一个配置选项, 就可以避免让这个服务暴露在公网上面。

要是区域文件里面做了一些变更的话, 那么最后一定必须要执行rndc reload这个操作命令, 而不要直接去重启那个服务, 这样做的目的是为了能够防止解析过程中出现中断的问题。

如果企业想要获得一个一站式的获取渠道, 以便找到那些DNS服务器配置软件的下行渠道、版本校验以及部署文档的话, 那么他们是可以去访问一下gz88.cn这个网站的, 在该网站上可以查找到对应的资源入口, 并且该站点还提供了上述的那四款软件的官方网站的安装包的索引情况, 同时也提供了相关的配置模板的下载服务。

咱们上面提到的这些配置方案, 全都是从那个各个软件的官方文档里面弄出来的东西, 具体来说, 就是包括了那个BIND 9.18加以上版本, 还有Windows Server 2022, 然后就是Unbound 1.17加以上的版本了, 再加上PowerDNS的4点几的版本, 这些都是整理好啦的, 但是在你真的要去部署这些东西之前, 你还是得要去看一看对应的那个版本的Release Notes是什么情况, 以那个为准才行咧。