跳至内容

Knot 权威 DNS

作为 BIND 的替代方案,Knot DNS 是一款现代的仅限权威的 DNS 服务器,由捷克域名注册机构 CZ.NIC 维护。

先决条件和假设

  • 运行 Rocky Linux 的服务器
  • 能够使用 firewalld 创建防火墙规则
  • 指向您的权威 DNS 服务器的域名或内部递归 DNS 服务器

介绍

外部或公共 DNS 服务器将主机名映射到 IP 地址,在 PTR 记录(也称为“指针”或“反向”记录)的情况下,将 IP 地址映射到主机名。这是互联网的重要组成部分。它使您的邮件服务器、Web 服务器、FTP 服务器或许多其他服务器和服务无论您身在何处都能按预期工作。

安装和启用 Knot

首先,安装 EPEL

dnf install epel-release

接下来,安装 Knot

dnf install knot

配置 Knot

在对任何配置文件进行更改之前,请移动原始安装的工作文件 knot.conf

mv /etc/knot/knot.conf /etc/knot/knot.conf.orig

这将有助于将来在配置文件中出现错误时进行恢复。在进行更改之前,始终备份副本是一个好主意。

编辑 knot.conf 文件。作者使用 vi,但您可以用自己喜欢的命令行编辑器替换它

vi /etc/knot/knot.conf

插入以下内容

server:
    listen: 0.0.0.0@53
    listen: ::@53

zone:
  - domain: example.com
    storage: /var/lib/knot/zones
    file: example.com.zone

log:
  - target: syslog
    any: info

example.com 替换为您运行名称服务器的域名。

接下来,创建区域文件

mkdir /var/lib/knot/zones
vi /var/lib/knot/zones/example.com.zone

DNS 区域文件与 BIND 兼容。在文件中,插入

$TTL    86400 ; How long should records last?
; $TTL used for all RRs without explicit TTL value
$ORIGIN example.com. ; Define our domain name
@  1D  IN  SOA ns1.example.com. hostmaster.example.com. (
                              2024061301 ; serial
                              3h ; refresh duration
                              15 ; retry duration
                              1w ; expiry duration
                              3h ; nxdomain error ttl
                             )
       IN  NS     ns1.example.com. ; in the domain
       IN  MX  10 mail.another.com. ; external mail provider
       IN  A      172.20.0.100 ; default A record
; server host definitions
ns1    IN  A      172.20.0.100 ; name server definition     
www    IN  A      172.20.0.101 ; web server definition
mail   IN  A      172.20.0.102 ; mail server definition

如果您需要帮助定制 BIND 风格的区域文件,Oracle 提供了 有关区域文件的良好介绍

保存您的更改。

启用 Knot

接下来,允许 firewalld 中的 DNS 端口并启用 Knot DNS

firewall-cmd --add-service=dns --zone=public
firewall-cmd --runtime-to-permanent
systemctl enable --now knot

使用 host 命令检查 DNS 解析

% host example.com 172.20.0.100
Using domain server:
Name: 172.20.0.100
Address: 172.20.0.100#53
Aliases: 

example.com has address 172.20.0.100
example.com mail is handled by 10 mail.another.com.
%

结论

虽然大多数人使用第三方服务进行 DNS,但有些情况下需要自托管 DNS。例如,电信、托管和社交媒体公司托管许多 DNS 条目,在这些条目中托管服务是不希望的。

Knot 是许多开源工具之一,使托管 DNS 成为可能。恭喜,您拥有自己的 DNS 服务器!

作者:Neel Chauhan

贡献者:Steven Spencer、Ganna Zhyrnova