PowerDNSの設定
仮想サーバーの名前管理が面倒になってきたため、データベースでレコードを管理できるツールとして、PowerDNSを導入する。
- 問題
- sambaでのAD構成はBINDのみを想定している。BINDをSLAVEで利用して対応可能?
- BINDの機能にあるViewについては、実装していない。dnsdistで対応可能?
ここでは、データ管理にMySQL(MariaDB)の利用を前提とする。MySQLサーバーは既にセットアップ済とする。
MySQLにDB、ユーザーを作成する。「MySQLのDB・ユーザー作成」を参照のこと。
PowerDNSのインストール
必要なパッケージをインストールする。
apt update;apt install pdns-server pdns-backend-mysql
設定ファイルを変更する。
vi /etc/powerdns/pdns.conf
setuid=pdns
setgid=pdns
launch=gmysql
gmysql-host=localhost
gmysql-user=[PowerDNS用DBユーザー]
gmysql-dbname=[PowerDNS用DB]
gmysql-password=[PowerDNS用DBユーザーパスワード]
スキーマを作成する。
mysql [PowerDNS用DB] < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
レコード登録用SQLファイルを作成する。
vi insert.sql
INSERT INTO domains (name, type) values ('example.com', 'NATIVE');
INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'example.com','localhost 管理者メールアドレス 1','SOA',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'example.com','ネームサーバー名','NS',86400,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'www.example.com','192.0.0.10','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'mail.example.com','192.0.0.11','A',120,NULL);
INSERT INTO records (domain_id, name, content, type,ttl,prio) VALUES (1,'example.com','mail.example.com','MX',120,25);
登録する。
mysql [PowerDNS用DB] < insert.sql
PowerDNSを再起動する。
service pdns restart
既にBINDの運用実績がある場合には、設定ファイルからレコード登録用のSQLファイルを作成できる。
zone2sql --named-conf=/etc/bind/named.conf --gmysql > /tmp/zone.sql
注意点
- PowerSQLはviewに対応していないため、必要なviewの1つを選択し、viewの記載は削除する。
- named.conf内の各パスは変換環境に合わせて変更する。
PowerDNSをHA構成に
更にもう一台のマシンを用意し、マスタースレーブ構成にする。
apt update;apt install pdns-server pdns-backend-mysql
上と同様(データベースへの接続まで)にPowerDNSをセットアップする。
マスター側
以下を追記
vi /etc/powerdns/pdns.conf
allow-axfr-ips=スレーブ側のIPアドレス/32
master=yes
スレーブ側
vi /etc/powerdns/pdns.conf
slave=yes
マスター・スレーブの双方のホストファイルに以下の記載を追加する。
vi /etc/hosts
マスター側IPアドレス マスターFQDN マスター名
スレーブ側IPアドレス スレーブFQDN スレーブ名
双方のPowerDNSを再起動する。
service pdns restart
コマンドオペレーションでのレコードの登録
PowerDNSを選択したのは、WebUI(BINDにもWebUIはあるようだが)とDBでの感知ができるからであるが、psutilで様々なデータ操作が可能である。
ZONEの追加
pdnsutil create-zone example.com supermaster.example.com
Aレコードを追加
pdnsutil add-record example.com supermaster A 10.0.0.1 pdnsutil add-record example.com ns1 A 10.0.0.2 pdnsutil add-record example.com ns2 A 10.0.0.3
NSレコードの登録
pdnsutil add-record example.com @ NS ns1.example.com pdnsutil add-record example.com @ NS ns2.example.com
ゾーンをネイティブ ゾーンからマスター ゾーンに変更
pdnsutil set-kind example.com master
ゾーンがマスターであることを確認
pdnsutil show-zone example.com