如何在 CentOS 7 上安装 PowerDNS 和 Poweradmin如何在 CentOS 7 上安装 PowerDNS 和 Poweradmin如何在 CentOS 7 上安装 PowerDNS 和 Poweradmin如何在 CentOS 7 上安装 PowerDNS 和 Poweradmin
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 7 上安装 PowerDNS 和 Poweradmin

在此页

  1. 先决条件
  2. 我们将做什么:
  3. 第 1 步 - 安装 EPEL 和 Remi 存储库
  4. 第 2 步 - 安装和配置 MariaDB
  5. 第 3 步 - 安装 PowerDNS
  6. 第 4 步 - 安装 Poweradmin
  7. 第 5 步 - Poweradmin 安装后
  8. 第 6 步 - 创建示例区域和 DNS 记录
  9. 参考资料

PowerDNS (pdns) 是一个用 C++ 编写并在 GPL 许可下发布的开源 DNS 服务器。它已经成为传统 DNS 服务器 Bind 的一个很好的替代品,具有更好的性能和更低的内存需求。 PowerDNS 提供了两种产品,Authoritative server 和 Recursor。 PowerDNS 权威服务器可以通过不同的后端进行配置,包括普通的绑定区域文件、MySQL、PostgreSQL、SQLite3 或 LDAP 等 RDBMS。

在本教程中,我将向您展示如何安装和配置以 MariaDB 数据库服务器为后端的 PowerDNS 权威服务器,并使用 Poweradmin 轻松管理 DNS。

先决条件

  • CentOS 7 服务器
  • 根权限

我们将要做什么:

  1. 安装 EPEL 和 Remi 存储库
  2. 安装和配置 MariaDB
  3. 安装 PowerDNS
  4. 安装 Poweradmin
  5. Poweradmin 安装后
  6. 创建示例区

第 1 步 - 安装 EPEL 和 Remi 存储库

首先,我们需要为 PowerDNS 安装安装依赖项。我们要为 PHP 7.2 安装安装 EPEL 存储库和 REMI。

使用以下命令安装 EPEL 和 PHP Remi 存储库。

yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

将这些存储库添加到系统后,安装 yum-utils 包。

yum -y install yum-utils

并使用以下命令启用 PHP 7.2 Remi 存储库。

yum-config-manager --enable remi-php72

第 2 步 - 安装和配置 MariaDB

PowerDNS 权威服务器支持不同的后端,包括 MySQL/MariaDB 数据库服务器。后端术语是服务器将查询的数据存储区,其中包含 DNS 记录(和一些元数据)。对于本指南,我们将使用 MariaDB 作为后端。

使用以下 yum 命令安装 MariaDB。

yum -y install mariadb mariadb-server

安装完成后,启动MariaDB服务并将其添加到启动引导时间。

systemctl start mariadb
systemctl enable mariadb

接下来,我们将使用名为 mysql_secure_installation 的交互式工具为 MariaDB 配置 root 密码。

运行下面的命令。

mysql_secure_installation

系统将提示您配置数据库服务器的根密码。输入 Y 设置 root 密码并输入一个强密码。

Set root password? [Y/n] Y
New password:
Re-enter new password:

对于其他人,只需键入 Y 即可。

Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

因此,您已经安装了 MariaDB 数据库服务器并设置了用于身份验证的 root 密码。

接下来,我们将为 PowerDNS 安装创建一个新的数据库和用户。使用用户 root 和密码登录到 MySQL shell。

运行下面的 MySQL 命令。

mysql -u root -p
PASSWORD

现在创建一个名为 powerdns 的新数据库,并将所有数据库权限授予一个名为 pdns 且密码为 pdnspassword2018 的新用户。

create database powerdns;
grant all privileges on powerdns.* to identified by 'pdnspassword2018';
flush privileges;

之后,通过运行下面的 MySQL 查询为 PowerDNS 数据库创建表结构。

use powerdns;

CREATE TABLE domains (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255) NOT NULL,
  master                VARCHAR(128) DEFAULT NULL,
  last_check            INT DEFAULT NULL,
  type                  VARCHAR(6) NOT NULL,
  notified_serial       INT DEFAULT NULL,
  account               VARCHAR(40) DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);


CREATE TABLE records (
  id                    BIGINT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);


CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;


CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) NOT NULL,
  comment               VARCHAR(64000) NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);


CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);


CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB;

CREATE INDEX domainidindex ON cryptokeys(domain_id);


CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);

quit;

因此,已创建 MySQL/MariaDB 数据库和用于安装 PowerDNS 的用户。

第 3 步 - 安装 PowerDNS

使用以下命令安装 PowerDNS 和所有需要的包。

yum -y install pdns pdns-backend-mysql bind-utils

安装 PowerDNS 包后,进入 /etc/pdns/ 目录并使用 vim 编辑器编辑配置文件 pdns.conf。

cd /etc/pdns/
vim pdns.conf

默认情况下,PowerDNS 使用绑定作为后端。因此,在 launch=bind 配置前面键入注释 # 并粘贴 MySQL 后端配置,如下所示。

#launch=bind

launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2018
gmysql-dbname=powerdns

保存并关闭。

现在启动pdns服务,并将其添加到启动引导时间。

systemctl start pdns
systemctl enable pdns

之后,将 DNS 服务添加到防火墙。

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

并且 PowerDNS 服务已启动并正在运行,使用以下命令进行检查。

netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10

结果,您将获得 pdns 服务在端口 53 上启动并运行,并从 PowerDNS 服务器获得响应。

第 4 步 - 安装 Poweradmin

在此步骤中,我们将为名为 Poweradmin 的 PowerDNS 安装 DNS 管理。它是一个基于 PHP 的 Web 应用程序,因此我们需要安装 PHP 和 Web 服务器才能运行该应用程序。

使用以下命令安装 httpd Web 服务器和 PHP 包。

yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

安装后,我们需要安装额外的 PHP Pear 包。运行以下命令。

yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli

httpd 和 PHP 安装完成后,启动 httpd 服务并将其添加到启动引导时间。

systemctl start httpd
systemctl enable httpd

接下来,转到 /var/www/html 目录并下载 poweradmin 源代码。

cd /var/www/html/
wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

提取 poweadmin 压缩文件并重命名它。

tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/

之后,将 HTTP 和 HTTPS 协议添加到防火墙。

firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reload

并为 poweradmin 后安装做好准备。

第 5 步 - Poweradmin 安装后

打开您的网络浏览器并输入服务器 IP 地址以及安装的 /poweradmin/install/ 路径 URL。我的是:

http://10.9.9.10/poweradmin/install/

选择您的首选语言,然后单击转到第 2 步按钮。

现在只需单击转到第 3 步按钮。

并且您将显示数据库配置。键入我们创建的 PowerDNS 数据库详细信息和 PowerDNS 的管理员密码。

单击转到步骤 4 按钮。

之后,您将需要创建一个新用户,其权限将受到限制。按以下方式键入详细信息,并使用您自己的用户名、密码等进行更改。

现在单击转到步骤 5 按钮。

您将看到如下页面。

再次打开您的终端服务器,使用 root 用户和密码登录。然后运行页面上的 MySQL 查询。

mysql -u root -p
PASSWORD

GRANT SELECT, INSERT, UPDATE, DELETE
ON powerdns.*
TO 'hakase'@'localhost'
IDENTIFIED BY 'hakase-labs123';

现在返回 Web 浏览器并单击 Go to Step 6 按钮。

您将看到如下页面。

安装程序无法创建新配置 ../inc/config.inc.php。所以,我们需要手动创建它。

回到终端服务器,进入/var/www/html/poweradmin目录,新建配置文件inc/config.inc.php。

cd /var/www/html/poweradmin
vim inc/config.inc.php

现在将页面上的 PHP 脚本粘贴到其中。

<?php

$db_host                = 'localhost';
$db_user                = 'hakase';
$db_pass                = 'hakase-labs123';
$db_name                = 'powerdns';
$db_type                = 'mysql';
$db_layer               = 'PDO';

$session_key            = '=uetwJeD2#uApgO)2Ekj+S#oN1Khhoj';

$iface_lang             = 'en_EN';

$dns_hostmaster         = 'server.hakase-labs.io';
$dns_ns1                = 'ns1.hakase-labs.io';
$dns_ns2                = 'ns2.hakase-labs.io';

保存并关闭,然后返回浏览器并单击按钮。

并且安装完成。

可选:

如果您想支持其他动态提供程序使用的 URL,请复制 htaccess 文件。

cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccess

之后,您必须删除安装目录。

rm -rf /var/www/html/poweradmin/install

再次返回您的 Web 浏览器并使用以下 URL 登录 Poweradmin 仪表板。

http://10.9.9.10/poweradmin/

使用默认用户 admin 和密码登录,单击 Go 按钮。

结果,您将看到 Poweradmin 仪表板并且安装已完成。

第 6 步 - 创建示例区域和 DNS 记录

在此阶段,我们将通过为名为 emma.io 的域创建一个新的 DNS 区域来测试 PowerDNS 和 Poweradmin 安装。

在 Poweradmin 仪表板上,单击“添加主区域”菜单。

使用域名 emaa.io 设置区域名称,然后单击添加区域按钮。

单击列表区域菜单以获取所有可用区域。然后单击区域 emma.io 的编辑按钮。

单击列表区域菜单以获取所有可用区域。然后单击区域 emma.io 的编辑按钮。

现在单击“添加记录”按钮,我们成功为名为 emma.io 的域添加了 DNS 区域和 DNS 记录。

接下来,我们将使用 dig DNS 实用命令测试域 emma.io。

检查域emma.io的名称服务器或ns记录。

dig NS emma.io @10.9.9.10

查看emma.io域名的A DNS记录。

dig A emma.io @10.9.9.10

您将看到域 emma.io 有一个来自我们的 DNS 服务器 ns1.hakase-labs.io 的名称服务器,并且该域名的 A 与我们在顶部的配置相匹配,服务器 IP 地址为 10.9.9.11。

至此,PowerDNS和Poweradmin在CentOS 7上的安装配置已经顺利完成。

参考

    <李>
  • https://github.com/poweradmin/poweradmin

©2015-2025 艾丽卡 support@alaica.com