PowerDNS インストール · 4 min read · Oct 01, 2025

Debian Lenny に PowerDNS (MySQL バックエンド) と Poweradmin をインストールする

Debian Lenny に PowerDNS (MySQL バックエンド) と Poweradmin をインストールする

バージョン 1.0
著者: Falko Timme
Twitter でフォローしてください

この記事では、Debian Lenny システムに PowerDNS 名前サーバー (MySQL バックエンド付き) と PowerDNS 用の Poweradmin コントロールパネルをインストールする方法を示します。PowerDNS は高性能の権威サーバー専用の名前サーバーで、ここで説明するセットアップでは MySQL データベースから DNS レコードを読み取ります (MyDNS に似ています)。ただし、PostgreSQL などの他のバックエンドもサポートされています。Poweradmin は PowerDNS 用のウェブベースのコントロールパネルです。

これがあなたにとって機能するという保証はありません!

1 前提条件

この例では、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を持つ Debian Lenny ホストを使用しています。このホストは、チュートリアルの最初の 6 章に従って設定されています: 完璧なサーバー - Debian Lenny (Debian 5.0) [ISPConfig 2]。

この例では、PowerDNS サーバーを 1 台 (マスター) のみ設定します。PowerDNS スレーブを追加することは、マスターからスレーブへの MySQL データベースレプリケーションを使用することで簡単に実現できるため、ゾーントランスファーは必要ありません (これも MyDNS に似ています)。MySQL データベースレプリケーションは、次のチュートリアルに従って設定できます: MySQL でのデータベースレプリケーションの設定方法 (PowerDNS は、MySQL レプリケーションを使用できないシナリオのためにネイティブゾーントランスファーもサポートしています - http://downloads.powerdns.com/documentation/html/replication.html を参照)。

2 MySQL のインストール

MySQL をインストールするために、次のコマンドを実行します。

aptitude install mysql-server mysql-client

MySQL root ユーザーのパスワードを提供するように求められます。このパスワードは、ユーザー root@localhost と [email protected] に対して有効ですので、後で手動で MySQL root パスワードを指定する必要はありません:

MySQL “root” ユーザーの新しいパスワード: <– yourrootsqlpassword
MySQL “root” ユーザーのパスワードを再入力: <– yourrootsqlpassword

MySQL がすべてのインターフェースでリッスンするようにしたいので (これは MySQL データベースレプリケーションにとって重要です!)、localhost のみではなく、/etc/mysql/my.cnf を編集し、bind-address = 127.0.0.1 の行をコメントアウトします:

vi /etc/mysql/my.cnf

| [...] #bind-address = 127.0.0.1 [...] |

次に、MySQL を再起動します:

/etc/init.d/mysql restart

ネットワークが有効になっているか確認します。次のコマンドを実行します。

netstat -tap | grep mysql

出力は次のようになります:

server1:~# netstat -tap | grep mysql  
tcp        0      0 *:mysql                 *:*                     LISTEN     3031/mysqld  
server1:~#

3 PowerDNS のインストール

PowerDNS をインストールするために、次のコマンドを実行します。

aptitude install pdns-server pdns-backend-mysql

PowerDNS の設定は /etc/powerdns ディレクトリにあります - それについては後で説明します。

次に、MySQL に接続します:

mysql -u root -p

MySQL root パスワードを入力すると、MySQL シェルに入ります。MySQL シェルで、PowerDNS 用のデータベースを作成します:

CREATE DATABASE powerdns;

次に、PowerDNS 用のデータベースユーザー (powerdns) を作成します:

GRANT ALL ON powerdns.* TO 'power_admin'@'localhost' IDENTIFIED BY 'power_admin_password';  
GRANT ALL ON powerdns.* TO 'power_admin'@'localhost.localdomain' IDENTIFIED BY 'power_admin_password';  
FLUSH PRIVILEGES;

(ここで、power_admin_password をお好みのパスワードに置き換えてください。)

次に、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)  
);
CREATE UNIQUE INDEX name_index ON domains(name);
CREATE TABLE records (  
id INT auto_increment,  
domain_id INT DEFAULT NULL,  
name VARCHAR(255) DEFAULT NULL,  
type VARCHAR(6) DEFAULT NULL,  
content VARCHAR(255) DEFAULT NULL,  
ttl INT DEFAULT NULL,  
prio INT DEFAULT NULL,  
change_date INT DEFAULT NULL,  
primary key(id)  
);
CREATE INDEX rec_name_index ON records(name);  
CREATE INDEX nametype_index ON records(name,type);  
CREATE INDEX domain_id ON records(domain_id);
CREATE TABLE supermasters (  
ip VARCHAR(25) NOT NULL,  
nameserver VARCHAR(255) NOT NULL,  
account VARCHAR(40) DEFAULT NULL  
);

… そして最後に MySQL シェルを終了します:

quit;

次に、PowerDNS が MySQL バックエンドを使用するように設定する必要があります:

vi /etc/powerdns/pdns.conf

pdns.conf に launch=gmysql の行を追加します:

| [...] ################################# # launch Which backends to launch and order to query them in # # launch= launch=gmysql [...] |

次に、/etc/powerdns/pdns.d/pdns.local を開き、次のようにします:

vi /etc/powerdns/pdns.d/pdns.local

| # ここには、ユーザーが行ったローカルの変更が含まれます。 # 存在するさまざまなバックエンドの設定など。 gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

次に、pdns を再起動します:

/etc/init.d/pdns restart

これで、PowerDNS は使用できるようになりました。詳細については、ドキュメントを参照してください: http://downloads.powerdns.com/documentation/html/index.html

4 Poweradmin のインストール

次に、PowerDNS 用のウェブベースのコントロールパネルである Poweradmin をインストールします。Poweradmin は PHP で書かれているため、ウェブサーバー (この例では Apache2 を使用) と PHP をインストールする必要があります:

aptitude install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext

Poweradmin には、次の 2 つの PEAR パッケージも必要です:

pear install DB  
pear install pear/MDB2#mysql

これで、Poweradmin のすべての前提条件がインストールされ、Poweradmin のインストールを開始できます (私は /var/www のサブディレクトリにインストールします - /var/www は Debian の Apache のデフォルトウェブサイトのドキュメントルートです。異なるドキュメントルートで vhost を作成した場合は、パスを調整してください)。

https://www.poweradmin.org/trac/wiki/GettingPoweradmin に移動し、最新の Poweradmin パッケージをダウンロードします。例えば、次のようにします:

cd /tmp  
wget https://www.poweradmin.org/download/poweradmin-2.1.4.tgz

次に、/var/www/poweradmin ディレクトリにインストールします:

tar xvfz poweradmin-2.1.4.tgz  
mv poweradmin-2.1.4 /var/www/poweradmin  
touch /var/www/poweradmin/inc/config.inc.php  
chown -R www-data:www-data /var/www/poweradmin/

次に、ブラウザを開いて、ウェブベースの Poweradmin インストーラーを起動します (http://server1.example.com/poweradmin/install/index.php または http://192.168.0.100/poweradmin/install/index.php)。

言語を選択します (英語またはオランダ語):

次に、Go to step 3 ボタンをクリックして進みます:

次に、データベースの詳細を入力します。MySQL root ユーザーの詳細を入力することが重要です。先ほど作成した powerdns MySQL ユーザーではありません! また、Poweradmin ウェブインターフェースの admin ユーザーのパスワードも提供します (これは、ユーザー admin が後で Poweradmin にログインするために使用するパスワードです):

次のページでは、インストーラーが MySQL クエリを実行するように求めます。私たちはすでに第 3 章で似たようなことを行っているため (2 つの GRANT ステートメント)、問題ありません。Go to step 6 をクリックします:

Go to step 7

インストールは完了しました…

… ただし、セキュリティ上の理由から、インストールディレクトリを削除する必要があります:

rm -fr /var/www/poweradmin/install/

これで、http://server1.example.com/poweradmin または http://192.168.0.100/poweradmin にアクセスし、インストール中に作成したユーザー名 admin とパスワードでログインできます:

これが Poweradmin ウェブインターフェースの外観です:

ゾーンを作成するには、Add master zone に移動し、ドメイン名 (例: example.com) を入力します。www A レコード (“webserver”) とそのゾーンの MX レコード (“mailserver”) の IP アドレスをすでに入力できます。Create zone without applying records-template チェックボックスをオフのままにすると、Poweradmin はそのゾーンのために自動的にいくつかの NS、A (例: www) および MX レコードを作成します:

その後、List zones に移動します。新しいゾーンがそこに表示され、すでに 8 つのレコードがあります。編集アイコンをクリックして、これらの 8 つのレコードを表示します:

これらは、ゾーンを作成するときに Create zone without applying records-template チェックボックスをオフにしない限り、自動的に作成されるレコードです。これらを編集したり、レコードを追加または削除したりできます:

もちろん、すべてのレコードを手動で 1 つずつ作成することもできます - IP アドレスフィールドを空のままにし、Add master zone ページで Create zone without applying records-template チェックボックスをオンにしてください:

List zones ページでは、新しいゾーンに 1 つのレコード (SOA レコード) しかないことがわかります。編集アイコンをクリックします…

… そして Add record をクリックしてさらにレコードを追加します…

…, 例えば NS レコード…

… および A レコード (例: mydomain.com (Name フィールドは空のままにしてください!) と www.mydomain.com)…

… および MX レコード:

PTR レコードを作成するには、Add master zone ページに移動し、in-addr.arpa というゾーンを作成します (IP アドレスフィールドは空のままにし、Create zone without applying records-template チェックボックスをオンにします):

IP 1.2.3.4 から server1.example.com への PTR レコードを作成するには、List zones でレコードを作成し、Name フィールドに 4.3.2.1 (これは IP の逆順) を入力し、Content フィールドに server1.example.com を入力します:

レコードを作成したら、dig コマンドで確認できます (詳細については次を参照してください)

man dig

例えば、次のようにします:

dig @localhost mx example.com
server1:~# dig @localhost mx example.com  

; <> DiG 9.3.4 <> @localhost mx example.com  
; (1 server found)  
;; global options:  printcmd  
;; Got answer:  
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37939  
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1  
  
;; QUESTION SECTION:  
;example.com.                       IN      MX  
  
;; ANSWER SECTION:  
example.com.            86400   IN      MX      10 mail.example.com.  
  
;; ADDITIONAL SECTION:  
mail.example.com.       86400   IN      A       1.2.3.4  
  
;; Query time: 9 msec  
;; SERVER: 127.0.0.1#53(127.0.0.1)  
;; WHEN: Mon Jan 12 19:56:46 2009  
;; MSG SIZE  rcvd: 66  
  
server1:~#

5 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。