実際に用いられているゾーンファイルの例
チュートリアルの例だけでなく実際に動作している例を載せて欲しい、 という意見があったので、この章を設けました。
この例は LAND-5 の David Bullock の許可の下に用いています。 これらのファイルは、 1996 年 9 月 24 日現在のものを、私が BIND 9 の制限と拡張にあわせて編集したものです。 したがってここでの記述は、 実際に LAND-5 のネームサーバに問い合わせを行った結果とは多少異なります。
マスターゾーンセクションとして、
必須の逆引きゾーンが二つ書かれています。
127.0.0 のネットと LAND-5 のサブネットである
206.6.177
です。 LAND-5 の正引きゾーンである
land-5.com
もプライマリとして指定されています。
ゾーンファイルは本 HOWTO のこれまでの例で用いていた pz
ではなく、
zone
というディレクトリに収められていることにも注意してください。
// Boot file for LAND-5 name server options { directory "/var/named"; }; controls { inet 127.0.0.1 allow { localhost; } keys { rndc_key; }; }; key "rndc_key" { algorithm hmac-md5; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "zone/127.0.0"; }; zone "land-5.com" { type master; file "zone/land-5.com"; }; zone "177.6.206.in-addr.arpa" { type master; file "zone/206.6.177"; };
このファイルをあなたの named.conf ファイルに用いるときには、
必ず ``notify no;
'' を
land-5
の二つの zone セクションに追加して、
事故が起こらないようにしてください。
このファイルは動的に変化するものですから、このリストは古いです。 以前に説明したようにして、新しく作ったものを使いましょう。
; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET. ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUERY SECTION: ;; ., type = NS, class = IN ;; ANSWER SECTION: . 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. . 6D IN NS M.ROOT-SERVERS.NET. . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10 K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129 L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12 M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33 A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 ;; Total query time: 215 msec ;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4 ;; WHEN: Sun Feb 15 01:22:51 1998 ;; MSG SIZE sent: 17 rcvd: 436
非常にシンプルなものです。まず絶対に必要な SOA レコード、
そして 127.0.0.1 を localhost
にマップするレコードです。
これらは両方とも必須です。逆にこれ以上のものは置くべきではありません。
このファイルは、使っているネームサーバか
hostmaster のメールアドレスが変更されない限り、
更新する必要はおそらくないでしょう。
$TTL 3D @ IN SOA land-5.com. root.land-5.com. ( 199609203 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. 1 PTR localhost.
適当にインストールされた BIND では、
ここでの例のように $TTL
の行がないかもしれません。
この行は以前は用いられておらず、
8.2 の BIND だけが起動時にこの行が無い旨の警告を出します。
なお BIND 9 では $TTL
は必須です。
まず必須である SOA レコードと、同じく必須の NS レコードがあります。
セカンダリのネームサーバが
ns2.psi.net
に用意されていることもわかりますね。
これは望ましい設定です。
必ずサイトの外にバックアップのセカンダリネームサーバを置くべきです。
マスターのホストは land-5
で、
このホストは同時に各種のインターネットサービスを提供していることもわかります。
これには (A レコードでなく) CNAME が用いられています。
SOA レコードからわかるように、このゾーンファイルは land-5.com
を origin にしており、連絡担当者は root@land-5.com
です。
hostmaster
も担当者のアドレスとして良く用いられます。
シリアル番号は yyyymmdd 形式で、
その日のうちのシリアル番号が追加されています。
これはきっと 1996 年 9 月 20 日の第 6 版なのでしょう。
シリアル番号は必ず増加しなければならないことを思い出してください。
ここには当日中のシリアル番号として一桁しか使うことが
できません。したがって 9 回変更を行ったら、次の変更を行うには
翌日まで待たなければなりません。二桁使う方が良いかもしれませんね。
$TTL 3D @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; serial, todays date + todays serial # 8H ; refresh, seconds 2H ; retry, seconds 4W ; expire, seconds 1D ) ; minimum, seconds NS land-5.com. NS ns2.psi.net. MX 10 land-5.com. ; Primary Mail Exchanger TXT "LAND-5 Corporation" localhost A 127.0.0.1 router A 206.6.177.1 land-5.com. A 206.6.177.2 ns A 206.6.177.3 www A 207.159.141.192 ftp CNAME land-5.com. mail CNAME land-5.com. news CNAME land-5.com. funn A 206.6.177.2 ; ; Workstations ; ws-177200 A 206.6.177.200 MX 10 land-5.com. ; Primary Mail Host ws-177201 A 206.6.177.201 MX 10 land-5.com. ; Primary Mail Host ws-177202 A 206.6.177.202 MX 10 land-5.com. ; Primary Mail Host ws-177203 A 206.6.177.203 MX 10 land-5.com. ; Primary Mail Host ws-177204 A 206.6.177.204 MX 10 land-5.com. ; Primary Mail Host ws-177205 A 206.6.177.205 MX 10 land-5.com. ; Primary Mail Host ; {Many repetitive definitions deleted - SNIP} ws-177250 A 206.6.177.250 MX 10 land-5.com. ; Primary Mail Host ws-177251 A 206.6.177.251 MX 10 land-5.com. ; Primary Mail Host ws-177252 A 206.6.177.252 MX 10 land-5.com. ; Primary Mail Host ws-177253 A 206.6.177.253 MX 10 land-5.com. ; Primary Mail Host ws-177254 A 206.6.177.254 MX 10 land-5.com. ; Primary Mail Host
land-5 のネームサーバを試してみればわかりますが、
本当のホスト名は ws_
number となっています。
BIND 4 の後の方のバージョンから、
ホスト名に用いることのできる文字が制限されるようになりました。
したがってこの名前は BIND 8 では全く動作しませんから、
この HOWTO に掲載する際には '_' (underline) を '-' (dash) で置き換えました。
しかし、先に述べたように、BIND 9 では再びこの制限はなくなりました。
もう一つ気がつきましたか? 各ワークステーションには固別の名前は付いておらず、 プレフィックスに IP 番号の最後の二つが付いた形式になっています。 このような命名方法を用いればメンテナンスはとても楽になりますが、 やや人間との相性は悪いので、 顧客をイライラさせる結果になってしまうかもしれません。
funn.land-5.com
も land-5.com
のエイリアスになっていますが、
これは CNAME レコードではなく A レコードを用いています。
このファイルについては後でコメントします。
$TTL 3D @ IN SOA land-5.com. root.land-5.com. ( 199609206 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 86400) ; Minimum TTL NS land-5.com. NS ns2.psi.net. ; ; Servers ; 1 PTR router.land-5.com. 2 PTR land-5.com. 2 PTR funn.land-5.com. ; ; Workstations ; 200 PTR ws-177200.land-5.com. 201 PTR ws-177201.land-5.com. 202 PTR ws-177202.land-5.com. 203 PTR ws-177203.land-5.com. 204 PTR ws-177204.land-5.com. 205 PTR ws-177205.land-5.com. ; {Many repetitive definitions deleted - SNIP} 250 PTR ws-177250.land-5.com. 251 PTR ws-177251.land-5.com. 252 PTR ws-177252.land-5.com. 253 PTR ws-177253.land-5.com. 254 PTR ws-177254.land-5.com.
逆引きのゾーンは、設定の中でも多くの悲劇を引き起こす部分と言えます。
これはマシンの IP 番号がわかっている場合に、
ホスト名を取得するために用いられます。
例えば、あなたが立てている FTP サーバが
FTP クライアントから接続されたとしましょう。
あなたの FTP サーバはノルウェーにあるので、
ノルウェーと他のスカンジナビアの国々以外からの接続は多めに、
他の国々からの接続は少なめに制限したいとします。
クライアントから接続されると、
C ライブラリによって接続してきたマシンの IP 番号を知ることができます。
なぜならクライアントの IP 番号は、ネットワークを運ばれてきた
IP パケットのそれぞれに書き込まれているからです。
ここで gethostbyaddr という関数を呼べば、
IP 番号からホストの名前を引くことができます。
gethostbyaddr は DNS サーバに尋ね、
DNS サーバは DNS からそのマシンを探します。
接続してきたクライアントは ws-177200.land-5.com だったとしてみましょう。
C ライブラリが IRC サーバに渡す IP 番号は 206.6.177.200 となります。
したがって名前を引くためには
200.177.6.206.in-addr.arpa
を見つける必要があります。
DNS サーバはまず arpa.
のサーバに問い合わせをし、
in-addr.arpa.
のサーバを教えてもらいます。
続いて 206, 6 を順次逆に辿って、最後に Land-5 のゾーンである
177.6.206.in-addr.arpa
ゾーンを発見します。
最後にサーバは、そこから
200.177.6.206.in-addr.arpa
に対する答えを入手します。
``PTR ws-177200.land-5.com
'' レコードから、
206.6.177.200
は ws-177200.land-5.com
であることがわかります。
FTP サーバはスカンジナビアの国々、すなわち
*.no
, *.se
, *.dk
からの接続を優先しますが、
ws-177200.land-5.com
は明らかに以上のどれにもマッチしませんから、
サーバはこの節続を、バンド幅がより小さく、
最大接続数も少ないクラスに割り当てます。
206.2.177.200
に対する逆引きマップがそもそも
in-addr.arpa
ゾーンに存在しなければ、
サーバは決して名前を見つけることができませんから、
206.2.177.200
そのものを *.no
, *.se
, *.dk
と比較します。
どれにもマッチするわけはなく、
サーバはクラスの割り当てができないその節続を、
拒否することもあり得ます。
逆引きマップが重要なのはサーバだけだ、という人や、 そもそも逆引きマップなんて全然大事じゃないんだ、 なんていう人がいるかもしれません。 これは間違いです。 多くの ftp, news, IRC サーバでは逆引きのできないマシンからの接続を拒否します (WWW サーバにさえ拒否するものもあります)。 ですからマシン名の逆引きマップは実のところは必須なのです。