URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

MariaDB/PowerDNSをインストール

 PowerDNS Recursorに続いて、今度は権威DNSを置き換えるためにPowerDNS (Authoritative Server) をインストールします。

 ところで、PowerDNSはゾーン情報を格納するバックエンドに様々なものが使えます。
 今回は自分の慣れとかもあってMariaDBを使うことにしました。MariaDBもCentOS標準のものはバージョンが古いため、公式のパッケージを利用します。

 あらためて、CentOS 7.6を最小構成でインストールして"yum update"でパッケージの最新化までは同じです。
 CentOS標準のMariaDB関連パッケージが入っている場合は、削除しておきます。

# yum -y erase 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"があれば間に合いますが、後々のことも考えて開発ツールやバックアップツールもインストールしておきます。

# yum -y install MariaDB-{server,client,backup,devel,shared}

 インストール直後は設定ファイル"/etc/my.cnf.d/server.cnf"に何も設定されていない(コメントのみ)ため、必要に応じて記述します。
 動作だけならこのままでも動くので、今回は省略します。

 続いてサービスを起動し、お約束の初期設定"mysql_secure_installation"でrootパスワードの設定や不要なものを削除します。

# systemctl start mariadb.service
# systemctl enable mariadb.service
# mysql_secure_installation

 以上でMariaDBのインストールは完了です。
 PowerDNSはこのホストにインストールするつもりなので、ファイアウォールの変更はしません。

 次はPowerDNSのインストールです。
 Recursorと同様に"https://repo.powerdns.com/"を参考に公式のレポジトリからパッケージをインストールします。前述の通りバックエンドにはMariaDBを使うので、そのためのパッケージも追加します。

# yum -y install epel-release yum-plugin-priorities
# 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"としています。

# mysql -u root -p <<EOF
> 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"が設定されている環境だとパッケージのインストール前に設定変更しておくか別途ファイルを手に入れる必要があります。

# mysql -h 127.0.0.1 -u pdns -p powerdns < /usr/share/doc/pdns-backend-mysql-4.1.8/schema.mysql.sql

 設定ファイル"/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のユニットファイルを修正します。

# cp -p /usr/lib/systemd/system/pdns.service /etc/systemd/system/
# sed -i "s/^Type\=.*/Type=simple/g" /etc/systemd/system/pdns.service

 chrootで指定したパスが存在しない場合は作成します。

# mkdir -p /var/spool/pdns
# chown -R pdns:pdns /var/spool/pdns
# chmod 777 /var/spool/pdns

 あとはサービスの起動とファイアウォールのポート開放です。

# systemctl start pdns.service
# 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の導入もほぼ必須でしょう。
 次はそのあたりですね。