$Id: howto-dns.html,v 1.3 2002/09/06 06:22:29 sakane Exp $ %Hd: DNS の使い方named.boot について dbファイルの記法 実際の設定例 resolver の役割 パケットのサンプル named tips o はじめに まず以下の事を決める。 どのドメインの primary になるか。 どのドメインの secondary になるか。 自力で解決出来ない時の方法を決める。 そこでサーバ(named)の設定ファイル named.boot を作る。 クライアント(resolver)は resolv.conf で設定を行なう。 ところで、ここでは bind4 についてまとめているので、 bind8については、howto-bind8.htmlを参照。 o named.boot について named の構成を定義する。以下のキーワードがある。 directory DNSに必要なファイルの場所を指定する。 例えば、/var/domain に設定ファイルがあるとすれば、 % cat named.boot : directory /var/domain : primary 1次サーバとなるための設定。 primary (ドメイン名) (ファイル名) 例えば、wide.dcl.co.jp (202.249.27/24)のマスターになり、 正引き(ホスト名からIPアドレス)/逆引き(IPアドレスからホスト名)共にを設定するならば、 % cat named.boot : primary wide.dcl.co.jp db.wide.dcl.co.jp primary 27.249.202.in-addr.arpa db.202.249.27 : 2つ目の引数 db.fogefoge は、データを格納するファイル名を示す。 逆引きの書き方に注意。10進表記を逆に並べて最後に in-addr.arpa をくっつける。 cache ルートキャッシュと呼ばれるファイルを指定する。 % cat named.boot : cache . db.cache : db.cache には、named がキャッシュを構築するために必要なデータがあり、 少なくともルートサーバ名とアドレスが必要。 要するにローカルドメイン情報以外の情報がどこにあるのかを示す 組織内の運用方法によっても内容は異なるので、上位管理者に聞くのが良い。 例えば、 % cat db.cache : . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 : である。ちなみに、このファイルは、 ftp://rs.internic.net/domain/named.boot から拾って来る。 secondary 2次サーバとなるための設定。マスターは複数指定出来る。 secondary (ドメイン名) (マスターのアドレス) [(マスターのアドレス)] (ファイル名) 例えば、dcl.co.jp (202.33.40/24)のセカンダリになり、マスターが 202.33.40.195 ならば、 % cat named.boot : secondary dcl.co.jp 202.33.40.195 bak/bak.dcl.co.jp secondary 40.33.202.in-addr.arpa 202.33.40.195 bak/bak.202.33.40 : forwarders 自己解決出来ない場合に、cacheよりも先に聞きに行くサーバを指定。複数指定可能。 forwarders 202.249.27.1 202.33.40.195 slave forwarders で指定されたサーバだけに聞きに行くようにする。 forwarders 行が必須。 % cat named.boot forwarders 202.249.27.1 202.33.40.195 slave cache の指定は無視されるのか? sortlist sortlist 155.129.192.1 o dbファイルの記法 基本的な表記方法は、 [名前] [TTL] クラス 型 データ で示される。 [名前] 検索において大文字小文字は無視されるが、データとしては識別される。 @で省略される場合がある。というか殆んど省略される。 [TTL] キャッシュに存在する秒数を示す。通常 SOA レコードでデフォルトが設定される。 クラス DNSでは IN しか使わない。 型 以下の型がある。 SOA(Start Of Authority) このドメインデータに対する権威を示す。 NS(Name Server) このドメインのネームサーバを列挙する。 A(Address) 名前からアドレスへの対応付け。 CNAME(Canonical NAME) 別名を定義する。 MX(Mail eXchanger) そのドメインのメールを処理するホストを指定。 PTR(PoinTeR) アドレスから名前への対応付け。 TXT(TeXT) 言葉で定義された情報 WKS(Well-Known Services) well-knownサービス HINFO(Host INFOrmation) ホスト情報 ; 注釈 省略記法 起点名 primaryで指定されるドメイン名は、dbファイルの全てのデータの起点を示す。 この起点名はデータファイル内の'.'で終了していない全ての名前に付加される。 @ primaryで指定されたドメイン名は、dbファイル内では @により省略出来る。 繰り返し 各レコードの最初のフィールドが、スペースがタブならば、 直前のレコードのそれが適用される。 SOA dbファイルに一つ必要。 (ドメイン名.) IN SOA (データを作成したホスト名.) (責任者のアドレス.) (データ) 例えば、wide.dcl.co.jp のSOAは以下 % cat db.wide.dcl.co.jp wide.dcl.co.jp. IN SOA gaia.wide.dcl.co.jp. postmaster.dclwide.dcl.co.jp. ( 1997071800 ; Serial 3600 ; Refresh after 3 hours # 60*60*3 300 ; Retry after 1 hour # 60*60 1209600 ; Expire after 1 week # 60*60*24*7 86400 ; Minimum TTL of 1 day # 60*60*24 ) 責任者のアドレスは、postmaster@dclwide.dcl.co.jp の'@'を'.'に置き換える。(RFC1033) さらに省略記法を使用すると以下のようになる。 % cat db.wide.dcl.co.jp @ IN SOA gaia postmaster.dclwide.dcl.co.jp. ( 1997071800 ; Serial 3600 ; Refresh after 3 hours # 60*60*3 300 ; Retry after 1 hour # 60*60 1209600 ; Expire after 1 week # 60*60*24*7 86400 ; Minimum TTL of 1 day # 60*60*24 ) SOAレコードのデータの意味 Serial マスターの変更をセカンダリに通知するために必要。 セカンダリがマスターからデータを拾ってくる時に、最初にSerialを要求する。 セカンダリのSerialが、マスタよりも小さい場合転送が行なわれる。 Refresh セカンダリにデータの正合性をさせるタイミング。 Retry Refresh に失敗した時の再試行のタイミング。 Expire セカンダリが、ここで設定した時間マスターに接続できない場合、保持しているデータを捨てる。 TTL 他のネームサーバのキャッシュに存在する時間を設定。 この時間が過ぎるとキャッシュから消滅する。 NS ネームサーバを指定する。 (ドメイン名.) IN NS (ホスト名.) 例えば、wide.dcl.co.jp. のネームサーバ dclwide.dcl.co.jp を設定するには、 wide.dcl.co.jp. IN NS dclwide.dcl.co.jp. A (ホスト名.) IN A (IPアドレス) 例えば、dclwide.dcl.co.jp (202.249.27.1) は、以下のように表される。 dclwide.dcl.co.jp IN A 202.249.27.1 CNAME (別名.) IN CNAME (ホスト名.) 例えば、loghost を gaia のエイリアスとして設定するには、 loghost IN CNAME gaia RFC1912 2.4 に MXや NSの右辺に CNAMEを使ってはいかんと書いてある。 PTR (逆順IPアドレス.in-addr.arpa.) IN PTR (ホスト名.) 例えば、dclwide.dcl.co.jp (202.249.27.1) の逆引きは、 1.27.249.202.in-addr.arpa. IN PTR dclwide.dcl.co.jp. MX (ドメイン名.) IN MX (優先順位) (ホスト名.) 例えば、dcl.co.jp 宛のメールを処理するホストの設定は、 dcl.co.jp. IN MX 5 mail.dcl.co.jp. dcl.co.jp. IN MX 10 dclwide.dcl.co.jp. o 実際の設定例 以下に dclwide.dcl.co.jp の設定を示す。 % cd /var/domain/dclwide % cat named.boot ; Directory directory /var/domain/dclwide ; Primary primary 27.249.202.in-addr.arpa db.202.249.27 primary 0.0.127.in-addr.arpa db.127.0.0 primary localhost. db.localhost primary wide.dcl.co.jp db.wide.dcl.co.jp ; Secondary secondary dcl.co.jp 202.33.40.195 bak/dcl.zone secondary 40.33.202.in-addr.arpa 202.33.40.195 bak/spin.rev ; Cache cache . root.cache 設定順序はどうでも良い。(多分) dclwide.dcl.co.jp は、WIDEプロジェクトに参加している他の組織の セカンダリをしているので、実際は secondary レコードがもっと沢山ある。 % cat db.202.249.27 @ IN SOA dclwide.dcl.co.jp. postmaster.dclwide.dcl.co.jp. ( 1997102801 ; serial 3600 ; refresh every 1 hours 300 ; retry every 15 minutes 1209600 ; expire after two week 86400 ; minimum of a day ) IN NS dclwide.dcl.co.jp. ; networks 0 IN PTR dcl-net.dcl.co.jp. 254 IN PTR wide-router.dcl.co.jp. 255 IN PTR wide-broadcast.dcl.co.jp. ; hosts 1 IN PTR dclwide.dcl.co.jp. 3 IN PTR nymph.wide.dcl.co.jp. 13 IN PTR bomb.wide.dcl.co.jp. % cat db.wide.dcl.co.jp @ IN SOA gaia.wide.dcl.co.jp. postmaster.dclwide.dcl.co.jp. ( 1997102802 ; serial 3600 ; refresh every 1 hours 300 ; retry every 15 minutes 1209600 ; expire after two week 86400 ; minimum of a day ) IN NS gaia IN MX 20 gaia loghost IN CNAME gaia ; hosts gaia IN A 202.249.27.1 nymph IN A 202.249.27.3 bomb IN A 202.249.27.13 以下はループバックネットワークに対応するために必要。 % cat db.127.0.0 @ IN SOA dclwide.dcl.co.jp. postmaster.dcl.co.jp. ( 1997102801 ; serial 10800 ; refresh every 3 hours 900 ; retry every 15 minutes 604800 ; expire after a week 86400 ; minimum of a day ) IN NS dclwide.dcl.co.jp. 1 IN PTR localhost. % cat db.localhost @ IN SOA gaia.wide.dcl.co.jp. postmaster.dclwide.dcl.co.jp. ( 1997102801 ; serial 36000 ; refresh every 10 hours 300 ; retry every 15 minutes 1209600 ; expire after two week 86400 ; minimum of a day ) IN NS dclwide.dcl.co.jp. IN A 127.0.0.1 o resolver の役割 アプリケーションからのDNSに関する要求を受けて、named に問い合わせる。 named からの返答をアプリケーションへ渡す。 o resolv.conf を設定する。 domain '.'を付けない表記に適用されるドメイン名。一つだけ指定可能。 domain (ドメイン名) 指定したドメイン名を適用して見つからなければ、'.'を登って適用する。 例えば、 % cat resolv.conf domain cct.dcl.co.jp % telnet hiromi とすると、hiromi.cct.dcl.co.jp, hiromi.dcl.co.jp の順に検索される。 search domain とほぼ同じだが、複数指定可能。 search (ドメイン名) [(ドメイン名)[...]] 指定したドメイン名だけを順に適用する。 例えば、 % cat resolv.conf search cct.dcl.co.jp edp.dcl.co.jp % telnet hiromi とすると、hiromi.cct.dcl.co.jp, hiromi.edp.dcl.co.jp の順に検索され、結局解決されない。 実際の指定は domain か search のどちらか一方だけで良い。 nameserver named が起動しているホストのIPアドレスを指定する。 nameserver (IPアドレス) 複数指定可能。 o パケットのサンプル # dig kame197.kame.net. a 203.178.141.195.1704 > 203.178.141.194.53: udp 34 IP 4500 003e 566f 0000 4011 7155 cbb2 8dc3 cbb2 8dc2 UDP 06a8 0035 002a 9046 ID 0006 QR Opcode AA TC RD 0 0000 0 0 1 (0x01) RA Z AD CD RCODE 0 0 0 0 0000 (0x00) QDCOUNT 0001 ANCOUNT 0000 NSCOUNT 0000 ARCOUNT 0000 QD SECT QNAME 07 6b61 6d65 3139 37 kame197 04 6b61 6d65 kame 03 6e65 74 net 00 (nil) TYPE 0001 A CLASS 0001 IN 203.178.141.194.53 > 203.178.141.195.1704: udp 194 IP 4500 00de 6524 0000 4011 6200 cbb2 8dc2 cbb2 8dc3 UDP 0035 06a8 00ca 9642 ID 0006 QR Opcode AA TC RD 1 0000 1 0 1 (0x85) RA Z AD CD RCODE 1 0 0 0 0000 (0x80) QDCOUNT 0001 ANCOUNT 0001 NSCOUNT 0003 ARCOUNT 0003 QD SECT QNAME 07 6b61 6d65 3139 37 kame197 (offset = 0x0c) 04 6b61 6d65 kame 03 6e65 74 net 00 (nil) TYPE 0001 A CLASS 0001 IN AN SECT NAME c00c (kame197.kame.net) TYPE 0001 A CLASS 0001 IN TTL 0000 0e10 RDLEN 0004 RDATA cbb2 8dc5 203.178.141.197 NS SECT NAME 04 6b61 6d65 kame (offset = 0x32) 03 6e65 74 net 00 (nil) TYPE 0002 NS CLASS 0001 IN TTL 0000 0e10 RDLEN 0009 RDATA 06 6f72 616e 6765 orange (offset = 0x46) c0 32 (kame.net) NAME c032 (kame.net) TYPE 0002 NS CLASS 0001 IN TTL 0000 0e10 RDLEN 0014 RDATA 07 636f 636f 6e75 74 coconut (offset = 0x5b) 06 6974 6f6a 756e itojun 03 6f72 67 org (offset = 0x6a) 00 NAME c032 (kame.net) TYPE 0002 NS CLASS 0001 IN TTL 0000 0e10 RDLEN 0017 RDATA 05 7469 6765 72 tiger (offset = 0x7b) 05 6869 726f 6f hiroo 08 6f73 686f 6b75 6a69 oshokuji c06a (org) AR SECT NAME c046 (orange.kame.net) TYPE 0001 A CLASS 0001 IN TTL 0000 0e10 RDLEN 0004 RDATA cbb2 8dc2 203.178.141.194 NAME c05b (coconut.itojun.org) TYPE 0001 A CLASS 0001 IN TTL 0000 0c1f RDLEN 0004 RDATA d2a0 5f61 210.160.95.97 NAME c07b (tiger.hiroo.oshokuji.org) TYPE 0001 A CLASS 0001 IN TTL 0000 0ce7 RDLEN 0004 RDATA d291 21f2 210.145.33.242 o bindのversionを調べる % dig @ chaos txt version.bind. o zone情報を拾う % dig @ axfr