DNS HOWTO  Nicolai Langfeldt ( 中野武雄 訳 )  から 抜粋

でもまず最初に理論

DNS は階層的なツリー構造のシステムです。
その頂点は `.' と記述され、 (ツリー型データ構造での慣例に従い) 「ルート (root)」と発音されます。
`.' の下にはたくさんの Top Level Domain (TLD) があります。
ORG, COM, EDU, NET などが有名ですが、他にもたくさんあります。

いまホスト prep.ai.mit.edu. のアドレスを見つけたいとしましょう。
すると自分のネームサーバはどこかに問い合わせを行う必要があります。
まずキャッシュにないかどうか探します。
キャッシュに答がなかった場合は、ネームサーバは名前の左側の部分を消して、自分が ai.mit.edu., mit.edu., edu. について知っているかチェックします。
これらを知らないと、ネームサーバは .(ルート) のサーバに prep.ai.mit.edu に関する問い合わせを行います。
この . サーバは直接の答は知らないでしょうが、問い合わせたサーバに参照先を提示し、 次にどこに聞けばいいかを教えてくれます。
この参照先提示は次々に行われ、自分のネームサーバは答を知っているネームサーバにまで導かれます。

自前の DNS サーバがあれば、他のネームサーバを使わなくても、たどっていく段階で見つけた情報をすべてキャッシュし、 しばらくは再び尋ねなくても良いようにしてくれます。

自分のドメインを作る

さて、ドメイン linux.bogus を作り、そこに自分たちのマシンを定義しましょう。
ホスト名に使える文字には制限があります。英語のアルファベット a-z、数字 0-9、および '-' (ダッシュ) 文字だけが使えます。守るようにしてください。

実は最初に行うべき部分はすでに記述済みです。 named.conf には以下のような行がありますよね。


zone "0.0.127.in-addr.arpa" {

        type master;

        file "pz/127.0.0";

};


上記の内容から、これから私たちはゾーン 0.0.127.in-addr.arpa を定義すること、 そしてこの named がそのゾーンのマスターサーバになること、またその内容がファイル pz/127.0.0 に保存されることなどがわかります。このファイルはすでに設定済みで、以下のような内容のはずです。


$TTL 3D

@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                                1       ; Serial

                                8H      ; Refresh

                                2H      ; Retry

                                4W      ; Expire

                                1D)     ; Minimum TTL

                        NS      ns.linux.bogus.

1                       PTR     localhost.


ゾーンファイルの origin (このゾーンが属する DNS の階層) は named.conf のゾーンセクションで指定されます。 この場合は 0.0.127.in-addr.arpa です。

この「ゾーンファイル」には三つの「リソースレコード (resource record: RR)」が含まれています。 SOA RR, NS RR, PTR RR です。
SOA は Start Of Authority の省略です。
`@' は特別な記号で、 origin を意味します。
このファイルの `domain' カラムは 0.0.127.in-addr.arpa ですから、最初の行の実際の意味は以下と同じになります。

0.0.127.in-addr.arpa.   IN      SOA ...

NS は Name Server RR の略です。
この行の先頭には `@' がありません。これは暗黙のうちにすでに指定されたことになっています。直前の行が `@' ではじまっていたからです。したがって NS の行は以下のようにも記述できることになります。

0.0.127.in-addr.arpa.   IN      NS      ns.linux.bogus

この行は DNS に、どのマシンがこのドメイン 0.0.127.in-addr.arpa のネームサーバであるかを教えます。 ns.linux.bogus というわけですね。
`ns' というのはネームサーバに良く用いられる名前ですが、これは web サーバに www.something という名前が付けられるのと似たようなものです。

最後に PTR (Domain Name Pointer) レコードが、サブネット 0.0.127.in-addr.arpa のアドレス 1 のホスト、すなわち 127.0.0.1 が localhost という名前であることを示しています。

SOA レコードはどんなゾーンファイルでも先頭に置かれます。
また各ゾーンファイルにつき一つ、先頭に (ただし $TTL 指定のあとに) 書きます。
このレコードはゾーンの説明です。どこから得られるのか (ns.linux.bogusというマシン)、内容に関する責任者は誰か (hostmaster@linux.bogus: 電子メールアドレス)、 ゾーンファイルのバージョンはいくつか (シリアル番号: 1)、 その他関連した内容などを書きます。
残りのフィールド (refresh, retry, expire, minimum) については、この値をそのまま使えば特に問題ないでしょう。
SOA の前には、$TTL 3D と書かれた行があります。これはすべてのゾーンファイルに書いてください。


では、この点を押さえて新たなゾーンファイルを書きましょう。以下のようになります。


;

; Zone file for linux.bogus

;

; The full zone file

;

$TTL 3D

@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                        199802151       ; serial, todays date + todays serial #

                        8H              ; refresh, seconds

                        2H              ; retry, seconds

                        4W              ; expire, seconds

                        1D )            ; minimum, seconds

;

                TXT     "Linux.Bogus, your DNS consultants"

                NS      ns              ; Inet Address of name server

                NS      ns.friend.bogus.

                MX      10 mail         ; Primary Mail Exchanger

                MX      20 mail.friend.bogus. ; Secondary Mail Exchanger



localhost       A       127.0.0.1



gw              A       192.168.196.1

                TXT     "The router"



ns              A       192.168.196.2

                MX      10 mail

                MX      20 mail.friend.bogus.

www             CNAME   ns



donald          A       192.168.196.3

                MX      10 mail

                MX      20 mail.friend.bogus.

                TXT     "DEK"



mail            A       192.168.196.4

                MX      10 mail

                MX      20 mail.friend.bogus.



ftp             A       192.168.196.5

                MX      10 mail

                MX      20 mail.friend.bogus.


逆引きゾーン

今やプログラムは、 linux.bogus にある名前を、実際に接続すべきアドレスに変換できるようになったわけです。
でも逆引きのゾーンも必要です。 これは DNS でアドレスを名前に変換できるようにするためのものです。
この名前はさまざまな種類のたくさんのサーバ (FTP, IRC, WWW などなど) において、こちらとの通信を認めるか、 また認めた場合、どの程度の優先性を付与するかなどの判断に用いられます。

以下を named.conf に記述してください。


zone "196.168.192.in-addr.arpa" {

        type master;

        notify no;

        file "pz/192.168.196";

};


これは 0.0.127.in-addr.arpa とまったく同じです。中身も同じようになります。


$TTL 3D

@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (

                        199802151 ; Serial, todays date + todays serial

                        8H      ; Refresh

                        2H      ; Retry

                        4W      ; Expire

                        1D)     ; Minimum TTL

                NS      ns.linux.bogus.



1               PTR     gw.linux.bogus.

2               PTR     ns.linux.bogus.

3               PTR     donald.linux.bogus.

4               PTR     mail.linux.bogus.

5               PTR     ftp.linux.bogus.