$TTL 86400
$ORIGIN example.com.
@ INSOAns1.example.com.admin.example.com. (2000110701 ; Serial10800; Refresh after 3 hours3600 ; Retry after 1 hours604800; Expire after 1 week86400; Minimum TTL of 1 day)
INNSns1.example.com. INNS ns2.example.com.
INMX 100 ns1.example.com.
gwINA 192.168.0.1ns1INA 192.168.0.2ns2INA 192.168.0.3wwwINA 192.168.0.4
mail INCNAME ns1.example.com.
[逆引きゾーンファイル "/var/named/master/192.168.0.0-7"]$TTL 86400$ORIGIN 0/29.0.168.192.in-addr.arpa.@ INSOAns1.example.com.admin.example.com. (2000110701; Serial10800; Refresh after 3 hours3600; Retry after 1 hours604800 ; Expire after 1 week86400; Minimum TTL of 1 day) INNSns1.example.com. INNSns2.example.com.1 INPTRgw.example.com.2 INPTRns1.example.com.3 INPTRns2.example.com.4 INPTRwww.example.com.
[ループバックアドレス逆引き用ファイル "/var/named/master/127.0.0"]$TTL 86400$ORIGIN 0.0.127.in-addr.arpa.@ INSOAns1.example.com.admin.example.com. (2002121101 ; Serial10800; Refresh after 3 hours3600 ; Retry after 1 hours604800; Expire after 1 week86400; Minimum TTL of 1 day) INNSlocalhost.1 INPTRlocalhost.
[ループバックアドレス正引き用ファイル "/var/named/master/localhost"]$TTL 86400$ORIGIN localhost.@ INSOAns1.example.com.admin.example.com. (2002121101 ; Serial10800; Refresh after 3 hours3600 ; Retry after 1 hours604800; Expire after 1 week86400; Minimum TTL of 1 day) INNSlocalhost.localhost.INA 127.0.0.1
[ルートキャッシュ "/var/named/named.root"]
[ネームサーバの指定 (master) "/etc/resolv.conf"]domain example.comnameserver127.0.0.1nameserver192.168.0.3
[ネームサーバの指定 (slave) "/etc/resolv.conf"]domain example.comnameserver127.0.0.1nameserver192.168.0.2
マスターファイルの詳細
マスターファイルにはゾーンの情報をリソースレコード(Resource Records)と呼ばれる以下のようなフォーマットで記述していきます。
<ドメイン> [<ttl>] [<クラス>] <タイプ> <リソースデータ> [<コメント>](空白)[<ttl>] [<クラス>] <タイプ> <リソースデータ> [<コメント>]@ [<ttl>] [<クラス>] <タイプ> <リソースデータ> [<コメント>]行頭が空白の場合はその上のリソースレコードの<ドメイン>として扱われます。
行頭が "@" の場合は $ORIGIN の値として扱われます。
$ORIGIN を明示的に設定していない場合は named.conf で設定したゾーンの名前が使われます。
"[", "]" で囲まれた項目は省略可能です。
<ttl> については $TTL にてデフォルトの値を設定することができます。
<クラス>を省略した場合は named.conf の zone 設定で指定したクラスとして扱われます。
named.conf でも指定していない場合は IN (Internet) として扱われます。
タイプで代表的なものには次のものがあります。
A: ドメインのIP(v4)アドレス指定する。
(Address) AAAA : ドメインのIP(v6)アドレス指定する。
(Address) NS : ドメインのネームサーバを指定する。
(NameServer) CNAME : リソースデータにドメインという別名を設定する。
(Canonical NAME) SOA : ドメインの権威情報を設定する。
(Start Of a zone of Authority) PTR : IPアドレスにドメインを指定する。
(PoinTeR) MX : ドメイン宛メールの配送先を指定する。
(MailExchange)リソースデータはタイプに依存し、代表的なものは次のようになります。
A: IP(v4)アドレス (xxx.xxx.xxx.xxx) AAAA : IP(v6)アドレス (XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX) NS : ドメイン CNAME : ドメイン SOA :
別途説明 PTR : ドメイン MX : ドメインリソースデータのドメインには CNAME で設定した別名を指定することは出来ません。
エラーにはならないので設定されていることがありますが、良くない設定です。
ドメインがドット "." で終って終っていない場合は $ORIGIN の値が "." に続いて付加されます。
例えば $ORIGIN example.com. @ NS ns ns A 192.168.0.2 www A 192.168.0.3は example.com.IN NS ns.example.com. ns.example.com. IN A 192.168.0.2 www.example.com. IN A 192.168.0.3と同じです。
マスターファイルディレクティブすでに登場していますが $ORIGIN, $INCLUDE, $TTL というディレクティブが存在します。
$ORIGIN : <ドメイン> がドット "." で終っていない場合に補間するドメインを設定します。
書き方: $ORIGIN <ドメイン> [<コメント>] ("[", "]" で囲まれた部分は省略可能)$INCLUDE :書き方: $INCLUDE <ファイル名> [<origin>] [<コメント>] ("[", "]" で囲まれた部分は省略可能)$TTL: <ttl> が省略された場合のデフォルトの TTL を設定します。
設定可能な範囲は 0 〜 2147483647 です。
$TTL は
RFC 2308 にて定義されています。
書き方: $TTL <秒数>
SOA レコードSOA レコードは他のリソースレコードとは違い、ドメイン全体の情報を設定します。
フォーマットは <ドメイン> IN SOA <ネームサーバ(MNAME)> <管理者メールアドレス> (<SERIAL> <REFRESH> <RETRY> <EXPIRE> <MINIMUM>)で、わかりやすいように次のように書かれたりもします。
@ INSOAns.example.com. admin.example.com.(2002121101 ; SERIAL10800; REFRESH (3 hour)3600 ; RETRY (1 hour)604800; EXPIRE (1 week)60 ; MINIMUM (1 minute))ここで注意すべきは <管理者メールアドレス> の "@" を "." に置き換える必要があることです。
この例では admin@example.com が admin.example.com となっています。
"(", ")" で囲まれた中の SERIAL はゾーン情報のバージョンを管理するもので、設定を変更した場合はこの値を増やさないと他のサーバへ反映されません。
その他の値は単位が秒で、主にスレーブサーバ向けの情報です。
REFRESH : スレーブサーバがマスターサーバへ更新があったかどうかを確認する間隔。
RETRY : REFRESH でスレーブサーバがマスターサーバへ問い合わせを行った際に応答が得られなかった場合に再度問い合わせを試みるまでの時間。
EXPIRE : スレーブサーバがマスターサーバへ問い合わせが出来ない時間がこの値を超えるとスレーブサーバは古すぎて間違っているかも知れないデータは捨てた方が良いと判断し、持っていたデータを破棄します。
MINIMUM : キャッシュサーバが問い合わせを行い、このゾーンで未登録だったという情報をキャッシュ(ネガティブキャッシュ)しておく時間。
ネガティブキャシュの最大値は 10800 (3h, 3時間) です。
これらの値と $TTL は #w#d#h#m#s のように指定することで週、日、時間、分などの単位を使用することが可能です。
例えば 1w は 1週間。
5h30m は 5時間30分という具合です。
(注)BIND 8.2 より古いバージョンでは MINIMUM はゾーンのデフォルト TTL とネガティブキャッシュ TTL の両方を意味します。
逆引きの委譲クラスC以下の逆引きの委譲には [RFC 2317] Classless IN-ADDR-ARPA delegationの CNAME を利用した方法をとります。
192.168.0.0/29 を ns1.example.com [192.168.0.2], ns2.example.com [192.168.0.3]に委譲する場合を例にとり説明します。
まず、 192.168.0.0/24 のゾーンを管理しているサーバにて$ORIGIN 0.168.192.in-addr.arpa.0/29 INNSns1.example.com.0/29 INNSns2.example.com.という設定で 0/29.0.168.192.in-addr.arpa というドメインのネームサーバーをns1.example.com と ns2.example.com へ振ります。
それから$ORIGIN 0.168.192.in-addr.arpa.0 IN CNAME 0.0/29.0.168.192.in-addr.arpa.1 IN CNAME 1.0/29.0.168.192.in-addr.arpa.2 IN CNAME 2.0/29.0.168.192.in-addr.arpa.3 IN CNAME 3.0/29.0.168.192.in-addr.arpa.4 IN CNAME 4.0/29.0.168.192.in-addr.arpa.5 IN CNAME 5.0/29.0.168.192.in-addr.arpa.6 IN CNAME 6.0/29.0.168.192.in-addr.arpa.7 IN CNAME 7.0/29.0.168.192.in-addr.arpa.という設定で 0.0.168.192.in-addr.arpa 〜 7.0.168.192.in-addr.arpa に0/29.0.168.192.in-addr.arpa ドメインの別名であると設定します。
ns1.exmpla.com, ns2.example.com にて$ORIGIN 0/29.0.168.192.in-addr.arpa.1 INPTRgw.example.com.2 INPTRns1.example.com.3 INPTRns2.example.com.4 INPTRwww.example.com.と設定します。
これで 192.168.0.1 というアドレスの逆引きを行うと、まず、0.168.192.in-addr.arpaを管理しているサーバへ 1.0.168.192.in-addr.arpa の問い合わせを行い、1.0/29.0.168.192.in-addr.arpa の別名になっているとの回答を受けるので、今度は 0/29.0.168.192.in-addr.arpa を管理しているサーバはどこかと問い合わせ、NS レコードに書かれている ns1.example.com, ns2.example.com だと回答を受けるのでそこへ 1.0/29.0.168.192.in-addr.arpa の問い合わせを行います。
ns1.example.com, ns2.example.com で 1.0/29.0.168.192.in-addr.arpa はgw.example.com であると設定してあるので 192.168.0.1 は gw.example.comであるという結果にだどりつきます。
このような CNAME を利用した委譲を行う場合、/25 だと委譲する側にサーバでは 128個もの CNAME レコードを書かなければなりません。
こういう場合に便利なように BINDには独自拡張の $GENERATE 設定があります。
上記の設定を $GENERATE を使って書くと次のようになります。
$ORIGIN 0.168.192.in-addr.arpa.$GENERATE 1-2 0 NS ns$.example.com.$GENERATE 0-7 $ CNAME $.0/29構文は $GENERATE <range> <lhs> <type> <rhs> [<comment>] <range> : start-stop もしくは start-stop/step で、 /step は省略すると 1 になります。
start, stop, step は自然数である必要があります。
<lhs> : $ は <range> で設定した値に置き換わります。
$ という文字を設定したい場合は \$ とバックスラッシュ(もしくは円記号) "\" でエスケープする必要があります。
ドット "." で終らない場合は $ORIGINの値が追加されます。
${offset,width,radix} というフォーマットでオフセットや 0 でのパディング、10進(d)、8進(o)、16進(x,X) が設定出来ます。
連番の後に "{" とう文字が設定したい場合は $\{ とします。
{offset,width,radix} が省略された場合は ${0,1,d} として扱われます。
${16,3} は 16 が足され、3桁になります。
${0,2,x} は2桁の16進数(a〜fは小文字)になります。
<type> : タイプを設定します。
A, AAAA, PTR, CNAME, NS がサポートされています。
<rhs> : リソースデータです。
設定方法は lhs と同じです。
マスター - スレーブ間の同期DNS 関連 RFC
[RFC 1035] DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
[RFC 2317] Classless IN-ADDR-ARPA delegation
[RFC 2308] Negative Caching of DNS Queries (DNS NCACHE)
【ご注意】BINDはセキュリティ対策上、最新版をダウンロードしてお使いください。
ルートネームサーバの IP アドレス変更についてのお知らせJPRSより標記のお知らせがありましたので、ご案内いたします。
2002年11月 5日にルートネームサーバの一つである J.root-servers.netの IP アドレスが変更されました。
ネームサーバ管理者の皆様におかれましては、各ネームサーバのルートヒントファイルの更新などの適切なご対応をお願いいたします。
詳しくは、下記URLをご確認くださいますようお願い致します。
http://jpinfo.jp/topics/021119.html