目次
背景
この記事で書いたように、私は過去にchrootでbindを構築しました。 しかし、アップデートやbindを動かすサーバーの変更などを考えた場合現状は相当面倒であることに気づきました。 以上のことから、現状のコンフィグを使ってbindをdockerで動かすことを目標としています。
下地作り
私は基本的にユーザーのホームディレクトリ直下に docker というディレクトリを作って、そこに全部 docker で動かすものをおいています。 以下に記述することはそのための準備です。
ディレクトリ作成
docker 直下に bind9 というディレクトリを作成します。
cd ~/docker
mkdir bind9
コンフィグの移植
/chroot/named にすべてのファイルがあるので作成したディレクトリに全部ぶち込みます。
mv ~/docker/bind9/data
sudo cp -r /chroot/named/etc/* ~/docker/bind9/data/
コンフィグの編集
ディレクトリ構成が若干変わりますのでコンフィグを少し編集します。
~/docker/bind9/data/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.internal-zones";
include "/etc/bind/named.conf.external-zones";
~/docker/bind9/data/named.conf.options
options {
directory "/var/cache/bind";
pid-file "/var/run/named.pid";
version "I won't tell you my version.";
statistics-file "/var/run/named.stats";
recursion no;
allow-query { any; };
};
~/docker/bind9/data/named.conf.internal-zones
view "internal" {
match-clients {
localhost;
};
allow-query {
localhost;
};
include "/etc/bind/named.conf.default-zones";
};
docker-compose.ymlの作成
以下のようなコンフィグを作成しました。
version: '2'
services:
bind9:
image: ubuntu/bind9:latest
ports:
- "53:53/udp"
environment:
- TZ=Asia/Tokyo
restart: always
volumes:
- ./data/named.conf:/etc/bind/named.conf
- ./data/named.conf.options:/etc/bind/named.conf.options
- ./data/named.conf.internal-zones:/etc/bind/named.conf.internal-zones
- ./data/named.conf.external-zones:/etc/bind/named.conf.external-zones
- ./data/Kkusshie.com.+XXX+YYYYY.private:/etc/bind/Kkusshie.com.+XXX+YYYYY.private
- ./data/Kkusshie.com.+XXX+YYYYY.key:/etc/bind/Kkusshie.com.+XXX+YYYYY.key
- ./data/namedb:/var/cache/bind
こいつ楽をしたなと思ったあなた。流石です。ミスターつよつよですね!
動作確認
いつもどおり所定のディレクトリで以下のコマンドで起こします。
sudo docker-compose up -d
digコマンドで動作に問題がないか確認します。
dig @ns.kusshie.com blog.kusshie.com
; <<>> DiG 9.16.1-Ubuntu <<>> @ns.kusshie.com blog.kusshie.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56868
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: ac64c05f4fe0595901000000620bb8daa26daf4ab0bb9b9a (good)
;; QUESTION SECTION:
;blog.kusshie.com. IN A
;; ANSWER SECTION:
blog.kusshie.com. 300 IN A 147.192.215.34
;; Query time: 230 msec
;; SERVER: 35.192.172.63#53(35.192.172.63)
;; WHEN: Tue Feb 15 23:29:44 JST 2022
;; MSG SIZE rcvd: 89
大丈夫そうです。作業は以上で完了です。
最後までお読みいただきありがとうございました。