| Works
MariaDB/PowerDNSをインストール
PowerDNS Recursorに続いて、今度は権威DNSを置き換えるためにPowerDNS (Authoritative Server) をインストールします。
ところで、PowerDNSはゾーン情報を格納するバックエンドに様々なものが使えます。
今回は自分の慣れとかもあってMariaDBを使うことにしました。MariaDBもCentOS標準のものはバージョンが古いため、公式のパッケージを利用します。
あらためて、CentOS 7.6を最小構成でインストールして"yum update"でパッケージの最新化までは同じです。
CentOS標準のMariaDB関連パッケージが入っている場合は、削除しておきます。
MariaDB Repository Configuration ToolからCentOS 7用のレポジトリ情報を確認し、その内容で"/etc/yum.repo.d/MariaDB.repo"ファイルを作成します。
# MariaDB 10.3 CentOS repository list - created 2019-04-16 01:24 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
MariaDBをインストールします。
"server"と"client"があれば間に合いますが、後々のことも考えて開発ツールやバックアップツールもインストールしておきます。
インストール直後は設定ファイル"/etc/my.cnf.d/server.cnf"に何も設定されていない(コメントのみ)ため、必要に応じて記述します。
動作だけならこのままでも動くので、今回は省略します。
続いてサービスを起動し、お約束の初期設定"mysql_secure_installation"でrootパスワードの設定や不要なものを削除します。
# systemctl enable mariadb.service
# mysql_secure_installation
以上でMariaDBのインストールは完了です。
PowerDNSはこのホストにインストールするつもりなので、ファイアウォールの変更はしません。
次はPowerDNSのインストールです。
Recursorと同様に"https://repo.powerdns.com/"を参考に公式のレポジトリからパッケージをインストールします。前述の通りバックエンドにはMariaDBを使うので、そのためのパッケージも追加します。
# curl -o /etc/yum.repos.d/powerdns-auth-41.repo https://repo.powerdns.com/repo-files/centos-auth-41.repo
# yum -y install pdns pdns-backend-mysql
MariaDBにPowerDNS用のデータベースとユーザーを作成します。
ここではデータベース名"powerdns"、ユーザー名"pdns"、パスワード"password"としています。
> CREATE DATABASE powerdns CHARACTER SET utf8;
> CREATE USER 'pdns'@'127.0.0.1' IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON powerdns.* TO 'pdns'@'127.0.0.1';
> EOF
データベースをPowerDNS用に初期化します。
この時に使うSQLファイルは"/usr/share/doc/pdns-backend-mysql-<version>"に配置されていますが、"yum.conf"で"tsflags=nodocs"が設定されている環境だとパッケージのインストール前に設定変更しておくか別途ファイルを手に入れる必要があります。
設定ファイル"/etc/pdns/pdns.conf"に接続するデータベースの情報を記述します。他にchroot、ネットワークの制限、WEBサーバ、Master/Slaveゾーンの有効/無効、等々を環境に合わせて設定します。
daemon=no
guardian=no
setgid=pdns
setuid=pdns
chroot=/var/spool/pdns
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=pdns
gmysql-password=password
gmysql-dbname=powerdns
local-address=0.0.0.0
local-ipv6=0::0
webserver=yes
webserver-address=0.0.0.0
webserver-allow-from=0.0.0.0/0
api=yes
api-key=secret
master=yes
slave=no
disable-axfr=no
allow-axfr-ips=0.0.0.0/0
とりあえずここでは上記のようにしました。
chrootを有効にしたので、Recursorと同様にsystemdのユニットファイルを修正します。
# sed -i "s/^Type\=.*/Type=simple/g" /etc/systemd/system/pdns.service
chrootで指定したパスが存在しない場合は作成します。
# chown -R pdns:pdns /var/spool/pdns
# chmod 777 /var/spool/pdns
あとはサービスの起動とファイアウォールのポート開放です。
# systemctl enable pdns.service
# firewall-cmd --permanent --add-service=dns --zone=public
# firewall-cmd --permanent --add-port=8081/tcp --zone=public
# firewall-cmd --reload
以上でPowerDNSのインストールは完了です。
今回の設定では、この時点でブラウザから"http://<IPアドレス>:8081/"へアクセスすると情報が表示されます。
この後、権威DNSとして使うためには当然ですがゾーンやレコードの情報を入れていく必要があります。
また、CLIである程度の操作はできるとはいえ、管理性を良くするためにWeb UIの導入もほぼ必須でしょう。
次はそのあたりですね。