NSD
来自 NSD
- NLnet Labs 名称服务器守护程序 (NSD) 是一个权威 DNS 名称服务器。它专为对速度、可靠性、稳定性和安全性要求极高的环境而开发。
安装
为 bind 用户迁移到 nsd
一旦软件包安装完成,对于当前运行 bind 作为 dns 服务器的用户,文件中有一些有用的迁移说明
/usr/share/doc/nsd/NSD-FOR-BIND-USERS
许多用户希望在单台机器上同时运行 nsd 作为其权威 DNS 服务器,并运行 unbound 作为验证、递归、缓存 DNS 服务器。参考 unbound 的 Wiki 页面可能会很有用。
初始设置
很可能您将使用 DNS 缓存服务器(如 Unbound)运行 nsd。因此,为了避免冲突,此配置为 nsd 使用端口 53530,因为端口 53 已被 DNS 缓存服务器使用。nsd 将监听 localhost 上的请求。此外,唯一需要为来自外部机器(或同一本地网络上的其他机器)的 DNS 查询打开的防火墙端口是端口 53。
安装后,带注释的示例配置文件位于 /etc/nsd/nsd.conf.sample
。以下是一个最小的工作示例
/etc/nsd/nsd.conf
server: server-count: 1 ip-address: 127.0.0.1 port: 53530 do-ip4: yes hide-version: yes identity: "Home network authoritative DNS" zonesdir: "//etc/nsd" key: name: "keyname" algorithm: hmac-md5 secret: "secretkey" zone: name: "example.com" zonefile: "example.com.zone"
有关更多示例,请参见 [1]。
请注意,当运行 4.3.5 版本时,状态中会出现一条良性消息,提示“unable to initgroups nsd: Operation not permitted”。可以通过将以下行添加到 `/etc/nsd/nsd.conf` 来避免这种情况
username: ""
并且单元状态将不再显示 initgroups 消息。
启动和运行 nsd
在启动 nsd 之前,您可以使用 `nsd-checkconf` 命令和区域文件名作为参数来检查区域文件。
为了构建使 nsd 运行非常快速的区域数据库,每次区域文件或配置文件更改时都必须重建数据库文件,并执行以下命令
# nsd-control reload
为了启动 nsd,请启动/启用 nsd.service
systemd 服务。
测试 nsd
在测试阶段,nsd 可以与 bind 同时运行。您可以使用以下命令在端口 53530 上检查正向和反向本地查找
drill @127.0.0.1 -p 53530 mylocalmachine1.myhomenet.com drill @127.0.0.1 -p 53530 -x w.x.y.z
其中 w.x.y.z 是 LAN 内的本地地址。
配置 unbound
一旦此设置工作正常,如果您正在运行 unbound 作为缓存递归服务器,则可以切换 unbound 配置,以使用 unbound.conf 中的以下结构(并参见 unbound)将来自同一网络上的本地计算机的查询转发到查询 nsd,其中假定 nsd 正在监听端口 53530
do-not-query-localhost: no local-zone: "example.com" nodefault domain-insecure: "example.com"
stub-zone: name: "example.com" stub-addr: 127.0.0.1@53530
一旦 unbound.conf 包含上述内容,请重新启动 unbound 并检查对 nsd 区域条目的本地查询是否有效。一旦所有测试完成,您可以通过在 unbound.conf 中包含以下行,将 unbound 切换为同时监听 127.0.0.1 和本地网络的外部接口
interface: 127.0.0.1 interface: 10.0.0.1
其中 10.0.0.1 是运行 nsd 和 unbound 并为 10.x.x.x 网络上的其他机器提供本地 DNS 的 DNS 服务器的 IP 地址。
此处的示例都假定仅使用 IPv4。如有必要,应包括 IPv6 的相应配置,有关参数的更多详细信息可以在这两个软件包的手册页以及可以通过 Web 搜索找到的示例中找到。
面向 WAN 的 DNS
还可以更改服务器正在监听的配置文件和接口,以便来自本地网络外部的计算机的 DNS 查询可以访问 LAN 内的特定计算机。这对于可以从任何地方访问的 Web 和邮件服务器非常有用,并且可以采用与多年来使用 bind 实现的相同技术,结合网络防火墙机器中的适当端口转发,以允许传入请求访问正确的机器。