PowerDNSとPowerDNS-AdminでGUIで操作できるいい感じの内部用DNSサーバーを建てる
環境
Ubuntu 20.04.5 LTS
前準備
systemd-resolvedが53番ポートをListenするのをやめさせる
今回はDNSサーバーを53番ポートで立てたいのですが、Ubuntuの場合53番はデフォルトでは既に使用されているため、競合が発生しそのままサーバーを立ててれません
/etc/systemd/resolved.conf
のDNSStubListener
をデフォルトのyes
からno
に変えてあげることで127.0.0.53:53をLISTENさせるのをやめさせることができます。
ですが、これを無効化しても全アプリケーションは127.0.0.53:53を見に行くままなのでもちろん名前解決ができなくなります。
なのでnetplanに書いたDNSサーバーに直でアクセスしてもらうために下のようなコマンドを打ち、シンボリックリンクを貼ってnetplanに書いた情報を見に行ってもらいます
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
docker-compose.yamlを書く
services:
powerdns-auth:
image: powerdns/pdns-auth-47:4.7.3
container_name: powerdns_auth
environment:
- PDNS_AUTH_API_KEY=適当に生成したキー
ports:
- "53:53"
- "53:53/udp"
volumes:
- type: bind
source: pdns-auth-data/
target: /var/lib/powerdns/
restart: always
powerdns-admin:
image: powerdnsadmin/pda-legacy:v0.3.0
container_name: powerdns_admin
ports:
- "9191:80"
environment:
- SECRET_KEY=上記のキーと同じもの
volumes:
- type: bind
source: pda-data/
target: /data
restart: always
これをdocker-compose up -d
すれば完成です。サーバアドレス:9191にブラウザでアクセスすればPowerDNS-Adminにアクセスできます
docker-composeの例示、詳細のリンク
PowerDNSをDockerで扱う方法がDocker-README.mdに、docker-compose.yamlファイルにdocker-composeでの例示があります
PowerDNS-AdminでのDockerでの使い方がReadme.mdに、docker-compose.yamlファイルにdocker-composeでの例示があります