Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

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?

DNSAdvent Calendar 2024

Day 17

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

Last updated at Posted at 2024-12-17

この記事ではまず権威DNSの構築をしています。
キャッシュリゾルバの構築は18日目、PowerDNS Adminの設定は19日目をご覧ください。
(リンクは追記します。)

はじめに

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

PowerDNSとは

PowerDNSはGPLライセンスの下で公開されているDNSサーバーです。
そしてこれは、権威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

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar 🎅

Some calendars come with gifts and some gifts are drawn from all calendars 👀

Please tie the article to your calendar and let's enjoy Christmas together!

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?