跳至内容

Knot 权威 DNS

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

先决条件和假设

  • 运行 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