Bind9(chroot)をdockerに移行する

目次

背景

この記事で書いたように、私は過去に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

大丈夫そうです。作業は以上で完了です。
最後までお読みいただきありがとうございました。




Archives

2022 (6)
2021 (3)
2020 (4)

Writer

筆者のイメージ画像
kusshie

情報系学部に所属していた社会人1年生です。大学ではネットワークを学んでいましたがまだまだです。 最近は友達に誘われてISPごっこに足を踏み入れました (AS63791)。