内部ツール系サーバーを構築するに当たり
内部DNSサーバーにはBindでは無くPowerDNSを使用していきます。
PowerDNSを使うことにしたのは単にGUIツールが存在しており
ファイルをいじって設定する手間が省けるな~とおもたっからですw
1.Dockerイメージを作成する
管理するドメインは大した量ではないのでDBにはSqliteをチョイス
管理GUIはSqliteに対応した物が無いため、API駆動のPowerDNS Adminを選んでみました。
PowerDNS + SqliteのDockerイメージは見つかったものの、
PowerDNS AdminのDockerイメージは見つからないし・・・・
そもそもこれぐらいならひとまとめにしてもいいじゃない!
ってことでPowerDNS + Sqliteをベースに自分で作ってみました。
[github]
PowerDNS Adminが80番ポートを使用するため、
PowerDNS標準のWebサーバーが8080番ポートに変更になっています。
また、内部運用するに当たり「DNSフォワーダ」の設定が追加されたので
管理外ドメインの問い合わせを外部にフォーワードしてくれます。
2.Dockerコンテナを起動する
$ git clone https://github.com/gittrname/powerdns-sqlite3-gui.git $ docker build -t powerdns-sqlite3-gui powerdns-sqlite3-gui $ docker run -p 53:53/tcp -p 53:53/udp -p 80:80 powerdns-sqlite3-gui
起動したらブラウザでGUIにアクセスしまずは管理用アカウントを新規に作成してください。
作成したアカウントでログインしたらドメインを追加しレコードの設定を行います。
digコマンドで動作の確認ができればDNSサーバーの構築は完了です。
$ dig www.ranran.mydns.jp @[DNSサーバーのIP] ; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.ranran.mydns.jp @[DNSサーバーのIP] ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35567 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1680 ;; QUESTION SECTION: ;www.ranran.mydns.jp. IN A ;; ANSWER SECTION: www.ranran.mydns.jp. 3600 IN A [対象サーバーのIP] ;; Query time: 43 msec ;; SERVER: 192.168.11.102#53(192.168.11.102) ;; WHEN: Thu Oct 27 23:59:11 JST 2016 ;; MSG SIZE rcvd: 64