DNS サーバ djbdns のインストールと設定 - レコード管理の一案

DNS サーバである djbdns のインストールと設定をまとめてみました。

ここは、tinydns のレコード情報を、ゾーン毎に複数のファイルで管理する方法についての提案です。

 
djbdns のインストールと設定 > tinydns の設定と運用

3-5: レコード管理の一案

ゾーンごとに data ファイルを分離する

tinydns で使用する data ファイルは通常、全てのゾーンをひとつのファイル内で扱います。

これは個人的な意見ですけど、ひとつのファイルに全てが詰まっているよりもそれぞれが独立して分かれていた方が便利な場合もあります。

ということで、ゾーンファイルを分離する一案を紹介してみようと思います。

 

たとえば、local.ez-net.jp と global.ez-net.jp という二つのゾーンがあるとします。このときにそれぞれのファイルをたとえば次のように記述します。

 

zone.local.ez-net.jp

.local.ez-net.jp::ns1.global.ez-net.jp

.local.ez-net.jp::ns2.global.ez-net.jp

 

+www.local.ez-net.jp:192.168.0.1

 

@local.ez-net.jp:192.168.0.2:mail.local.ez-net.jp:10

 

zone.global.ez-net.jp

.global.ez-net.jp::ns1.global.ez-net.jp

.global.ez-net.jp::ns2.global.ez-net.jp

 

+www1.global.ez-net.jp:192.168.1.1

+www2.global.ez-net.jp:192.168.1.2

 

@global.ez-net.jp:192.168.1.3:mail.global.ez-net.jp:10

 

こうして、zone.local.ez-net.jp と zone.global.ez-net.jp という2つのファイルを用意して、あとは make コマンド実行時に自動的に1つにまとまるようにスクリプトを用意して、 Makefile の内容を書き換えます。

 

zone-make

#!/bin/sh

( cat zone.* | sort -u ) > data

このスクリプトは、zone. で始まるファイルをまとめて data へ書き出すというスクリプトです。data ファイルの内容を上書きしますので、気をつけましょう。

これが出来上がったら chmod u+x zone-make などとして、実行可能な状態にしておく必要があります。

 

Makefile

data.cdb: data

/usr/local/bin/tinydns-data

 

data: zone.*

./zone-make

Makefile では、make 時に zone. ではじまるファイルが更新された場合には zone-make スクリプトを実行するという記載を追加します。

 

これで作業は完了です。

こうしておくと、どれかひとつのゾーンファイルが変更されたあとで make を実行すると、自動的に data ファイルが新しいものに更新されて data.cdb ファイルが生成されます。

取り扱うドメイン名が多い場合には、このような方法をつかえば、なにかと管理しやすくなると思います。

目次