DNS管理 · 3 min read · Oct 01, 2025
CentOS 7にPowerDNSとPoweradminをインストールする方法

PowerDNS (pdns) は、C++で書かれ、GPLライセンスの下でリリースされたオープンソースのDNSサーバーです。従来のDNSサーバーであるBindの良い代替手段となり、より良いパフォーマンスと低メモリ要件で設計されています。PowerDNSは、権威サーバーとリカーサーの2つの製品を提供しています。PowerDNS権威サーバーは、プレーンなBindゾーンファイル、MySQL、PostgreSQL、SQLite3、またはLDAPなどの異なるバックエンドを介して構成できます。
このチュートリアルでは、MariaDBデータベースサーバーをバックエンドとして使用し、簡単なDNS管理のためにPoweradminを使用してPowerDNS権威サーバーをインストールおよび構成する方法を示します。
前提条件
- CentOS 7サーバー
- ルート権限
何をするか:
- EPELおよびRemiリポジトリをインストール
- MariaDBをインストールおよび構成
- PowerDNSをインストール
- Poweradminをインストール
- Poweradminのインストール後の設定
- サンプルゾーンを作成
ステップ1 - EPELおよびRemiリポジトリをインストール
まず、PowerDNSのインストールに必要な依存関係をインストールする必要があります。EPELリポジトリとPHP 7.2のインストール用の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のルートパスワードを構成します。
以下のコマンドを実行します。
mysql_secure_installationデータベースサーバーのルートパスワードを設定するように求められます。ルートパスワードを設定するために’Y’と入力し、強力なパスワードを入力します。
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データベースサーバーがインストールされ、認証用のルートパスワードが設定されました。
次に、PowerDNSのインストール用に新しいデータベースとユーザーを作成します。rootユーザーとパスワードでMySQLシェルにログインします。
以下のMySQLコマンドを実行します。
mysql -u root -p
PASSWORD新しいデータベース’powerdns’を作成し、’pdns’という名前の新しいユーザーに’pdnspassword2018’というパスワードでデータベースのすべての権限を付与します。
create database powerdns;
grant all privileges on powerdns.* to pdns@localhost 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-utilsPowerDNSパッケージをインストールした後、’/etc/pdns/‘ディレクトリに移動し、vimエディタを使用して設定ファイル’pdns.conf’を編集します。
cd /etc/pdns/
vim pdns.confデフォルトでは、PowerDNSは’bind’をバックエンドとして使用しています。したがって、’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サービスをファイアウォールに追加します。
firebase-cmd --add-service=dns --permanent
firebase-cmd --reload
PowerDNSサービスが起動しているかどうかを確認するには、以下のコマンドを使用します。
netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10その結果、pdnsサービスがポート53で起動しており、PowerDNSサーバーからの応答が得られます。

ステップ4 - Poweradminをインストール
このステップでは、PowerDNS用のDNS管理ツールである’Poweradmin’をインストールします。これは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-mysqlihttpdと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.tgzpoweradminの圧縮ファイルを解凍し、名前を変更します。
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/その後、ファイアウォールにHTTPおよびHTTPSプロトコルを追加します。
firebase-cmd --add-service={http,https} --permanent
firebase-cmd --reloadこれでPoweradminのインストール後の設定が準備完了です。
ステップ5 - Poweradminのインストール後の設定
Webブラウザを開き、サーバーのIPアドレスに/poweradmin/install/パスURLを追加してインストールを開始します。私のは:
http://10.9.9.10/poweradmin/install/
希望する言語を選択し、’Go to Step 2’ボタンをクリックします。
次に、’Go to Step 3’ボタンをクリックします。
データベースの設定が表示されます。作成したPowerDNSデータベースの詳細とPowerDNSの管理者パスワードを入力します。

‘Go to Step 4’ボタンをクリックします。
その後、権限が制限された新しいユーザーを作成する必要があります。以下の詳細を入力し、ユーザー、パスワードなどを自分のものに変更します。
次に、’Go to Step 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スクリプトをそこに貼り付けます。
保存して閉じ、ブラウザに戻ってボタンをクリックします。

インストールが完了しました。
オプション:
他の動的プロバイダーによって使用されるURLをサポートしたい場合は、htaccessファイルをコピーします。
cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccessその後、’install’ディレクトリを削除する必要があります。
rm -rf /var/www/html/poweradmin/install再度Webブラウザに戻り、以下のURLを使用してPoweradminダッシュボードにログインします。
デフォルトのユーザー’admin’とパスワードでログインし、’Go’ボタンをクリックします。
その結果、Poweradminダッシュボードが表示され、インストールが完了しました。
ステップ6 - サンプルゾーンとDNSレコードを作成
この段階では、’emma.io’というドメインの新しいDNSゾーンを作成することでPowerDNSとPoweradminのインストールをテストします。
Poweradminダッシュボードで、’Add master zone’メニューをクリックします。
ゾーン名をドメイン名’emaa.io’に設定し、’Add zone’ボタンをクリックします。
‘List zones’メニューをクリックして、すべての利用可能なゾーンを取得します。そして、ゾーン’emma.io’の’edit’ボタンをクリックします。
‘List zones’メニューをクリックして、すべての利用可能なゾーンを取得します。そして、ゾーン’emma.io’の’edit’ボタンをクリックします。

今、’Add record’ボタンをクリックし、DNSゾーンとDNSレコードをドメイン名’emma.io’に正常に追加しました。
次に、’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’との設定と一致します。
最後に、CentOS 7でのPowerDNSとPoweradminのインストールと構成が成功裏に完了しました。
参考
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。