tinydnsは、djbdnsパッケージに格納されているDNSサーバである。運用にあ たっては、daemontoolsの導入がほぼ前提となっている。
以下の記述はdjbdns-1.05のインストール方法である。最新情報は 本家のdjbdnsのインストール方法 を参照されたい。
インストール先は${prefix}で示されている。例えば/usr/localなど、好みに 応じて選択する。
wgetコマンドなどで djbdns-1.05.tar.gz を取ってくる。
% tar xvzf djbdns-1.05.tar.gz % cd djbdns-1.05
インストール先をconf-homeに、コンパイル方法をconf-ccに、リンク方法 をconf-ldに記述する。
% make
# make setup check
tinydns用のユーザ、tinydnsのログ用のユーザを作成する。djbdnsパッケー ジ推奨のユーザ名は、tinydnsとdnslogである。
自動設定コマンドtinydns-confを用いて、svscanに登録するためのディレ クトリを作成する。第1引数にdnscache用のユーザ名、第2引数にログ用ユー ザ名、第3引数にディレクトリ、第4引数にサービスを行う外部インタフェー スのIPアドレスを指定すること。
# tinydns-conf tinydns dnslog /var/tinydns <ipaddr>
注: /var/tinydnsは私の好みの設定。djbdns推奨は/etc/tinydns。
/var/tinydns/root/data を編集する。直接手で書いてもよいが、簡単なデー タ追加スクリプトが用意されているのでそれを使うとよい。詳細は データ形式の詳細を参照のこと。
| ネームサーバの追加: |
./add-ns net.local 192.168.1.1 ./add-ns 1.168.192.in-addr.arpa 192.168.1.1 |
| ホストの追加: | ./add-host host.net.local 192.168.1.2 |
| 別名の追加: |
./add-alias www.net.local 192.168.1.2 (注意! この別名はCNAMEレコードではなくAレコードになる) |
| MXの追加: | ./add-mx ms.net.local 192.168.1.3 |
編集が終わったら、makeを実行して変更をdata.cdbに反映させる。
svscanに起動させ、サービスを開始する。
# ln -s /var/tinydns /service
dnsqコマンド、dnsqrコマンドでDNSサーバ、キャッシュサーバ、親ドメイン のDNSサーバなどの動作を確認する。
dnsqコマンドを用いる。以下は network-surveys.cr.yp.to を 131.193.178.181 に問い合わせている。
% dnsq a network-surveys.cr.yp.to 131.193.178.181 1 network-surveys.cr.yp.to: 125 bytes, 1+1+2+2 records, response, authoritative, noerror query: 1 network-surveys.cr.yp.to answer: network-surveys.cr.yp.to 86400 A 131.193.178.100 authority: yp.to 259200 NS a.ns.yp.to authority: yp.to 259200 NS b.ns.yp.to additional: a.ns.yp.to 259200 A 131.193.178.181 additional: b.ns.yp.to 259200 A 131.193.178.181
answer行が得られた返答である。また、authority行は当該ドメインのNSレ コード、additionalは付加情報を示している。
上記の例では問い合わせる情報の種別をa(Aレコード)にしているが、この 他にptr(PTRレコード)・ns(NSレコード)・mx(MXレコード)などがある。
dnsqrコマンドを用いる。以下は network-surveys.cr.yp.to を問い合わせ ている。answer行が得られた返答である。
% dnsqr a network-surveys.cr.yp.to 1 network-surveys.cr.yp.to: 58 bytes, 1+1+0+0 records, response, noerror query: 1 network-surveys.cr.yp.to answer: network-surveys.cr.yp.to 86400 A 131.193.178.100
/service/tinydns/root/data は1行に1エントリを記述する。各行は、先頭文 字にデータ種別が、そこから行末までにコロン区切りで種別に応じた情報が 列挙される。行末にコロンが並ぶ場合は省略できる。
以下にデータの種別と書式を示す。
コメント行。無視される。
自ドメイン<fqdn>のネームサーバを定義。ホスト名 <x>.ns.<fqdn> / IPアドレス<ip>が<fqdn>ドメ インのネームサーバであることを示すNSレコード、Aレコード、SOAレコー ドが生成される。
<x>が空欄の場合、ホスト名はns.<fqdn>となる。<x>が ドットを含む場合、ホスト名は<x>となる。
下位ドメイン<fqdn>のネームサーバを定義。ホスト名 <x>.ns.<fqdn> / IPアドレス<ip>が<fqdn>ドメ インのネームサーバであることを示すNSレコード、Aレコードが生成される。
<x>が空欄の場合、ホスト名はns.<fqdn>となる。<x>が ドットを含む場合、ホスト名は<x>となる。
ホスト名<fqdn> / IPアドレス<ip>のホストを定義。両者を対 応づけるAレコード、PTRレコードが生成される。
別名<fqdn>を定義。<fqdn>がIPアドレス<ip>であるこ とを示すAレコードが生成される。
ドメイン<fqdn>のメール中継受信ホストを定義。ホスト名 <x>.mx.<fqdn> / IPアドレス<ip>が<fqdn>ドメ インの距離<dist>のメール中継ホストであることを示すMXレコード、 Aレコードが生成される。<dist>は省略すると0になる。
<x>が空欄の場合、ホスト名はmx.<fqdn>となる。<x>が ドットを含む場合、ホスト名は<x>となる。
IPアドレス<ip>がホスト名<fqdn>であることを示すPTRレコー ドが生成される。
すべての種別に現れる<ttl>は、そのDNSレコードをキャッシュしてよ い秒数を表す。省略すると種別に応じたデフォルト値が用いられる。
<timestamp>と<lo>についてはここでは触れない: 関連リンク先を参照されたい。
/service/tinydns/root/dataを編集する。終わったらそのディレクトリで makeを実行する。tinydnsに何か明示的に知らせる必要はない。