2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerDNSとPowerDNS Adminで内部DNSを整備した話〜権威DNS編〜

Last updated at Posted at 2024-12-17

この記事ではまず権威DNSの構築をしています。
フルリゾルバの構築は18日目、PowerDNS Adminの設定は19日目をご覧ください。

フルリゾルバの記事: https://qiita.com/yuito_it_/items/1b8afe0889c65e2fb478
PowerDNS Adminの記事: https://qiita.com/yuito_it_/items/d868a64c20035359a6df

はじめに

今回は内部DNSを立ててローカルIPに対してドメイン名でアクセスできるようにしていきます。
権威DNSというのは、一つもしくは複数のドメインの情報を管理する末端のDNSです。

PowerDNSとは

PowerDNSはGPLライセンスの下で公開されているDNSサーバーです。
そしてこれは、権威DNSサーバーもフルリゾルバサーバーも構築できます。
今回はこれを用いて、まずは権威DNSを作成していきます。

なぜBINDじゃないの?

BINDはもちろん有名なのですが、とにかく脆弱性が多いということで、却下になりました。

環境

PowerDNSはDBでレコードを管理しています。
MySQLやPostgresSQLなどさまざま対応していますが、今回はPostgresSQLを使用していきます。

cat /etc/os-release

PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble

PowerDNSをインストール

普通にaptでインストールします。

sudo apt install pdns-server pdns-tools

しかし、最近のOSは53番ポートをsystemd-resolvedが使用しているため、今は起動に失敗した皆のエラーが発生します。
無視して構いません。

systemd-resolvedを止めればいいってものでもなくて、これを止めるとaptコマンドが通らなくなるので、最後に調整します。

DBの構築

まず、PostgresSQLとPDNSのPostgresSQLのライブラリをインストールします。

sudo apt-get install pdns-backend-pgsql postgresql

次に、PostgresSQLのユーザーを作成します。

sudo -u postgres createuser -P -s -e pdns

よくわかりませんが、パスワードがないとPDNS側でエラーが起こりました。

最後にスキーマを流し込みます。
/usr/share/pdns-backend-pgsql/schema/schema.pgsql.sqlにスキーマがあるようです。

sudo -u pdns createdb pdns
sudo -u pdns sh -c "psql -U pdns -d pdns -a -f /usr/share/pdns-backend-pgsql/schema/schema.pgsql.sql"

PDNSの設定

では、PowerDNSの設定をしていきましょう。
/etc/powerdns/pdns.confの設定ファイルを変更していきます。

pdns.conf
#################################
# launch        Which backends to launch and order to query them in
#
# launch=
launch=gpgsql
gpgsql-host=/run/postgresql
gpgsql-host=127.0.0.1
gpgsql-port=5432
gpgsql-dbname=pdns
gpgsql-user=pdns
gpgsql-password="password"

該当のコメントアウトの下に、追記しました。

いざ、起動!!!

というわけで、起動してみましょう。

まず、先ほども話した通り、最近のOSはローカルホストにリゾルバがあるようなので、そいつを止めます。

sudo systemctl stop systemd-resolved

次に、pdnsサービスを起動します。

sudo systemctl start pdns

ついでに自動起動する方法も

自動起動するには、systemctlに登録する必要があります。

sudo systemctl enable pdns
# ついでに邪魔なやつを止めておく
sudo systemctl disable systemd-resolved

テスト

チュートリアル通りにちょっとテスト...

sudo -u pdns pdnsutil create-zone example.com ns1.example.com
sudo -u pdns pdnsutil add-record example.com '' MX '25 mail.example.com'
sudo -u pdns pdnsutil add-record example.com. www A 192.0.2.1

これは、exsample.comというゾーンを作成、MXを指定する。
その後に、wwwを指定しています。

dig +short <www.example.com> @127.0.0.1
# 192.0.2.1
dig +short example.com MX @127.0.0.1
# 25 mail.example.com

しっかり返ってくることがわかればOKです。

参考文献

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?