目前市面上用得比较多的DNS服务器配置软件主要有四种, 这四种分别是BIND、Windows Server DNS、PowerDNS还有dnsmasq。它们各自适合用在不同大小的网络环境里。
大家在选择的时候主要看重以下这个核心依据: 对于规模比较小和中等一些的企业来说, 优先选择使用Windows DNS或者是dnsmasq;而对于规模比较大以及中大型企业, 还有那些运营商级别的场景来讲, 就建议优先去选用BIND或者PowerDNS了。
主流DNS服务器配置软件对比
1. BIND
它适用的场景包括中大型企业、还有ISP以及那种需要处理高并发DNS解析的情况。用户可以通过名为named.conf的配置文件来管理区域文件, 这个配置不仅支持DNSSEC, 也支持ACL这种访问控制方式。
在进行配置的入口方面呢, 主要涉及到位于/etc/named.conf的这个文件以及区域文件所在的目录, 就是这么个情况。
2. Windows Server DNS
它的适用场景包括企业内的Active Directory环境或者是中小型企业。它可以以图形化的DNS管理器作为操作方式, 也可以使用PowerShell脚本这种双模式来操作。
这样做可以与AD实现深度的集成。配置入口可以通过DNS管理器控制台来进行访问, 也可以通过Get-DnsServer系列的cmdlet命令来进行配置。
3. PowerDNS
这个工具的适用场景包括企业级域名系统、云计算环境以及需要数据库后端来执行管理的场合, 关于记录的变更事项是通过网页面板去完成的, 它支持像MySQL和PostgreSQL这样不同类型的多后端情况, 同时应用接口也是非常完善的, 配置的进入入口可以是Web管理面板或者也可以使用pdns_control命令行。
4. dnsmasq
适用的场景是小局域网、嵌入式设备还有快速部署的情况。只需要一个单独的二进制文件就可以直接打开使用, 它还支持DHCP集成, 维护的成本是非常低的。配置的入口是在/etc/dnsmasq.conf里, 这是一个单独的配置文件。
核心配置步骤(以BIND为例)
步骤1, 这指的是进行安装和初始化工作, 你要去执行命令yum install bind bind utils, 这个是针对CentOS系统的, 或者是去执行apt install bin9,这个是给Ubuntu系统用的, 然后还需要去启动systemctl start named。
步骤2, 配置监听和访问控制, 这个内容需要大家去编辑/etc/named.conf, 然后在里面把listen-on port 53以及allow-query acl都给设置好, 通过这样的方式, 来限定那些允许的查询来源的IP段。
我们来做步骤3的这个事情, 具体工作呢是创建区域文件, 这个操作是在/var/named/这个路径下面去执行的, 需要建立正向着的文件和反向着的文件, 正着的那一个呢叫example.com.zone, 反着的这一个叫1.168.192.in-addr.arpa.zone, 在这些文件里面我们需要填写相关的记录内容这些内容呢包含SOA记录, 还有NS记录, 以及A记录, 最后还要填写CNAME记录。
步骤4是加载区域。在named.conf中添加zone块, 指定file路径与type, 也就是master或者slave, 然后执行rndc reload, 这样生效。
步骤5, 需要进行验证环节, 使用
常见配置问题与排查
解析失败了, 确认防火墙已经放行了UDP和TCP的53端口, 用named-checkzone验证区域文件语法。
从服务器同步发生了异常, 你需要检查主从服务器的NTP时间是否同步了, 还需要核对allow-transfer与transfer-peer这两个配置。
出现高并发性能瓶颈的情况时, 可以针对这种情况进行升级处理, 具体办法是把软件版本升级到 BIND 9.16 或者更高的版本, 并且在其中启用异步 I/O 模块, 或者是选择切换成使用 PowerDNS 的 Lua 后端方案来解决。
选型速查
网络节点的服务器数量没有达到50台的时候, 可以考虑使用dnsmasq方案, 通过单一文件来实现配置工作, 这样部署起来的速度是最快的。
企业的AD环境里面, 使用的是带有DNS功能的Windows Server系统, 所有的策略都跟域控制器放在一起统一进行管理。
为了实现跨机房、多区域以及高可用的目标, 可以选用BIND主从架构或者PowerDNS集群。
上面的那各个方案的完整的配置的模板和那个故障排查的手册, 你能够在gz88.cn的那个DNS配置专区那里去获取到, 这里面是涵盖了BIND, 还有PowerDNS, 以及Windows DNS这三套标准的部署文档的, 是支持直接进行下载的。


