在 Ubuntu 16.04 服务器上安装 PowerDNS 和 MariaDB

什么是 PowerDNS?

PowerDNS (pdns) 是用 C++ 编写的 DNS 服务器。 它最初是作为专有软件开始的,但在开源 GPL 许可下于 2002 年发布。 它广泛用于 DNS 托管,是使用 DNSSEC 托管域的最流行的 DNS 服务器之一。 它可以安装在大多数 UNIX 类型的操作系统上。 它支持大量后端,包括但不限于 MySQL、SQLite3、PostgreSQL、Oracle、Sybase、LDAP、Microsoft SQL Server 和 BIND 等纯文本文件。 它还有一个内置的 Web 服务器,可与他们的 JSON/REST API 一起使用。 PowerDNS 可以是您域的权威名称服务器,但也可以用作递归 DNS 解析器。 PowerDNS Authoritative Server 和 PowerDNS Recursor 是独立的程序。

PowerDNS 权威服务器 (pdns_server) 为特定域提供最终的 DNS 记录(例如 A、MX、TXT、CNAME 等)。 它只为包含 DNS 记录的域提供 DNS。

相反,PowerDNS Recursor (pdns_recursor) 是解析 DNS 服务器。 它从权威的 DNS 服务器向最终用户提供 DNS 记录。 服务器提供 DNS 缓存、解析和递归。 当最终用户请求 DNS 记录时,递归器会检查请求是否已被缓存。 如果不是,则递归器向权威 DNS 服务器发出请求。 DNS 查询基于 TTL(生存时间)值进行缓存。 pdns_recursor 不需要 pdns_server 来运行。 事实上,pnds_recursor 在权威服务器后面不使用时性能更好。 pnds_recursor 在 Internet 上被 Shaw Cable、Neuf Cegetel 和 AOL 等知名公司广泛使用。 由于安全隐患,通常不建议运行公共递归 DNS 服务器。

使用 PowerDNS 进行缓存

PowerDNS 具有良好的性能和较低的内存使用率。 它默认提供数据包缓存。 PowerDNS 使用此缓存来为之前运行的查询提供答案。 它在不进一步处理请求的情况下执行此操作。 默认情况下,数据包缓存的 TTL 设置为 20 秒。 除了 Packet Cache,PowerDNS 还使用 Query Cache 来缓存后端查询。 最常见的后端查询是 CNAME 查找。 例如,如果用户请求 www.CodePre.com 的 A 记录,则服务器首先必须查找 www.CodePre.com 的 CNAME 记录。 未来对 www.CodePre.com 的请求将首先从缓存中提取,直到 TTL 过期。 查询缓存还缓存否定查询,即不提供答案的查询。 缓存否定查询提供了最大的性能增益。 查询需要很少的内存来存储,并且通常不会在传播速度方面造成问题,否定查询的默认 TTL 为 60 秒。

为什么选择 PowerDNS?

有了所有的 DNS 服务器,为什么选择 PowerDNS? PowerDNS 支持的大量数据库以及缓存和 DNSSEC 实施使 PowerDNS 在选择 DNS 服务器时成为一个不错的选择。 根据您正在使用或想要使用的后端类型,它可能是唯一的选项之一。

当涉及到 DNS 服务器时,BIND 是另一种流行的选择。 BIND 是 Linux 操作系统上最流行和事实上的标准。 它既可以处理权威 DNS 查询,也可以处理递归 DNS 查询。 BIND 支持以下数据库类型,包括 LDAP、Berkeley DB、MySQL、PostgreSQL 和 ODBC。 它还支持 DNSSEC。 但是,与 PowerDNS 相比,它通常使用更多内存并且性能更慢。

在本指南中,我们将向您展示如何在运行 Ubuntu 16.04 的 Ubuntu 服务器上安装 MariaDB 和 PowerDNS。 为此,您唯一需要的是具有 Internet 连接的 Ubuntu VPS 服务器和具有 sudo 特权。

安装 MariaDB

首先为当前稳定版本设置存储库:

sudo apt-get install software-properties-common

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] https://ftp.utexas.edu/mariadb/repo/10.2/ubuntu xenial main'

然后安装 MariaDB:

sudo apt update

sudo apt install mariadb-server

安装时会要求您设置root密码:

然后它会要求您确认该密码:

安装 PowerDNS

sudo apt install pdns-server pdns-backend-mysql

在安装过程中,pdns-backend-mysql 会询问您是否希望它“使用 dbconfig-common 为 pdns-backend-mysql 配置数据库”?

选择 是的. 在下一个屏幕上,它将要求您输入 MySQL 的密码。在安装过程中,pdns-backend-mysql 会询问您是否希望它“使用 dbconfig-common 为 pdns-backend-mysql 配置数据库”? 选择是。

只需选择 . 这将为 PowerDNS 设置一个名为 pdns 的 MariaDB 数据库,并使用随机生成的密码创建一个数据库用户。 MariaDB 连接的配置文件可以在 /etc/powerdns/pdns.d/pdns.local.gmysql.conf, 如果需要的话。

您可以通过运行检查程序的状态:

systemctl status pdns.service

systemctl status mariadb.service

您现在可以使用 MariaDB 编辑 DNS。 当然,许多用户选择使用 Poweradmin 或脚本。 在我们的下一个教程中,我们将向您展示如何通过 Poweradmin 轻松安装和管理您的 DNS。