手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 PowerDNS の基本設定 – 権威 DNS と MariaDB backend を構成する

関連する記事

Ubuntu 26.04 で PowerDNS Authoritative Server を使うと、ゾーン情報をデータベースで管理する権威 DNS サーバーを構成できます。

この記事では pdns-serverpdns-backend-mysql を使い、MariaDB backend、pdns.conf、API / Webserver、DNS 応答確認までを順に確認します。

PowerDNS Authoritative Server の位置づけ

PowerDNS には権威 DNS サーバーとして動作する Authoritative Server と、キャッシュ / 再帰問い合わせを担当する Recursor があります。この記事で扱うのは、自分が管理するゾーンを外部または内部へ応答する Authoritative Server です。

パッケージをインストールする

Authoritative Server 本体、MariaDB backend、運用確認に使うツールを入れます。MariaDB 側の準備は別記事の基本設定を済ませてから進めると切り分けが簡単です。

sudo apt update
sudo apt install -y pdns-server pdns-backend-mysql pdns-tools dnsutils

MariaDB backend を準備する

PowerDNS 用のデータベースとユーザーを作成します。パスワードは環境に合わせて変更し、pdns.conf に書く値と一致させます。

sudo mariadb <<'SQL'
CREATE DATABASE pdns CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'pdns'@'localhost' IDENTIFIED BY 'CHANGE_ME_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON pdns.* TO 'pdns'@'localhost';
FLUSH PRIVILEGES;
SQL

PowerDNS の schema はパッケージに含まれています。配置場所を確認し、対象データベースへ投入します。

dpkg -L pdns-backend-mysql | grep schema.mysql.sql
sudo mariadb pdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql

pdns.conf を設定する

/etc/powerdns/pdns.conf で backend、待ち受けアドレス、API、Webserver を設定します。外部に直接公開しない管理用 Webserver は、許可元を絞る前提で扱います。

sudo tee /etc/powerdns/pdns.conf >/dev/null <<'EOF'
launch=gmysql
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=pdns
gmysql-user=pdns
gmysql-password=CHANGE_ME_STRONG_PASSWORD
gmysql-dnssec=yes
local-address=127.0.0.1,::1,192.0.2.10,2001:db8::10
local-port=53
api=yes
api-key=CHANGE_ME_API_KEY
webserver=yes
webserver-address=127.0.0.1
webserver-port=8081
webserver-allow-from=127.0.0.1,192.0.2.0/24
EOF
sudo pdnsutil check-config

設定ファイルの権限を絞る

pdns.conf には DB パスワードや API key が入ります。サービスが読める範囲に絞り、不要な一般ユーザーから読めない状態にします。

sudo chown root:pdns /etc/powerdns/pdns.conf
sudo chmod 640 /etc/powerdns/pdns.conf
sudo systemctl restart pdns.service
systemctl status pdns.service --no-pager

ゾーンを作成して応答を確認する

最小構成のゾーンを作成し、SOA と A レコードが 127.0.0.1 宛ての問い合わせに応答することを確認します。

pdnsutil create-zone example.local ns1.example.local
pdnsutil add-record example.local ns1 A 192.0.2.10
pdnsutil add-record example.local www A 192.0.2.20
pdnsutil list-zone example.local
dig @127.0.0.1 SOA example.local
dig @127.0.0.1 A www.example.local

API とログを見る

API を有効にした場合は、管理元から疎通できることと、意図しない範囲へ公開していないことを確認します。サービスが起動しない場合は backend 接続、schema、設定ファイル権限を優先して見ます。

curl -H 'X-API-Key: CHANGE_ME_API_KEY' http://127.0.0.1:8081/api/v1/servers/localhost
journalctl -u pdns.service --since '1 hour ago' --no-pager
ss -lunpt | grep ':53 '

運用時に決めておくこと

PowerDNS は起動すれば終わりではありません。ゾーンの正本、DB バックアップ、DNSSEC の鍵管理、Authoritative Server と Recursor の分離、firewall の公開範囲を先に決めておくと運用が安定します。

まとめ

Ubuntu 26.04 で PowerDNS Authoritative Server を使う場合は、DNS の役割だけでなく MariaDB backend、設定ファイルの秘匿、API の公開範囲まで含めて設計します。まずローカル問い合わせでゾーン応答を確認し、その後に firewall と上位 DNS からの到達性を確認すると、問題箇所を分けて判断できます。

関連する記事
Ubuntu 26.04 PowerDNS の基本設定 – 権威 DNS と MariaDB backend を構成する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る