0
0

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 18

PowerDNSとPowerDNS Adminで内部DNSを整備した話〜フルリゾルバ編〜

Last updated at Posted at 2024-12-19

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

権威DNS: https://qiita.com/yuito_it_/items/3e74cf14ca0b2bc1e434
PowerDNS Admin: https://qiita.com/yuito_it_/items/d868a64c20035359a6df

はじめに

今回は内部DNSを立ててローカルIPに対してドメイン名でアクセスできるようにしていきます。
フルリゾルバは全てのドメインのデータを返すことのできるDNSサーバーです。

これを構築すると、内部の権威DNSも使えますし、名前解決が早くなるかもしれません。

PowerDNSとは

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

環境

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-recursor

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

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

設定ファイルを編集する

設定ファイルは/etc/powerdns/recursor.confにあります。

それぞれ以下の行を探して編集してください。

allow-from=172.16.0.0/16 # どこからのリクエストを受け入れるか(例ではプライベートIPのみ)
forward-zones= example.com=127.0.0.1:5300 # 特定のドメインに関するリクエストを指定のDNSサーバーに転送する。詳しくは前の記事を参照
forward-zones-recurse=.=1.1.1.1 # 再起リクエスト先。キャッシュになかったり、forward-zonesに指定されていないドメインについての問い合わせ先
local-address=172.16.100.180,127.0.0.1 # 自分のIP。v6がある場合にはそれも。

権威DNSの設定を変更

同じサーバーで前の記事のように権威DNSを構築している場合、ポートを変更する必要があります。
今回は5300に変更しました。

DNSSEC

内部の権威DNSを使用する場合、DNSSECの関係でエラーが発生することがあります。
これを解決する方法は二つあります。

  1. 全てのDNSSECを無効化する
  2. 特定のドメインのみDNSSECを無効化する
  3. 権威DNS鯖をDNSSECに対応させる

あんまり数が多いのであれば、1を選んでもいいかと思います。
今回はそこまで数はないことと、DNSSECに権威DNS側で対応させる方法がいまいちわからなかったので、2番をやっていこうと思います。

ネガティブトラストアンカー(RFC7646)を設定していきます。1
/etc/powerdns/recursor.luaをいじればいいらしいので、以下の通り追記。

recursor.lua
+ addNTA('example.com.', "The LABO Use Only(ここに理由)")

さて、これで完了です。

起動してテスト

さて、起動してみましょう。
53番ポートで競合しているsystemd-resolvedも停止します。

sudo systemctl disable --now systemd-resolved
sudo systemctl restart pdns # 権威サーバーもある場合
sudo systemctl enable --now pdns-recursor

それでは、テストしてみましょう。

$ dig google.com @127.0.0.1

# 前略
;; ANSWER SECTION:
google.com.  71 IN A <IP>
# 後略

# 権威サーバーもある場合はこっちも
$ dig exsample.com @127.0.0.1

# 前略
;; ANSWER SECTION:
exsample.com.  71 IN A <権威サーバーで設定したIP>
# 後略

こうなればOKです。

次回はPowerDNS Adminという管理のWebアプリをデプロイしていきます。

  1. https://doc.powerdns.com/recursor/dnssec.html#negative-trust-anchors

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?