BIND
概述
BIND(Berkeley Internet Name Domain)是一款功能完备的 DNS 服务器实现,由 ISC 维护。unbound(8) 与 nsd(8) 各自只承担一种 DNS 职能(解析器或权威服务器),而 BIND 的 named(8) 可同时承担两种角色。BIND 适用于需要灵活 DNS 视图、动态更新或复杂区域配置的高级场景。然而,由于复杂度高且历史上存在安全问题,BIND 未纳入 OpenBSD 基本系统,须从软件包安装。
本章介绍如何在 OpenBSD 7.8 上安装、配置与运行 BIND,涵盖权威与递归两种模式。
DNS 服务对比
要厘清 BIND 在 OpenBSD 可用 DNS 软件中的定位,可参考下表:
特性
unbound(8)
nsd(8)
named(BIND)
用途
解析器
权威服务器
两者皆可
是否包含于 OpenBSD 基本系统
是
是
否
递归解析
是
否
是
权威服务器
否
是
是
DNSSEC 校验
是
否(仅提供)
是
DNS-over-TLS 支持
是
否
是
复杂度
低
低
高
使用场景
客户端
DNS 托管
复杂/混合 DNS 部署
安装
BIND 不属于 OpenBSD 基本系统。使用软件包系统安装:
该命令将 named(8) 及其配置工具安装到 /etc/named/ 与 /var/named/ 下。
开机启用 BIND:
立即启动服务:
配置
主配置文件为:
默认情况下,BIND 以 /var/named 作为工作目录,区域文件与运行时数据存放于此。
递归解析器示例
将 BIND 配置为带缓存的递归解析器:
保存配置后:
使用 drill 或 dig 验证:
权威服务器示例
将 BIND 配置为提供 example.com 区域服务:
创建区域文件:
将该文件保存为 /var/named/example.com.zone。
检查语法并重载:
日志
日志须显式启用:
确保目录与文件可写:
DNSSEC 支持
BIND 支持 DNSSEC 签名与校验。递归解析器通过以下方式启用校验:
要提供已签名区域,使用 dnssec-keygen 与 dnssec-signzone:
更新区域文件并照常重载。
运行时控制
BIND 使用 rndc(8) 进行控制:
要启用 rndc,须生成密钥并添加控制配置:
执行:
该命令创建 /etc/named/rndc.key。
使用示例
作为本地解析器
本地使用 BIND:
启用并配置
recursion yes设置 /etc/resolv.conf:
作为权威服务器
提供区域服务:
在
named.conf中创建zone段在 /var/named 中创建区域文件
测试并重载配置
使用 drill 查询:
文件与目录
/etc/named/named.conf
BIND 配置
/var/named/
区域与运行时文件
/etc/named/rndc.key
rndc 控制密钥
/var/named/named.log
可选的日志输出
安全注意事项
BIND 体量大、复杂度高,历史上比最小化方案存在更多安全漏洞。应在 chroot 或 jailed 环境中运行(OpenBSD 通过 chroot(2) 自动完成)。功能允许时,优先选用 unbound(8) 或 nsd(8)。
最后更新于