PowerDNS(pdns)は、C ++で記述され、GPLライセンスの下でリリースされたオープンソースのDNSサーバーです。これは、パフォーマンスが向上し、メモリ要件が低くなるように設計された、従来のDNSサーバーバインドの優れた代替手段になりました。 PowerDNSは、AuthoritativeServerとRecursorの2つの製品を提供します。 PowerDNS Authoritativeサーバーは、プレーンなバインドゾーンファイル、MySQL、PostgreSQL、SQLite3、LDAPなどのRDBMSなど、さまざまなバックエンドを介して構成できます。
このチュートリアルでは、MariaDBデータベースサーバーをバックエンドとして使用し、Poweradminを使用してDNS管理を容易にするPowerDNSAuthoritativeサーバーをインストールして構成する方法を説明します。
- CentOS7サーバー
- root権限
私たちが行うこと:
- EPELおよびRemiリポジトリをインストールする
- MariaDBのインストールと構成
- PowerDNSをインストールする
- Poweradminをインストールする
- Poweradminのインストール後
- サンプルゾーンの作成
まず、PowerDNSインストールの依存関係をインストールする必要があります。 EPELリポジトリとREMIforPHP7.2をインストールします。
次のコマンドを使用して、EPELおよびPHPRemiリポジトリをインストールします。
yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
これらのリポジトリがシステムに追加されたら、「yum-utils」パッケージをインストールします。
yum -y install yum-utils
そして、次のコマンドを使用してPHP7.2Remiリポジトリを有効にします。
yum-config-manager --enable remi-php72
PowerDNS Authoritativeサーバーは、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
また、データベースサーバーのrootパスワードを設定するように求められます。 「Y」と入力してルートパスワードを設定し、強力なパスワードを入力します。
Set root password? [Y/n] Y
New password:
Re-enter new password:
その他の場合は、「Y」を「yes」と入力するだけです。
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」という名前の新しいデータベースを作成し、パスワード「pdnspassword2018」を使用して「pdns」という名前の新しいユーザーにすべてのデータベース権限を付与します。
create database powerdns;
grant all privileges on powerdns.* to [email protected] 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インストール用のユーザーが作成されました。
次のコマンドを使用して、PowerDNSと必要なすべてのパッケージをインストールします。
yum -y install pdns pdns-backend-mysql bind-utils
PowerDNSパッケージをインストールした後、「/ 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サービスをファイアウォールに追加します。
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サーバーから応答を取得します。
このステップでは、「Poweradmin」と呼ばれるPowerDNSのDNS管理をインストールします。これはPHPをベースにしたWebアプリケーションであるため、アプリケーションを実行するにはPHPとWebサーバーをインストールする必要があります。
次のコマンドを使用して、httpdWebサーバーと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
インストール後、追加のPHPPearパッケージをインストールする必要があります。次のコマンドを実行します。
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
poweradmin圧縮ファイルを抽出し、名前を変更します。
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のインストール後の準備が整いました。
ウェブブラウザを開き、サーバーの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ブラウザに戻り、[手順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 = '[email protected]=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ダッシュボードが表示され、インストールが完了します。
この段階で、「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」のDNSレコードを確認してください。
dig A emma.io @10.9.9.10
また、ドメイン「emma.io」にはDNSサーバー「ns1.hakase-labs.io」のネームサーバーがあり、そのドメイン名の「A」は上部のサーバーIPアドレスの構成と一致していることが表示されます。 '10.9.9.11'。
最後に、CentOS7でのPowerDNSとPoweradminのインストールと構成が正常に完了しました。