summer.wakhok.ac.jp ドメインのゾーン情報ファイルの例を掲げる。
$TTL 86400
@ IN SOA dns.summer.wakhok.ac.jp. admin.summer.wakhok.ac.jp. (
20000717001 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hours
604800 ; Expire after 1week
86400 ) ; Minimum TTL of 1day
IN NS dns.summer.wakhok.ac.jp.
IN NS dns2.summer.wakhok.ac.jp.
IN MX 10 dns.summer.wakhok.ac.jp.
IN MX 20 mail.summer.wakhok.ac.jp.
localhost IN A 127.0.0.1
dns 86400 IN A 192.168.0.1
dns2 IN A 192.168.0.2
mail IN A 192.168.0.3
hoge IN CNAME dns
wak IN CNAME dns2
hore IN CNAME mail
|
ゾーンの情報ファイルのれぞれのエントリは DNS資源レコードと呼ばれる。資源レコード(RR)には本来順序はないが、 通常 SOAレコード、NSレコード、その他のホストに関するレコードの 順に書かれる(これは省略などの関係で守った方が良いであろう)。
各レコードは空白(スペース、タブ)によってフィールドに分けられる。 情報ファイルにおいては、フィールドの位置は固定であり、従って、 行頭に空白があるかないか(第一フィールドを省略したと見なす)は 決定的に重要である点に注意しなければならない。
コメントは;で始まり、行末までである。
各レコードは次のようなフィールドからなるが、第一フィールドが
$ で始まるときはディレクティブと呼ぶ指令で、資源レコード
とは異なる。
| 名前 | . @ ドメイン名 空白 |
| TTL | 数値、空白 |
| クラス | IN |
| 資源レコードのタイプ | SOA NS A PTR CNAME MX など |
| レコードの情報 |
更に、レコードは行単位で記述されるが、行末が ( で終っている場合には
続く行は継続行とみなされ、 ) が出現するまで継続される。
$TTL
$TTL で指定した値がデフォルトとして
利用される。$TTL文がない場合には、SOAの最小値が使用されるが、
警告がでるようになる。なお、ここで言う TTL は、全てのネームサーバ
で該当レコードがどれだけの時間キャッシュしておいて良いかを示すもの
で、この値が短ければ、自サイトのDNSレコードの変更は素早く他のサイト
に反映されるが当然CPU資源はその分消費される。
$INCLUDE
$INCLUDEを
記述した位置に取り込む事が出来る。その際に、
オリジンの
解釈が変更されると困る場合があるので、取り込むファイルのオリジン
を指定出来るようになっている。
もし、取り込んだファイル自身の内部にオリジンの記述も、このオプション
でのオリジンの指定も無ければ、カレントオリジンが設定される。
$INCLUDE filename [origin] [comment]
|
つまり、先程 view によってファイルが二重になり管理の問題が生じる
かも知れない点について述べたが、この $INCLUDE を用いる
事でそれを回避出来るであろう。
$INCLUDE external.zone summer.wakhok.ac.jp.
|
とは言え、サーバの名前が view によって異なったり、 IPアドレスが異なる場合には残念だが使えない(当然、サーバの interfaceが異なる場合にはそうした事もある)。
なお言わずもがなであるが、オリジンの指定には注意しなければならない。
( )で囲むことによって、
レコードを複数行に拡張しているが、何もなければ通常一行が一レコード
に対応する。第一フィールドの @はカレントオリジン(起点名)の省略で、
例では conf ファイルで指定したこのゾーンのドメイン名 summer.wakhok.ac.jp.
のことである。第4フィールドはこのデータを作成したホストマシン名であり、
第5フィールドは最初の .を @ に変更すると、通常
DNSマスターのメイルアドレスとなる。ここまで、FQDNが絶対名で(つまり、末尾に
.がついた形で)書かれていることに気づいただろう。DNSでは、
FQDNで書く場合には必ず絶対名で書かねばならないからであり、理由は後述
する。
括弧 (( ))で囲まれた値のうち、Serialはnamedが読み込み記憶する
データに対して付けられるシリアル番号であり、もし、ゾーンファイルを修正して
それらを実行中のnamedに反映させたい場合には必ずシリアルを変更した上で、
kill -HUPをnamedに送らなければならない。シリアルが変更されていない
場合には、そのゾーン情報には変更がないと見なされ、データの再初期化が
行われないからである。その他の値は全てセカンダリサーバとのゾーン転送
に関するもので、ここでは詳しくは触れない。
@ (つまり起点名 - summer.wakhok.ac.jp.)が使われる。
第4フィールドはネームサーバのFQDNである(ここでも絶対名が使われている
点に注意)。この名前は後のホスト情報のレコードで解決されている。
また、ネームサーバは複数を指定することができ、例のように順に列挙すれば
その順にアクセスされる。
summer.wakhok.ac.jpが使われる。従って、メイルアドレスは
kanayama@summer.wakhok.ac.jp のようなものになる。勿論、仮の名前は
dummy.summer.wakhok.ac.jpのようなものでも良い。メイル配送プログラムは
最初はこれがホスト名だと仮定してDNSを検索し、失敗したら次にMXレコード
から検索するからである。しかし、もし、この名前が実際に存在するホスト名
だったら困ったことになるであろう。そうした事態を避けるために、通常はドメイン
名そのものを用いるのであり、ユーザーから見ても簡便なメイルアドレスとなって
いる。なお、プリファレンス値は0以上であれば小さいものから順になるので、
0,1,2...とつけても良いし、この例のようにしても良い。ただ、現実には、
緊急時に他のMXを追加出来るように例のような書き方の方が推奨されている。
.がつかない)を
使ってない場合には、自動的にカレントオリジン(起点名)が自動的に
補われるようになっている。先に、絶対名を強調したのはこのためであった。
実際に、もしここで第一フィールドに dns.summer.wakhok.ac.jpと
書いてしまうと、
dns.summer.wakhok.ac.jp.summer.wakhok.ac.jp.と解釈されるのである。