13-2. DNSサ−バ設定の詳細 (1) DNS 制御ファイルの書き方 '96〜 * はじめに << BIND 4 系列の DNS 制御ファイルについて以下記す >> 実際の named 制御ファイルの記述だが、ややこしそうに見えるが以下の named.xxx を参 考にすれば、概ね雛型として使うことができると思う。あるいはちょっと注意深くみれば 何が記述されているか、すぐ理解できるだろう。/etc/named.bootファイルから named.ca, named.hosts, named.rev, named.local といったファイルを読込む。 named.boot のファ イル名は決まっているが、他のファイルは named.boot の中で記述した名前と一致させれ ば何でも構わない。概ね慣習的にこのようなファイル名を付ける。DNS サ−バの情報を見 たり、デバッグしたりするためのツ−ルとして、古くから nslookup というコマンドがあ る。新しくは BIND 8 の dig( domain information groper )というコマンドがある。dig の方が細かな情報が分かると言われる。これらは named プログラムに入っている。 * DNS 制御ファイルの種類 /etc/named.boot << ブ−トファイル。最初にこのファイルを読み込む。 /etc/named.ca << 初期キャッシュファイル。 /etc/named.hosts << ホストファイル、正引きファイル。 /etc/named.rev << ホストファイル逆ポインタ、逆引きファイル。 /etc/named.local << ロ−カルホスト逆ポインタ。 ・named.boot : このファイルが DNS の大元である。 named デ−モンは起動すると先 ずこのファイルを読む。ここでは、1次ネ−ムサ−バ−の指定をする。 具体的には正引き、逆引き情報を記述したファイル名を書く。さらに 依頼や要望に応じて2次ネ−ムサ−バの指定も行う。 ・named.ca : インタ−ネット接続する場合には、特にル−トキャッシュと呼ばれる ftp://ftp.rs.internic.net/domain/named.root ファイルを取ってき て使う。内部のネットワ−ク内だけで named を使う場合は、 自サイ トそのものをドメインのル−トとすればよい。 ・named.hosts : 自分の管理しているホストの一覧を記述する。ホスト名からIPアド レスを調べるのに使う。正引きファイルともいう。 ・named.rev : ちょうど named.hosts の逆の働きをする。 IPアドレスからホスト 名を調べるのに使う。逆引きファイルともいう。 ・named.local : これは named デ−モンを稼働させる自身のホスト、つまりlocalhost だけの管理ファイル。管理するホストの増減には影響しない。 /etc/resolv.conf << DNS のクライント。レゾルバというライブラリを内部で使う。 [ キャッシュについて ] ネ−ムサ−バはインタ−ネットにアクセスする度に、外部のネ−ムサ−バのドメイン名と IPアドレスの対応情報をホストのメイン・メモリにキャッシュしていく。このキャッシ ュ情報は、ネ−ムサ−バを停止すると消える。どれだけキャッシュされているか見るかは % kill -INT named_PID とやると、 INDY の場合 /var/tmp/named_dump.db ファイルにデ −タをダンプする。このファイルは ASCII テキストなので中身は見ることができる。 * 書き方その1 ホスト hostA で、このような /etc/hostsファイルの内容になっている場合、DNS でどの ような設定になるか示す。これらのホストは、インタ−ネットとは接続していない、内部 ネットワ−クにあるものとする。 /etc/hosts ---------------------------- |127.0.0.1 localhost |192.9.200.1 hostA.nix.co.jj |192.9.200.2 hostB.nix.co.jj ↓ /etc/resolv.conf << DNS クラインアントの設定。UNIX系 ------------------------ のマシンでの設定である。どこのネ−ム |nameserver 192.9.200.1 サ−バを見るかIPアドレスで指定する。 /etc/named.boot ------------------------------------------------------ |; type domain source file or host |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary 200.9.192.in-addr.arp /etc/named.rev |primary 127.in-addr.arpa /etc/named.local /etc/named.hosts -------------------------------------------------------------- |;name ttl class type record specific information |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1996040101 ; serial 番号 | 3600 300 3600000 360000 ) ; 時間、単位:秒 | IN NS hostA.nix.co.jj. |localhost. IN A 127.0.0.1 |hostA IN A 192.9.200.1 |hostB IN A 192.9.200.2 | << hostC、192.9.200.3 というのを追加した ければ以下に書いていけばいい。 /etc/named.rev ----------------------------------------- |;name ttl class type record specific information |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1996040101 ; | 3600 300 3600000 360000 ) ; << ここまでは named.hosts と同じ。 | IN NS hostA.nix.co.jj. |1 IN PTR hostA.nix.co.jj. |2 IN PTR hostB.nix.co.jj. | << ここにも 3 IN PTR hostC.nix.co.jj. と 追加すること。 /etc/named.local ----------------------------------------- |;name ttl class type record specific information |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1996040101 ; | 3600 300 3600000 360000 ) ; << ここまでは named.hosts と同じ。 | IN NS hostA.nix.co.jj. |$ORIGIN 127.in-addr.arpa. |1.0.0 IN PTR localhost.nix.co.jj. /etc/named.ca << この内容はロ−カルでのテスト用である。 -------------------------------------------------- |. 9999999 IN NS hostA.nix.co.jj. ドメインのル−トが nix.co.jj |hostA.nix.co.jj. 9999999 IN A 192.9.200.1 ということである。 * 書き方その2 named.hosts, named.rev の最初にある @ マ−クは、$ORIGIN 指定でおきかえることがで きる。@ マ−クは named.boot ファイルの管理ドメイン、 例として上記の nix.co.jj を 意味するのだが、やや分かりにくい。そこで $ORIGIN を全面的に使い、 @ マ−クは使わ ないこととする。それに localhost の逆引きは named.local ファイルを別にもうけない で、named.rev に含めてしまう。しかし named.rev に含めるのは、localhostを管理する ゾ−ンとして意味があやふやになってしまうで、あまりお勧めではない。 /etc/named.boot ----------------------------------------------------- |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary 200.9.192.in-addr.arpa /etc/named.rev /etc/named.hosts ----------------------------------------------------------------- |$ORIGIN nix.co.jj. | IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | | /etc/named.rev ----------------------------------------------------------------- |$ORIGIN 200.9.192.in-addr.arpa. | IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | | |$ORIGIN 0.0.127.in-addr.arpa. |1 IN PTR localhost. * ドメイン名とホスト名に使える文字 `24/04 確認 (株)日本レジストリサ−ビス JPRS によれば、JPドメイン名として使用できる文字は、汎 用JPドメイン名と属性型地域型JPドメイン名の英数字ドメイン名で、 半角英数字(A-Z,0-9)と半角のハイフン '-' のみ、3文字以上63文字以下である。 -XYZ-.CO.JP は駄目、ハイフンは先頭と末尾にはつけてはいけない。 XY.CO.JP も3文字 に満たないのでダメ。大文字、小文字は区別されない。汎用JPドメイン名には日本語ドメ イン名がある、使える文字は JPRS のサイトを見られたい。 FQDN のホスト名部はどうか。半角英数字(A-Z,0-9)と半角のハイフン '-'。それにアンダ −ラインは BIND 4 と 9 では使える、BIND 8 ではだめである。こちらはプログラムの実 装からの制約である。JPRS に申請するドメイン名とは別である。 * 1997年当時の DNS の named キャッシュ・ファイル ------------------------------------------------------------------------ |; This file holds the information on root name servers needed to |; initialize cache of Internet domain name servers |; (e.g. reference this file in the "cache . " |; configuration file of BIND domain name servers). |; |; This file is made available by InterNIC registration services |; under anonymous FTP as |; file /domain/named.root |; on server FTP.RS.INTERNIC.NET |; -OR- under Gopher at RS.INTERNIC.NET |; under menu InterNIC Registration Services (NSI) |; submenu InterNIC Registration Archives |; file named.root |; |; last update: Feb 28, 1997 |; related version of root zone: 1997022800 |; |; formerly NS.INTERNIC.NET |. 3600000 IN NS A.ROOT-SERVERS.NET. |A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 |; formerly NS1.ISI.EDU |. 3600000 NS B.ROOT-SERVERS.NET. |B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 |; formerly C.PSI.NET |. 3600000 NS C.ROOT-SERVERS.NET. |C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 |; formerly TERP.UMD.EDU |. 3600000 NS D.ROOT-SERVERS.NET. |D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 |; formerly NS.NASA.GOV |. 3600000 NS E.ROOT-SERVERS.NET. |E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 |; formerly NS.ISC.ORG |. 3600000 NS F.ROOT-SERVERS.NET. |F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 |; formerly NS.NIC.DDN.MIL |. 3600000 NS G.ROOT-SERVERS.NET. |G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 |; formerly AOS.ARL.ARMY.MIL |. 3600000 NS H.ROOT-SERVERS.NET. |H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 |; formerly NIC.NORDU.NET |. 3600000 NS I.ROOT-SERVERS.NET. |I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 |; temporarily housed at NSI (InterNIC) |. 3600000 NS J.ROOT-SERVERS.NET. |J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10 |; temporarily housed at NSI (InterNIC) |. 3600000 NS K.ROOT-SERVERS.NET. |K.ROOT-SERVERS.NET. 3600000 A 198.41.0.11 |; temporarily housed at ISI (IANA) |. 3600000 NS L.ROOT-SERVERS.NET. |L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 |; temporarily housed at ISI (IANA) |. 3600000 NS M.ROOT-SERVERS.NET. |M.ROOT-SERVERS.NET. 3600000 A 198.32.65.12 |; End of File (2) DNS 制御ファイルの見方 '96〜 * 省略表現 /etc/named.boot -------------------------------------- |primary nix.co.jj /etc/named.hosts << named.hosts の @ マ−クは、named.boot ↑ ファイルから nix.co.jj になる。 @ マ−ク /etc/named.hosts ------------------------------------------------------------- |;name ttl class type record specific information |@ IN SOA hostA.nix.co.jj. root.hostA.nix.co.jj. ( ... | IN NS hostA.nix.co.jj. |hostA IN A 192.9.200.1 |hostB IN A 192.9.200.2 << 省略して表現されている所が幾つかある。 | 192.9.300.3 ↓ 省略部分をちゃんと記述すると。 ---------------------------------------------------------------------- |nix.co.jj. IN SOA hostA.nix.co.jj. root.hostA.nix.co.jj. ( ... |nix.co.jj. IN NS hostA.nix.co.jj. |hostA.nix.co.jj. IN A 192.9.200.1 |hostB.nix.co.jj. IN A 192.9.200.2 |hostB.nix.co.jj. IN A 192.9.300.3 上記例では hostB.nix.co.jj に対し、192.9.200.2 と 3 のIPアドレスが対応している。 これはイ−サネット・インタ−フェ−スを複数持つ、ゲ−トウェイ・ホストの場合このよ うになる。 上記の記述で hostA がもし hostA. とピリオドが後ろにあると、ドメイン nix.co.jj は 付加されず、ただの hostA というホスト名になりおかしなことになる。 ピリオドは DNS の記述では意味があるので注意されたい。 * SOA レコ−ド 管理者の電子メ−ルの宛先、katou@hostA.nix.co.jj. ではない | ことに注意。 ----------------------------- ↓ ------------------------ |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1996040101 ; Serial シリアル番号 | 3600 ; Refresh [ 時間、単位:秒 ] | 300 ; Retry | 3600000 ; Expire | 360000 ; Minimum TTL( Time To Live ) |) [ シリアル番号 ] 2次ネ−ムサ−バが1次ネ−ムサ−バのデ−タをコピ−するかどうかの判断に使われ る。もし番号が上がっていればコピ−する。この番号は日付けを使う場合が多いみた いである。別に 10 でも 20 という具合でも何でもいい。 1.1 とか 1.2 とか少数点 が入るのでも構わないみたいです。注.BIND 9.x では小数点はだめになっている。 1996年4月1日の1回目 --> 1996040101 と表わす。こんな付け方が一般的。 [ コピ−のタイミング ] いつ2次ネ−ムサ−バが1次ネ−ムサ−バをチェックしに行くのか。Refresh 値がそ の時間間隔である。この例では 3600 秒毎にチェックしにいく。そして Serial 値が 上がっていれば、2次ネ−ムサ−バは1次ネ−ムサ−バの情報をコピ−するのである。 注意すべきは、Refresh 値を長い時間に設定してしまった場合、その間にレコ−ド情 報を変更しても、それが2次ネ−ムサ−バに反映されるのは、Refresh 時間後になる ということである。このズレによりメ−ルが届かなかったり、WWWアクセスできな いといったことが起き得る。 3600 : 1 hour 1次ネ−ムサ−バにアクセスして、シリアル番号が増加して いれば、2次ネ−ムサ−バ側にコピ−してくる時間間隔。 300 : 5 minutes 上記で失敗した場合、成功するまで繰り返す時間間隔。さあ 一体何回失敗したら諦めるのか。Expire の時間で決まる。 3600000 : 1000 hours なお失敗し続けた場合、2次ネ−ムサ−バ側で持っていた情 報を廃棄する時間。 [ 他ネ−ムサ−バのキャッシュ時間 ] 先にネ−ムサ−バには、アクセスしたドメイン名とIPアドレスの対がキャッシュと して蓄えられると書いた。Minimum TTL 値はアクセス元ネ−ムサ−バに蓄えられる自 ネ−ムサ−バのレコ−ド情報の時間である。この値も注意する必要がある。あまり長 いと、自ネ−ムサ−バの情報を変更した場合、整合性がとれずに自ドメインにアクセ スできないといった事態が相手に起こる。ネ−ムサ−バを最初に試考錯誤して設定し ている時や、プロバイダを変更しようとする場合では、TTL 値含め1時間程度の短め にした方がよい。 360000 : 100 hours アクセス元 DNS にキャッシュされる自 DNS 情報の時間。 * A レコ−ドの別名 /etc/named.hosts ----------------------------------------------- |hostA.nix.co.jj. IN A 192.9.200.2 << hostA が本名である。 |WWW.nix.co.jj. IN CNAME hostA.nix.co.jj. << WWW は別名である。 ※別名にまた別名を付けることはできない。 * /etc/named.ca の見方 --------------------------------------------------- |. 9999999 IN NS hostA.nix.co.jj. |hostA.nix.co.jj. 9999999 IN A 192.9.200.2 1行目の点 . はドメインのル−トを示す。次の 9999999 は時間であり、すごく長い時間 このファイルが有効であることを示す。もし書いていない場合は、あらかじめ決められた 値がとられることになる。この named.ca の内容はロ−カルでミニ・インタ−ネットを作 って DNS のテストする場合にも使うことができる。 IN NS hostA.nix.co.jj. は、ル−トのネ−ムサ−バが hostA.nix.co.jj であり、2行目 はそのIPアドレスが 192.9.200.2 だということを示している。 DNS クライアントから ホスト名の検索が依頼された時、 このル−トのネ−ムサ−バ hostA.nix.co.jj から検索 していくことになる。 * 出てきたレコ−ド SOA( Start Of Authority ) : DNS の管理者等のゾ−ンの管理情報。 A( Address ) : ホスト名からIPアドレスへの対応。 CNAME( Canonical NAME ) : A レコ−ドのホスト名の別名。 MX( Mail eXchanger ) : DNS によるメ−ル配送のメ−ルサ−バのIPアドレス。 NS( Name Server ) : ネ−ムサ−バのホスト名。 PTR( PoinTeR ) : IPアドレスからホスト名への対応。 * 他のレコ−ド MB, MG, MR, NULL, WKS, HINFO, MINFO というレコ−ドもある。 しかし実際の named の の設定では、ほとんど記述することはない。HINFO( Host INFOrmation ) レコ−ドは、以 前は記述していたようである。このレコ−ドにはコンピュ−タのメ−カやOSの種類など を書くことになっている。セキュリティの面から書かない方が望ましいということである。 (3) /etc/resolv.conf ファイル '96〜 * /etc/resolv.conf 共通の仕様 [ domain オプション ] 正しく named が設定されていると、domain オプションを同じドメイン内で、ドメイン指 定部分を省略できる。 このオプションは INDY IRIX 5.3、SunOS 4.1.x、Solaris 2.x ど のマシンでも有効である。 /etc/resolv.conf ------------------------ |nameserver 192.9.200.2 % ping hostA.nix.co.jj << OK。 % ping hostA << NG、unknown host hostA とでる。 ↓ /etc/resolv.conf ------------------------ |domain nix.co.jj << これを追加。 |nameserver 192.9.200.2 % ping hostA << OK、nix.co.jj を足してくれる。 [ 複数の nameserver の記述 ] 以下のように resolv.conf に、3つ nameserver を記述したとすると、 上のネ−ムサ− バから検索していく。192.9.200.2 のネ−ムサ−バを見に行って見つかればそれで検索は 終わり。もし 192.9.200.2 のネ−ムサ−バが止まっていたりしたら、 次の 192.10.10.1 を見に行くわけである。192.9.200.2 は自ドメインの1次ネ−ムサ−バ、次の2つはプロ バイダなどに引き受けてもらった、自ドメインの2次ネ−ムサ−バのIPアドレスを書く ことになる。 /etc/resolv.conf ------------------------- |nameserver 192.9.200.2 << 自ドメインの1次ネ−ムサ−バのIPアドレス。 |nameserver 192.10.10.1 << 192.10.10.1 と 2 はプロバイダなどに、引き受け |nameserver 192.10.10.2 << てもらった2次ネ−ムサ−バのIPアドレス。 [ nslookup コマンドとの関係 ] nslookup はネ−ムサ−バの UDP の 53 番ポ−トにアクセスする。外部のネ−ムサ−バに アクセス、つまり問い合わせるには、 ファイアウォ−ルで DNS のパケット UDP/53 を通 すようにすること。下図の 192.168.1.5 のホストでは、resolv.conf で 192.168.1.3 の ネ−ムサ−バを見にいくよう指定している。 % tcpdump -n src 192.168.1.5 and udp port 53 tcpdump: listening on ec0 12:52:41.540311 192.168.1.5.1030 > 192.168.1.3.53: 1+ (43) /etc/resolv.conf nslookup ---> tcpdump ---------------- □ □ named を稼働 |192.168.1.3 |.5 |.3 ---------------------- 192.168.1.0 /etc/named.boot 192.168.1.3 の named 制御ファイル -------------------------------------------------- |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary 1.168.192.in-addr.arpa /etc/named.rev << 逆引きファイも設定しな |primary 0.0.127.in-addr.arpa /etc/named.local いとnslookupは働かない。 次が正しく nslookup コマンドが起動したところ。resolv.conf で指定したネ−ムサ−バ のIPアドレスとその FQDN が出ている。この FQDN はネ−ムサ−バから引き出してきた 情報である。/etc/hosts や hostname は関係ない。ネ−ムサ−バには、DNSの逆引きファ イルもちゃんと設定しておかないと、そのネ−ムサ−バに対して nslookup コマンドは働 かない。nslookup は起動もしない。 % /usr/sbin/nslookup Default Server: hostA.nix.co.jj << FQDN。 Address: 192.168.1.3 resolv.conf ファイルがないとどうなるか。Solaris 2.6 の場合、以下のように見つかり ませんと出る。INDY IRIX 5.3 だと何もメッセ−ジが出ず、止まったままになる。 # /usr/sbin/nslookup *** Can't find server name for address 127.0.0.1: Unspecified error *** Default servers are not available 因みに Apollo の場合は動きが異なる。resolv.conf ファイルがなくても、下記のように うに Default Server: で今自分が使っているノ−ド(マシン)、 とりあえずロ−カルホス トを見る。その後、どこかネ−ムサ−バをIPアドレスで指定することができる。 $ /domain_examples/tcp/nslookup/nslookup Default Server: node_abcd Address: 0.0.0.0 > server ns0.nic.ad.jp. *** Can't find address for server ns0.nic.ad.jp.: No response from server > server 202.12.30.131 << これで全世界の DNS 情報解決の糸口になった。 * 各マシンの特徴 [ INDY IRIX 5.3 ] ホスト名の検索する順番は hostresorder というオプションで指定する。以下の設定では local 指定でマシンの /etc/hosts ファイルを先ずみる。 そこに無ければ DNS サ−バで ある 192.9.200.1 を見にいく。しかし、この順序の指定は local を先に書くこと。もし named も稼働していないと、マシンの立ち上げ自体ができなくなってしまう恐れがある。 /etc/resolv.conf -------------------------- |hostresorder local bind |nameserver 192.9.200.1 |;nameserver 192.9.200.1 << ; はコメントです。 [ Solaris 2.5.1/2.6 ] このOSでは素直に NIS、NIS+ 関係なく DNS のサ−バ、クライアントになれる。2.6 で も同じ。hosts: のとこが肝心である。hosts:files dns の記述により、先ず /etc/hosts ファイルを見て、なければ named を見にいくようになる。 /etc/nsswitch.conf /etc/resolv.conf -------------------- ------------------------ |passwd: files |nameserver 192.9.200.1 |group: files |hosts: files dns << デフォルトでは files だけになっている。 | | [ Windows パソコン ] このような制御ファイルはない。Windows 95/98 ではアイコンの [ネットワ−クコンピュ −タ] -> [ネットワ−クの設定] -> [DNS の設定] で "DNS を使う" にチェックし、"DNS サ−バの検索順" の入力画面で、DNS のIPアドレスを入れる。複数入れることができる が、実際にはどうも一番最初のしか検索しないようである。このこと2011年の8月に も Windows 2000 と XP の Professional でもそうだった。変わってなかった。 [ TurboLinux では ] /etc/host.conf /etc/resolv.conf ------------------ -------------------------- |order hosts,bind |search nix.co.jj << 自分のドメイン名。 | |nameserver 192.168.200.1 * /etc/resolv.conf の nameserver の意味と働き 本来1個の管理ゾ−ンをサブドメインではなく、2つのゾ−ンに分けてしまう。それぞれ で named を稼働させ、/etc/resolv.conf に2つ nameserver 指定したらどうか。これは いかにもできそうな感じがする。下記で hostA から hostY.nix.co.jj にアクセスしてみ よう。/etc/resolv.conf 記載の nameserver 192.9.200.1 を先ず見にいく。この DNS に は hostY.nix.co.jj は登録されていない。 それで次の nameserver 192.9.200.3 を見に いって欲しいのだがそうはならない。192.9.200.1 の DNS は、nix.co.jjドメイン全体を 管理していることになっている。ここで見つからなければエントリは無かったことになる。 /etc/resolv.conf << hostA,B でこのように設定する。 ------------------------ |nameserver 192.9.200.1 |nameserver 192.9.200.3 hostA % ping hostY.nix.co.jj << これはできない。192.9.200.3 の named へは全く 見に行かない。 named named ------- ------- ------- ------- |hostA| |hostB| |hostX| |hostY| ------- ------- ------- ------- | 1 | 2 | 3 | 4 ------------------------------------------------------ 192.9.200.0 hostA,B を管理する hostX,Y を管理する nix.co.jj ドメイン nix.co.jj ドメイン /etc/named.hosts /etc/named.hosts ------------------------------ ------------------------------ |@ IN SOA hostA.nix.co.jj. |@ IN SOA hostX.nix.co.jj. | IN NS hostA.nix.co.jj. | IN NS hostX.nix.co.jj. |hostA IN A 192.9.200.1 |hostX IN A 192.9.200.3 |hostB IN A 192.9.200.2 |hostY IN A 192.9.200.4 [ 以前に書いていて没にした記事を参考に復活させた ] `2h/09/S 192.9.200.3 の DNS を見にいく場合は、 nix.co.jp ではないドメイン名を調べる時であ る。もう1つは 192.9.200.3 の DNS が 192.9.200.1 の2次サ−バで、 192.9.200.3 の named が止まっている場合である。非常に混雑していてアクセスできない場合も含まれる かも知れない。 (4) クラスCのサブネット分割での設定 * トリッキ−な DNS の設定 あるプロバイダが、クラスCの 192.9.200.0というネットワ−クアドレスの割り当て管理 を任されているとしよう。プロバイダは、このアドレスを例えば 192.9.200.0/29 と、サ ブネット分割すれば、30のユ−ザに割り当てることができる。30はネットワ−クアド レスとブロ−ドキャストアドレスの2個を除いた数である。この場合個々のユ−ザが使え るパブリックIPアドレスは6個になる。さらにWANル−タに1ついるので、実質ユ− ザが使うことができるパブリックIPアドレスの数は5個である。 サブネット分割の DNS の逆引きの仕組みは大変分かりにくい。 もう頭がパ−になりそう。 クラスCそのままの DNS では、逆引き情報はユ−ザの DNS がもっている。192.9.200.10 のホスト名は何ですか。ハイ、これは hostB.nix.co.jj ですと答えるだけである。 それ がサブネット分割になると、接続プロバイダが DNS 逆引き情報の窓口になる。 お尋ねが あると、 192.9.200.10 アドレスのホスト名は nix.co.jj の DNS が管理してますよと教 える。この仕組みを named.rev ファイルの CNAME と NS レコ−ドで処理している。 192.9.200.10 JPNIC 逆引き hostZ ■ DNS □ | | ---------------------------------- | インタ−ネット | | | ppp.co.jj と nix.co.jj はプロバイダ | | Provider と契約している。IPアドレ ---------------------------------- スは 192.9.200.0/29 サブネットを1 Provider | | | 個ずつ割り当てられているとする。 ■ DNS | | 200.9.192.in-addr.arpa. | | DNS 逆引き情報を管理 | | ------- | | |hostH| hostI .. hostM | | ------- □ □ □ DNS | | | | | | ------- | ------------------------------ ppp.co.jj |hostA| hostB ... hostF | 2.200.9.192.in-addr.arpa. 逆引き情報を管理 ------- □ □ □ | 9| 10| | 14| | ------------------------------------------ nix.co.jj, 192.9.200.8 1.200.9.192.in-addr.arpa. 逆引き情報を管理 [ nix.co.jj ] ネットワ−クアドレス 192.9.200.8 ネットマスク値 255.255.255.248 ( fffffff8 ) ブロ−ドキャスト 255.255.255.15 ( ffffff0f ) 有効ホストアドレス 192.9.200.9〜14 の6個 [ ppp.co.jj ] ネットワ−クアドレス 192.9.200.16 ネットマスク値 255.255.255.248 ( fffffff8 ) ブロ−ドキャスト 255.255.255.23 ( ffffff17 ) 有効ホストアドレス 192.9.200.17〜22 の6個 * JPNIC での設定 /etc/named.hosts ------------------------------------------------------- |nix.co.jj. IN NS hostA.nix.co.jj. /etc/named.rev ------------------------------------------------------- |200.9.192.in-addr.arpa. IN NS hostX.provider.co.jj. |;200.9.192.in-addr.arpa. IN NS hostA.nix.co.jj. << ではないことに注意!。 逆引きの設定は JPNIC でなくてプロバイダで設定、管理されるかも知れない。 ユ−ザへ のIPアドスの割り振りの管理は、プロバイダで行うようになっている。このためIPア ドレスこれこれの範囲の DNS逆引き情報は、このプロバイダが管理すること。そしてIP アドレスをサブネット分割する場合、DNS 逆引き情報はさらにそのユ−ザが管理すること。 大体このようなゾ−ン情報の管理になっているようである。これら情報がどこで実際に管 理されているのか知りたければ、nslookup コマンドで調べてみるとよい。 * Provider の設定 /etc/named.rev 注意:1は識別文字と解釈してよい。 ------------------------------------------------------------------ |; ドメイン nix.co.jj 分 ↓ |9.200.9.192.in-addr.arpa. IN CNAME 9.1.200.9.192.in-addr.arpa. |10. 〃 IN CNAME 10. 〃 | | |14. 〃 IN CNAME 14. 〃 |1.200.9.192.in-addr.arpa. IN NS hostA.nix.co.jj. | |; ドメイン ppp.co.jj 分 ↓ |17.200.9.192.in-addr.arpa. IN CNAME 17.2.200.9.192.in-addr.arpa. |18. 〃 IN CNAME 18. 〃 | | |22. 〃 IN CNAME 22. 〃 |2.200.9.192.in-addr.arpa. IN NS hostH.ppp.co.jj. | |これ以下、延々30ユ−ザ分が続く。 17.30.200.9.192.in-addr.arpa. プロバイダの DNS に 10.200.9.192.in-addr.arpa. のホスト名は何ですかと問い合わせ が来ると、それには答えず別名を 10.1.200.9.192.in-addr.arpa. と付けてしまう。そし て 1.200.9.192.in-addr.arpa. ネットワ−クの DNS 情報は、 hostA.nix.co.jj. にある よと NS レコ−ドで教え、見にいかせるようにする。すると hostA の DNS の named.rev には 10.1.200.9.192.in-addr.arpa. IN PTR hostB.nix.co.jj. という情報がある。これ でめでたし解決となるというわけである。 どうも 9.1.200.9.192.in-addr.arpa. という表記は、ただの文字列みたいである。 9.1. の 1 の部分はとりあえずサブネットの1番目というつもりで付けたが、 JPNIC の文書の 設定方法では 00A なんてことにしている。数字と文字列が合わさっているので、 何なん だと思っていた。ただの文字列と解釈すれば納得である。 00A でも 1 でもよければ、プ ロバイダによって違った表記になるかもしれない。そこは合わすことになる。 * ドメイン nix.co.jj の設定:ユ−ザはここだけ設定すればよい /etc/named.boot ------------------------------------------------------ |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts |primary 1.200.9.192.in-addr.arpa /etc/named.rev ↑ /etc/named.hosts ------------------------------------------------------ |nix.co.jj. IN NS hostA.nix.co.jj. |hostA.nix.co.jj. IN A 192.9.200.9 |hostB.nix.co.jj. IN A 192.9.200.10 | | |hostF.nix.co.jj. IN A 192.9.200.14 /etc/named.rev ------------------------------------------------------ |1.200.9.192.in-addr.arpa. IN NS hostA.nix.co.jj. IPアドレスに対応する | ホスト名の情報は、ここ | 9.1.200.9.192.in-addr.arpa. IN PTR hostA.nix.co.jj. にしかない。 |10.1.200.9.192.in-addr.arpa. IN PTR hostB.nix.co.jj. | | |14.1.200.9.192.in-addr.arpa. IN PTR hostF.nix.co.jj. * 1997年11月追記 上記の設定はNTTの OCN エコノミ−や IIJ エコノミ−などを利用する場合にも必要で ある。「INTERNET magazine」97年12月号をながめていたら、 OCNの特集があった。 ここに DNS の設定が細かに載っていた。さらに http://www.ocn.ad.jp/setup/dns/ にも DNS の逆引きの説明があった。これだけ情報があれば、もう何もびびることはない。 (5) named の起動とデバッグ * 手動起動 % /usr/sbin/named & << root で作業すること。INDY IRIX 5.3。 % ps -e | grep named PID TTY TIME COMD 621 ? 0:00 named << named デ−モンの起動を確認する。 % kill -HUP 621 << named.hosts, named.rev にホストを追加 や変更したような場合、これでOK。 * named のデバッグオプション $ /etc/named -d 5 & << デバッグオプションを付けると、 $ /usr/ucb/tail /usr/tmp/named.run << named.run というファイルができる。 | QUESTIONS: 例えばこんなエラ−がでている。 hostA.nix.co.jj.nix.co.jj, type = A, class = IN | * バ−ジョンの確認 % cat /var/tmp/named.run << INDY IRIX 5.3 では 4.8.3 が入っていた。 Debug turned ON, Level 5 IRIX 6.2 では 4.9.3 が入っていた。 Version = named 4.8.3 IRIX 5.3 (11/03/94 20:17) bootfile = /etc/named.boot $ catf /usr/tmp/named.run << Apollo も 4.8.3 が入っていた。 Debug turned ON, Level 1 Version = named 4.8.3 %WHEN% bootfile = /etc/named.boot # /usr/sbin/in.named -d 1 & << Solaris 2.5.1 の場合。 デバッグオプシ [1] 2360 ョン1で起動。プロセスIDは 2360。確 入っていたのはバ−ジョン 4.9.3 だった。 # cat /var/tmp/named.run Debug turned ON, Level 1 Version = named 4.9.3-P1 デバッグオプション1の場合のnamed.run bootfile = /etc/named.boot は、ファイルの中身はこれだけ。 * named のエラ−情報 問題があるとかってにエラ−情報がたまる。 SYSLOG ファイルはどんどん大きくなるので、 適当に消去してもいい。このシスログは Solaris 2.5.x では /var/adm/messages ファイ ルがデフォルトになっている。実際どこに記録するかは /etc/syslog.conf ファイルに書 かれている。以下は INDY IRIX 5.3 の場合である。 % tail /var/adm/SYSLOG Feb 1 11:30:19 5D:hostC named[707]: starting | Feb 1 11:30:19 3D:hostC named[708]: No root nameservers for class 1 /etc/syslog.conf ---------------------------------------------------------- |# Formats: selectoraction |# selectorfilteraction |kern.debug |/usr/sbin/klogpp /var/adm/SYSLOG |*.debug;kern.none /var/adm/SYSLOG |*.crit |/var/adm/sysmonpp /var/adm/SYSLOG * ホスト名認識の確認 $ /etc/arp -a << 現在の ARP 情報を表示する。 ? (192.10.10.2) at 00:02:de:b1:00:00 $ /etc/arp -d 192.10.10.2 << ARP 情報を消去する。 192.10.10.2 (192.10.10.2) deleted $ /etc/ping hostA.nix.co.jj << 認識しないことを確認する。 ping: unknown host hostA.nix.co.jj $ /etc/named & << named を起動する。 $ /etc/ping hostA.nix.co.jj << 認識ができるようになった。 PING hostA.nix.co.jj: 56 data bytes 64 bytes from 192.9.200.1: icmp_seq=0. time=5. ms * Apollo の DNS 制御ファイル作成ユ−ティリティ ここでは Apollo コンピュ−タに入っていた、hostnsコマンドの使い方を参考までに説明 したい。このような DNS の制御ファイルを簡便に作成するツ−ルは、 他のEWSにもあ ると思う。mkdns というフリ−ソフトがあるようだ。しかし実際の設定で使うかどうかは 疑問だが。DNS の制御ファイルの記述は、見慣れてくればそんなに複雑なものでない。こ のようなツ−ルは少し確認に使ってみる程度である。 $ ld /etc/name?* << 最初 DNS の制御ファイルはない。named-xfer named named-xfer はゾ−ンデ−タ転送用のコマンドである。 $ ld /etc/named?* -a sys type blocks current type uid used length attr rights name file coff 124 123708 P -r-x- /etc/named file coff 28 28284 P -r-x- /etc/named-xfer [ 制御ファイルを作成する ] ( root で作業すること ) ドメイン名とネットワ−ク番号を指定して hostns コマンドをかける。 $ /etc/hostns -d nix.co.jj -n 192.9.200 /etc/hosts << hostns コマンドは /etc/hosts ファイルのみ ----------------------------- が関係する。mkhosts コマンドは関係ない。 |127.0.0.1 localhost |192.9.200.1 hostA.nix.co.jj $ ld /etc/name?* これらができる named.boot named.hosts named.rev named.local named.ca $ ld /etc/hostns -a sys type blocks current type uid used length attr rights name file coff 28 25880 P -r-x- /etc/hostns $ /etc/hostns -d nix.co.jj -n 192.9.200 ※/etc/hosts が空だとこうなった。 no entry for full domain name 'node_abcd.nix.co.jj' in /etc/hosts Trying name stub 'node_abcd' Warning: no entry for stub name 'node_abcd' in /etc/hosts Boot file will be incomplete - no named.rev file entry Warning: no entry for localhost in /etc/hosts [ ル−トキャッシュ・ファイルの修正 ] /etc/named.ca このようにできる。 ---------------------------------------------------- |;name ttl class type record specific information |. 9999999 IN NS sri-nic.arpa |sri-nic.arpa. 9999999 IN A 10.0.0.51 | | ↓ ロ−カルでテストするには修正する。例えば次のように修正すること。 /etc/named.ca ----------------------------------------- |;nix.co.jj. IN NS hostA.nix.co.jj. |;hostA.nix.co.jj IN A 192.9.200.1 \ | |どちらでもいいみたい。 |. IN NS hostA.nix.co.jj. / |hostA.nix.co.jj IN A 192.9.200.1 hostns で作成される named.ca ファイルは、 だいぶ前のインタ−ネット用のル−トキャ ッシュである。現在のインタ−ネット用には使えない。 ロ−カルな DNS のテストに使う には、修正しなければならない。もしこのまま使うと、例えば INDY ではものすごく反応 が遅くなるなどの不具合がでる。結局ありもしないホストをず−と検索していく訳である。 * Solaris 2.6 で in.named バ−ジョン 4.9.7 での参考ログ `23/04/24 # /usr/sbin/in.named と起動すると /var/adm/messages ファイルにログが残る。よい子 では、まさに下のような制御ファイルで稼働させてきた。マシンを起動する際、ディスプ レイに in.named のワ−ニングのようなのが出ていた、タラタラっと流れていくので、何 が出ていたか不明である。多分 messages ファイルに記録されているのでないのか。とも かく以下のようなログは残されていた。 /etc/named.hosts --------------------------------------------------------------------------- |;name ttl class type record specific information |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1996040101 ;serial | 3600 ;refresh | 300 ;retry << この値は900以 | 3600000 ;expire 上でないとダメな | 3600 ) ;minimum のかな。 | | 以下続く # more /var/adm/messages | Apr 24 16:04:54 hostA named[1242]: starting. named 4.9.7-REL 1999年08月02日 (月) 17時02分07秒 JST Apr 24 16:04:54 hostA root@hostA:/usr/local/source/bind-4.9.7/named Apr 24 16:04:54 hostA named[1242]: /etc/named.hosts: WARNING SOA retry value is less then maintainance interval (300 < 900) Apr 24 16:04:54 hostA named[1242]: /etc/named.rev: WARNING SOA retry value is less then maintainance interval (300 < 900) Apr 24 16:04:54 hostA named[1242]: /etc/named.local: WARNING SOA retry value is less then maintainance interval (300 < 900) Apr 24 16:04:54 hostA named[1242]: Ready to answer queries. /etc/named.run << # in.named -d 5 & とやって出したログ。正常なようである。 ---------------------------------------------------------------- |Debug turned ON, Level 5 |Version = named 4.9.7-REL 1999年08月02日 (月) 17時02分07秒 JST | root@hostA:/usr/local/source/bind-4.9.7/named |bootfile = /etc/named.boot |fclose(4) succeeded ※以前の named のバ−ジョンではこの |close(20) succeeded ログは /var/tmp/named.run にあった。 |close(20) succeeded |close(20) succeeded |close(20) succeeded |close(20) succeeded * INDY IRIX 5.3 にあったDNS制御ファイル作成ユ−ティリティ % cd /var/named;ls -F Examples/ README mkdns/ named.boot@ README --------------------------------------------------------------------- |How to set up BIND v4.8.3 named database files: $Revision: 1.16 $ |-------------------------------------------------------------------- | |Please read the chapter on BIND in the "IRIX Advanced Site and |Server Administration Guide" and the named(1M) manual page first. | |Files: |------ | |The following files in /var/named/Examples are templates that must |be customized for your environment. These example files may be updated in the |next IRIX release. | |named.boot.master - boot file for a master name server |named.boot.slave - boot file for a secondary name server |named.hosts - The host-address data base for your domain |named.rev - address-hosts (PTR) records for your domain, so that | the .IN-ADDR.ARPA domain works |localhost.rev - PTR data for localhost |root.cache - data for the name server's initial cache for | machines connected to the Internet | | % ls -F /var/named/mkdns local.make.script mkdns* subfoo.hosts.soa subfoo.soa local.make.script --------------------------------------------------------------------- |# Example Makefile to generate DNS hosts from the NIS hosts database | | % ls /var/named/Examples localhost.rev named.boot.slave named.rev named.boot.master named.hosts root.cache * ここに dig コマンドの事を入れた `2h/12/s インタ−ネットへ このマシンは例えばEWSの Sun だったり、Linux の DOS/V だっ : たり、アプライアンスの NetAttest だったり。 マシンのなかでは : □マシン DNSサ−バが動いている、nslookup や dig コマンドもある。 : |DNS,dig ----------------- # dig @127.0.0.1 www.asahi.com 説明なしで分かるだろう。 □DNS □cman.jp # dig @X.1 www.asahi.com DNSサ−バは X.1 を指定して名 |X.1 |Service 前解決してくれということになる。 ---------------- : www.cman.jp 画面で dig実行 画面で dig コマンドをやっている : □マシン ホスト名(FQDN) [asahi.com] だけ。応答時間は X.1 の状態によ : |dig DNSサ−バを指定[ X.1 ] る。X.1 で asahi.com を既にキャ ---------------- ッシュしていれば応答は速くなる。 ------------------------------------------------------------------------------------- [ 付録 ] INDY IRIX 5.3 にあったユ−ティリティのサンプル・ファイル named.boot.master --------------------------------------------------------------------- |; boot file for authoritive master name server for Berkeley.EDU |; Note that there should be one primary entry for each SOA record. |; |sortlist 10.0.0.0 | |directory /var/named |; type domain source host/file backup file |cache . root.cache |primary Berkeley.EDU named.hosts |primary 32.128.IN-ADDR.ARPA named.rev |primary 0.0.127.IN-ADDR.ARPA localhost.rev named.hosts --------------------------------------------------------------------- |; Authoritative data for Berkeley.EDU (ORIGIN assumed Berkeley.EDU) |; |@ IN SOA ucbvax.berkeley.edu kjd.ucbvax.berkeley.edu ( | 1986020501 ; Serial | 10800 ; Refresh 3 hours | 3600 ; Retry 1 hour | 3600000 ; Expire 1000 hours | 86400 ) ; Minimum 24 hours | IN MX ucbvax 10 | IN NS monet |localhost IN A 127.1 |ucbarpa IN A 10.0.0.78 | IN A 128.32.0.4 | IN HINFO VAX-8600 UNIX |arpa IN CNAME ucbarpa |ucbvax 9999 IN A 10.2.0.78 | IN A 128.32.0.10 | IN HINFO Microvax3200 UNIX |ucb-vax IN CNAME ucbvax |monet IN A 128.32.0.7 | IN HINFO VAX-11/750 UNIX |ucbmonet IN CNAME monet |kjd IN MB ucbarpa |dunlap IN MR kjd |group IN MINFO kjd kjd.Berkeley.EDU. | IN MG name1 | IN MG name2 named.rev --------------------------------------------------------------------- |; @(#)named.rev 1.1 (Berkeley) 86/02/05 | |@ IN SOA ucbvax.berkeley.edu kjd.ucbvax.berkeley.edu ( | 1986020501 ; Serial | 10800 ; Refresh 3 hours | 3600 ; Retry 1 hour | 3600000 ; Expire 1000 hours | 86400 ) ; Minimum 24 hours | IN NS ucbvax.Berkeley.EDU. |; RFC1101 format for encoding network names: |; Berkeley-net is the main network name, csdiv-net is a subnet name. |0.0 IN PTR Berkeley-net.Berkeley.EDU. | IN A 255.255.255.0 ; subnet mask |0.130 IN PTR csdiv-net.Berkeley.EDU. |2.129 IN PTR monet.Berkeley.EDU. |2.140 IN PTR ucbarpa.Berkeley.EDU. |3.132 IN PTR cad.Berkeley.EDU. |4.0 IN PTR ucbarpa.Berkeley.EDU. |5.0 IN PTR cad.Berkeley.EDU. |6.0 IN PTR ernie.Berkeley.EDU. |6.130 IN PTR monet-cs.Berkeley.EDU. |7.0 IN PTR monet.Berkeley.EDU. |7.130 IN PTR kim.Berkeley.EDU. |9.0 IN PTR esvax.Berkeley.EDU. |10.0 IN PTR ucbvax.Berkeley.EDU. |11.0 IN PTR kim.Berkeley.EDU. |11.156 IN PTR esvax-156.Berkeley.EDU. |38.131 IN PTR monet.Berkeley.EDU. named.boot.slave --------------------------------------------------------------------- |; @(#)named.boot.slave 1.13 (Berkeley) 87/07/21 |; |; boot file for secondary name server |; Note that there should be one primary entry for each SOA record. |; |sortlist 10.0.0.0 | |directory /var/named | |; type domain source host/file backup file | |cache . root.cache |secondary Berkeley.EDU 128.32.137.8 128.32.137.3 ucbhosts.bak |secondary 32.128.IN-ADDR.ARPA 128.32.137.8 128.32.137.3 ucbhosts.rev.bak |primary 0.0.127.IN-ADDR.ARPA localhost.rev localhost.rev --------------------------------------------------------------------- |; localhost.rev -- PTR record for 127.1 | |@ IN SOA ucbvax.Berkeley.EDU. kjd.ucbvax.Berkeley.EDU. ( | 1993090801 ; Serial | 3600 ; Refresh | 300 ; Retry | 3600000 ; Expire | 14400 ) ; Minimum | IN NS ucbvax.Berkeley.EDU. |0 IN PTR loopback.ucbvax.Berkeley.EDU. |1 IN PTR localhost. root.cache --------------------------------------------------------------------- |; This file holds the information on root name servers needed to |; initialize cache of Internet domain name servers |; (e.g. reference this file in the "cache . " |; configuration file of BIND domain name servers). |; |; This file is made available by InterNIC registration services |; under anonymous FTP as |; file /domain/named.root |; on server FTP.RS.INTERNIC.NET |; -OR- under Gopher at RS.INTERNIC.NET |; under menu InterNIC Registration Services (NSI) |; submenu InterNIC Registration Archives |; file named.root |; |; last update: April 21, 1993 |; related version of root zone: 930421 |; |. 99999999 IN NS NS.INTERNIC.NET. |NS.INTERNIC.NET. 99999999 A 198.41.0.4 |. 99999999 NS KAVA.NISC.SRI.COM. |KAVA.NISC.SRI.COM. 99999999 A 192.33.33.24 |. 99999999 NS C.NYSER.NET. |C.NYSER.NET. 99999999 A 192.33.4.12 |. 99999999 NS TERP.UMD.EDU. |TERP.UMD.EDU. 99999999 A 128.8.10.90 |. 99999999 NS NS.NASA.GOV. |NS.NASA.GOV. 99999999 A 128.102.16.10 | 99999999 A 192.52.195.10 |. 99999999 NS NS.NIC.DDN.MIL. |NS.NIC.DDN.MIL. 99999999 A 192.112.36.4 |. 99999999 NS AOS.ARL.ARMY.MIL. |AOS.ARL.ARMY.MIL. 99999999 A 128.63.4.82 | 99999999 A 192.5.25.82 |. 99999999 NS NIC.NORDU.NET. |NIC.NORDU.NET. 99999999 A 192.36.148.17 |; End of File