../

PowerDNSとPowerDNS-AdminでGUIで操作できるいい感じの内部用DNSサーバーを建てる

環境

Ubuntu 20.04.5 LTS

前準備

systemd-resolvedが53番ポートをListenするのをやめさせる

今回はDNSサーバーを53番ポートで立てたいのですが、Ubuntuの場合53番はデフォルトでは既に使用されているため、競合が発生しそのままサーバーを立ててれません

/etc/systemd/resolved.confDNSStubListenerをデフォルトの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での例示があります

参考