前書き

PowerDNSは、多くのバックエンドと互換性のある、高度で高性能な信頼できるネームサーバーです。 PowerDNSは、BIND構成ファイルを使用して、MariaDB、MySQL、Oracle、PostgreSQL、および他の多くのデータベースから情報を読み取ることができます。 バックエンドは、任意の言語で簡単に作成できます。 この場合、MariaDBを使用してゾーンファイルレコードを保存します。

MariaDBは、リレーショナルデータベース管理システムであるMySQLのフォークです。 主要なオープンソースソフトウェアシステムの分岐点であるため、元の開発者が主導していることは注目に値します。 MariaDBは、MySQL APIおよびコマンドを使用した完全なドロップイン置換機能を保持しています。

このチュートリアルの最後に、任意の数のドメインのDNSをホストするために使用できる、稼働中のPowerDNSネームサーバーがあります。

前提条件

チュートリアルを開始する前に、これらの前提条件に従ってください。

液滴の要件

  • 512MB以上のドロップレット

  • Ubuntu 14.04 64ビット

PowerDNSは、パフォーマンスが高く、リソース使用量が少ないように設計されています。 中程度の量のゾーン/レコードでPowerDNSサーバーを実行するには、512MBのドロップレットで十分です。 このドロップレットは、Ubuntu 14.04 64ビットを実行します。

ルートアクセス

このチュートリアルの残りの部分では、* root *ユーザーアカウントまたはsudo特権を持つユーザーアカウントでサーバーに接続していることを前提としています。

別のアカウントから* root *シェルに入るには:

sudo su

ネームサーバーの登録、他のドメインのネームサーバーの設定

技術的なセットアップを完了する前または後にこれを行うことができますが、新しいネームサーバーが実際のDNS要求を処理できるようにするには、グルーレコードを使用して、ネームサーバードメインまたはサブドメインをレジストラーでネームサーバーとして登録する必要があります。 グルーレコードについては、以下にリンクするチュートリアルで説明しますが、レジストラでネームサーバーの登録/グルーレコードの作成のプロセスを調べることをお勧めします。

_ _
注: DNSサーバーを設定する場合、ドメイン名を正確に保つのに役立ちます。 ほとんどの場合、ネームサーバー自体で使用する3つのサブドメインを選択します。 このチュートリアルでは、* hostmaster.example-dns.com ns1.example-dns.com 、および ns2.example-dns.com *を使用します。

このネームサーバーをSOAとして使用するドメインも紹介します。 このチュートリアルでは、新しいPowerDNSネームサーバーに* example.com *のゾーンファイルを設定します。
_ _

このチュートリアルでは、次のドメイン名を例として使用します。

これらの3つのサブドメインには、PowerDNS DropletのIPアドレスを指すグルーレコードが必要です。

  • * hostmaster.example-dns.com *

  • * ns1.example-dns.com *

  • * ns2.example-dns.com *

  • 次に、* example.com *のネームサーバーを上記の3つのネームサーバーに設定する必要があります

ステップ1-アップデートのインストール

最新の更新プログラムがインストールされていることを確認することは常に良い考えです。

更新プログラムをインストールします。

apt-get update && apt-get upgrade -y

ステップ2-MariaDBをインストールする

最初に、MariaDBリポジトリのキーをインポートします。

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

次に、MariaDB APTリポジトリを追加します。

add-apt-repository 'deb http://ftp.kaist.ac.kr/mariadb/repo/5.5/ubuntu trusty main'

これで、次を使用してMariaDBパッケージと依存関係(主にライブラリ)をインストールできます。

apt-get -y install libaio1 libdbd-mysql-perl libdbi-perl libmariadbclient18 libmysqlclient18 libnet-daemon-perl libplrpc-perl mariadb-client-5.5 mariadb-client-core-5.5 mariadb-common mysql-common mariadb-server mariadb-server-5.5 mariadb-server-core-5.5

インストール中に、MariaDB * root *ユーザーのパスワードを設定するよう求められます。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/1.png [ルートデータベースのパスワードを入力]

データベースの* root *ユーザーの強力なパスワードを入力し、Enterキーを押してください。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/2.png [同じルートデータベースパスワードを入力]

新しいパスワードの確認を求められます。 パスワードをもう一度入力し、Enterキーを押してセットアッププロセスを完了します。

ステップ3-MariaDBの保護と構成

デフォルトでは、MariaDBはリモートクライアントからの匿名ユーザーとルートアクセスを許可します。 セキュアインストールユーティリティを実行して、これらの機能を無効にします。

この安全なインストールウィザードを実行します。

mysql_secure_installation

MariaDBのセットアップ中に作成したMariaDB * root *ユーザーパスワードで認証するように求められます。 次に、Enterキーを押して続行します。 エントリはに表示されます。

You already have a root password set, so you can safely answer **n**.

Change the root password? [Y/n]

この例では、ルートパスワードを変更しません。ただし、MariaDBのインストール時にパスワードを設定しなかった場合は、今がそれを行うのに適した時間です。 それ以外の場合は、Nを入力してEnterキーを押します。

Remove anonymous users? [Y/n]

匿名ユーザーを無効にすることをお勧めします。 ENTERを押して、デフォルトのYを受け入れます。

Disallow root login remotely? [Y/n]

rootは、リモートデータベースサーバーの管理に使用しないことをお勧めします。 ENTERを押して、デフォルトのYを受け入れます。

Remove test database and access to it? [Y/n]

MariaDBを試してみたい場合は、テストデータベースを保持できます。 この例では、削除することにしました。 ENTERを押して、デフォルトのYを受け入れます。

Reload privilege tables now? [Y/n]

ウィザード内で特権テーブルをリロードすると、手順が1つ減ります。 ENTERを押して、デフォルトのYを受け入れます。

次に、InnoDBログファイルのサイズを64MBに増やします。 これは、将来問題をデバッグする必要がある場合に役立ちます。

まず、MariaDBサービスを停止する必要があります。

service mysql stop

既存のログファイルをすべて削除します(MariaDBの新規インストールでない場合は、代わりにバックアップすることをお勧めします)。

rm -f /var/lib/mysql/ib_logfile*

nanoで構成ファイルを開きます。

nano /etc/mysql/my.cnf

Ctrlキーを押しながらWキーを押して、ファイルを検索します。 検索フィールドに入力し、Enterキーを押して続行します。 構成ファイルのInnoDB部分に移動します。 以下で強調表示されている行を追加する必要があります。

# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!



#
# * Security Features

Ctrlキーを押しながらXキーを押し、Yキーを押してファイルを保存し、Enterキーを押して上書きします。

最後に、MariaDBサービスを再度開始します。

service mysql start

スタートアップスクリプトが[OK]ステータスを返した場合、ログファイルのサイズは正常に更新されており、次のセクションに進む準備ができています。

ステップ4-MariaDBでPowerDNSデータベースとユーザーアカウントを作成する

このセクションおよび残りのチュートリアルでは、「powerdns」や「powerdns_user」などの推奨名を使用します。 独自のデータベース名とデータベースユーザー名を自由に置き換えて、更新された名前を必ず使用してください。

パスワードは間違いなく変更する必要があります。 強調表示されているテキストは、必ず独自の情報に置き換えてください。

_
注意: *; *で行を終了するまで、MySQLシェルはコマンドを処理しません。 テーブルコマンドが複数行を使用していることに気付くでしょう。これは正常です。
_

最初に、MariaDB * root *ユーザーで認証します。

mysql -u root -p
  • root *データベースパスワードを入力し、Enterキーを押してデータベースサーバーにアクセスします。

データベースを作成します。 任意の名前を使用できますが、powerdnを使用します。

CREATE DATABASE powerdns;

「powerdns_user」という新しいユーザーを作成し、データベースへのアクセスを許可します。 一意のパスワードに置き換える必要があります。

GRANT ALL ON powerdns.* TO 'powerdns_user'@'localhost' IDENTIFIED BY '';

特権をフラッシュして、ユーザー設定を更新します。

FLUSH PRIVILEGES;

新しいデータベースを使用します。

USE powerdns;

次に、PowerDNSがゾーンファイルエントリを保存するために使用できるデータベースにいくつかのテーブルを追加します。

  • domains *テーブルを作成します。

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);
  • records *テーブルを作成します。

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);
  • supermasters *テーブルを作成します。

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

これで、MySQLシェルを終了できます。

quit;

ステップ5-PowerDNSをインストールする

前述のように、MariaDBはMySQLのドロップイン代替品です。 そこで、メインのPowerDNSモジュールと、対応するMySQLバックエンドモジュールをインストールします。

PowerDNSをインストールします。

apt-get install -y pdns-server pdns-backend-mysql

_ _
*注意:*依存関係エラーに関するプロンプトが表示された場合、次のコマンドは競合するパッケージを削除し、PowerDNSパッケージのインストールを強制します。

apt-get -f purge -y mysql-client

_ _

MySQLバックエンドを構成するように求められます。 このプロセスはすぐに手動で実行するため、矢印キーを使用して* <No> *を選択し、Enterキーを押してインストールを完了します。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/3.png [<No>を選択]

ステップ6-PowerDNSを構成する

新しいデータベースを使用するには、PowerDNSを構成する必要があります。

まず、既存の構成ファイルを削除します。

rm /etc/powerdns/pdns.d/*

これで、MariaDB構成ファイルを作成できます。

nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf

次のデータをファイルに入力します。 、および特に、独自のデータベース設定を忘れずに追加してください。

# MySQL Configuration file

launch=gmysql

gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=powerdns_user
gmysql-password=

PowerDNSを再起動して変更を適用します。

service pdns restart

ステップ7-PowerDNSをテストする

これらの手順は、PowerDNSがインストールされ、データベースに接続できることを確認するための適切な健全性チェックです。 次のテストに合格しない場合、データベース構成に何らかの問題があります。 問題を解決するには、手順4と6を繰り返します。

PowerDNSがリッスンしているかどうかを確認します。

netstat -tap | grep pdns

次のような出力が表示されます。

[email protected]:~# netstat -tap | grep pdns
tcp        0      0 *:domain                *:*                     LISTEN      5525/pdns_server-in

PowerDNSが正しく応答するかどうかを確認します。

dig @127.0.0.1

次のような出力が表示されます。

[email protected]:~# dig @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> @127.0.0.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27248
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;.              IN  NS

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 02 18:58:20 EST 2014
;; MSG SIZE  rcvd: 29

すべてチェックアウトしましたか? すばらしいです! 続けましょう。

ステップ8-Poweradminのインストール

Poweradminは、PowerDNS用のWebベースのDNS管理ツールです。 すべてのタイプのゾーンを完全にサポートしています(http://downloads.powerdns.com/documentation/html/master.html[master]、http://downloads.powerdns.com/documentation/html/replication.html#native-レプリケーション[ネイティブ]、およびhttp://downloads.powerdns.com/documentation/html/slave.html [スレーブ])。 スレーブゾーンの自動プロビジョニングの完全なスーパーマスターサポート、IPv6の完全サポート、および複数の言語があります。 詳細については、http://www.poweradmin.org/features.html [機能リスト]をご覧ください。

ApacheとPoweradminに必要な依存関係をインストールします。

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

必要なPEARモジュールをインストールします。

pear install DB
pear install pear/MDB2#mysql

Mcryptを有効にする:

php5enmod mcrypt

Apacheを再起動して、変更を適用します。

service apache2 restart

ホームディレクトリに移動します。

cd ~

圧縮されたPoweradminファイルをダウンロードします。

wget https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz

アーカイブを抽出します。

tar xvzf poweradmin-2.1.6.tgz

`+ poweradmin +`ディレクトリをApache Webディレクトリに移動します。

mv poweradmin-2.1.6 /var/www/html/poweradmin

構成ファイルを作成します。

touch /var/www/html/poweradmin/inc/config.inc.php

Apacheユーザーにディレクトリの所有権を与えます。

chown -R www-data:www-data /var/www/html/poweradmin/

ステップ9-Poweradminの構成

Poweradminのインストールを完了するには、Webベースの構成ウィザードを使用します。

Webブラウザを開き、以下のURLにアクセスして、独自のIPアドレスまたはサーバーホスト名を置き換えます。

  • + http:/// poweradmin / install / +

image:https://assets.digitalocean.com/articles/powerdns_mariadb/4.png [お好みの言語を選択]

希望の言語を選択し、[ステップ2へ]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/5.png [この情報を読む]

*ステップ2 *ページには、特にPoweradminの複数のインストールについて、いくつかの貴重な情報があります。 この情報は、このチュートリアルには直接適用されません。 ページを読み終わったら、[ステップ3に進む]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/6.png [以下で説明するようにデータベース接続情報を入力し、新しいパスワードを作成します]

*インストール手順3 *ページで、次の情報を入力する必要があります。

  • ユーザー名:、またはMariaDB用に作成したユーザー名

  • * Password *:、以前に作成したデータベースパスワード

  • データベースの種類:ドロップダウンメニューから* MySQL *を選択します。 MariaDBはMySQLのように動作することを忘れないでください

  • ホスト名:ローカルホストから接続しているため

  • * DBポート*:;デフォルトのままにする

  • データベース:、または以前に作成したデータベース名

  • * Poweradmin管理者パスワード*:後でPoweradminコントロールパネルにログインするために使用する一意のパスワードを設定してください。ユーザー名は* admin *になります

[ステップ4に進む]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/7.png [以下で説明するようにデータベースとネームサーバーの詳細を入力してください]

*インストール手順4 *ページで、利便性とセキュリティを選択できます。 同じデータベース設定を再利用するか、Poweradmin用の新しい低特権データベースユーザーを作成できます。 この例は、同じデータベースユーザー設定を示しています。 ネームサーバードメインも選択します。

  • ユーザー名:新規または既存のデータベースユーザーを使用します。この場合、「+ powerdns_user +」を使用しています

  • パスワード:新しいパスワードを設定するか、既存のデータベースパスワードを使用します

  • * Hostmaster *などのデフォルトのホストマスターを設定します

  • プライマリネームサーバー:**などのプライマリネームサーバーを設定します

  • セカンダリネームサーバー:**などのセカンダリネームサーバーを設定します

[ステップ5に進む]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/8.png [新しいユーザーを作成した場合は、GRANTで始まるページに表示されるコマンドで新しいデータベースユーザーを追加します]

データベース情報が正しいことを確認してください。 新しいユーザーとパスワードを作成することを選択した場合、MariaDBデータベースにログインし、GRANTで始まる画面に表示されるコードブロックをコピーアンドペーストして新しいユーザーを追加する必要があります。 次に、[ステップ6に進む]ボタンをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/9.png [インストーラーはファイル “../inc/config.inc.php”に書き込むことができました。 . .]

*インストーラはファイル「../inc/config.inc.php」…*に書き込むことができたようなメッセージが表示されるはずです。 構成ファイルへの書き込みに問題がある場合は、インストールプロセス中に手順を逃したことを意味します。

このステップが失敗した場合、サーバーに戻ってファイルを作成します。

touch /var/www/html/poweradmin/inc/config.inc.php

次に、ページを更新してインストールプロセスを再開します。

それ以外の場合は、[ステップ7に進む]ボタンをクリックしてインストールを完了します。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/10.png [これで設定が完了しました。 . .]

ユーザー名* admin *とPoweradminコントロールパネルのパスワードが与えられます。

Poweradminの構成はこれで完了です。

クリーンアップするには、サーバーに戻ってインストールディレクトリを削除します。 Poweradminでは、ログインする前にこれを行う必要があります。

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

Poweradmin設定の変更

インストールの完了後にPoweradmin設定を変更する必要がある場合は、このファイルを編集します。

nano /var/www/html/poweradmin/inc/config.inc.php

ここで、Poweradminのデータベース接続設定およびその他の構成設定を更新できます。

ステップ10-最初のDNSレコードを作成する

Poweradminコントロールパネルにアクセスします。

  • + http:/// poweradmin / +

image:https://assets.digitalocean.com/articles/powerdns_mariadb/11.png [Poweradminログインページ]

構成中にセットアップした資格情報を使用して、Poweradminコントロールパネルにログインします。 ユーザー名は* admin で、パスワードは*インストール手順3 *の Poweradmin管理者パスワード*です。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/12.png [Poweradminホームページ]

[マスターゾーンの追加]リンクをクリックします。

[ゾーン名]フィールドにドメイン名を入力します。 このドメインは、ゾーンファイルをホストするドメインでなければなりません。 他のすべての設定はデフォルトのエントリのままにしておくことができます。 [*ゾーンの追加]ボタンをクリックします。

トップメニューから[*ゾーンのリスト]リンクをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/13.png [マスターゾーンの追加ページ]

ゾーンエントリの左側にある小さな鉛筆のようなゾーンファイルの編集ボタンをクリックします。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/14.png [ゾーンのリストページ]

ドメインのDNSレコードを追加します。

image:https://assets.digitalocean.com/articles/powerdns_mariadb/15.png [レコードページを追加]

  • * Name *フィールドにサブドメインを追加するか、プライマリドメイン用に空白のままにすることができます。

  • ドロップダウンメニューからレコードの*タイプ*を選択します。

  • * Content *フィールドにIPアドレス、ドメイン名、またはその他のエントリを追加します。

  • 必要に応じて* Priority *を設定します。

  • 秒単位で* TTL *を設定します。

[レコードの追加]ボタンをクリックします。

レコードを追加するか、[*ゾーンの一覧]ページに戻り、ドメインの編集ボタンをクリックして、そのドメインの現在のすべてのレコードを表示できます。

このレコードが実際に機能するためには、次のことを行う必要があることに注意してください。

  • グルーレコードにネームサーバードメインを登録する

  • このドメインのネームサーバーを新しいPowerDNSネームサーバードメインに設定します

  • 伝播を待つ

ただし、すぐにローカルでレコードが正しいことを確認できます。

ステップ11-DNSレコードをテストする

注:独自のドメインまたはサブドメインレコードで置き換えます。

サーバーで、ドメインのレコードを検索します。

dig  A @127.0.0.1

次のような出力が表示されます。

[email protected]:~# dig example.com A @127.0.0.1

; <<>> DiG 9.9.5-3-Ubuntu <<>> example.com A @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20517
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;example.com.           IN  A

;; ANSWER SECTION:


;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Nov 02 19:14:48 EST 2014
;; MSG SIZE  rcvd: 56

複数のゾーンエントリを追加した場合は、他のすべてのレコードも確認できます。

これらが正しい場合、これはこのネームサーバーに正しい情報があることを意味します!

ただし、ネームサーバードメインが登録されている、このドメインが新しいネームサーバーをSOAとして使用している、または変更がまだグローバルに伝播しているという意味ではありません。

結論

MariaDBバックエンドでPowerDNSサーバーをセットアップします。 Poweradminコントロールパネルを設定して、バックエンドを管理します。 最初のDNSゾーンを作成し、そのゾーンのAレコードを作成しました。

ここからどこにいきますか

まだ登録していない場合は、ネームサーバーを登録する必要があります。

また、これらのネームサーバーを、DNSをホストするドメインのSOAとして選択する必要があります。

ドメインの構成に支援が必要な場合は、以下のチュートリアルを使用して開始してください。 また、レジストラからの指示を確認する必要があります。