授業資料/第11回 の変更点

Top / 授業資料 / 第11回

#contents

* DNS 逆引きの仕組み [#he054150]

BIND の設定を始める前に,逆引きの仕組みについても触れておこう.
実は,利用者のよくある直感と異なり,DNS の逆引き(IP アドレスから他の情報を知る)に特別な仕組みは用意されていない.

IP アドレスも FQDN のように階層構造をしていることを利用して,
「IP アドレスもホスト名の一種であるとみなして DNS の仕組みに紛れ込ませる」
ことで逆引きを実現している. 

具体的には,"in-addr.arpa." という逆引き専用の特別なドメインの下に,IP アドレスを逆向きにしてホスト名とみなして DNS で取り扱う.
&ref(./warning.png); ドメインのツリー構造と,IP のツリー構造の向きが「逆」なことに注意せよ.

例えば,192.168.125.91 という IP アドレスは,91.125.168.192.in-addr.arpa. というホスト名で DNS で登録,検索されることになる.

CENTER:&ref(./inverse-IPdomain.png);
CENTER:IP が 192.168.125.91 であるマシンの逆引き用ドメインの構造

&br;

逆引き設定ではこの知識が必要なので覚えておこう.

dig コマンドなどで,上の仕組みを実感してみよう.
具体的には,例えばマシン q01.cl.math.sci.osaka-u.ac.jp = 192.168.125.91 に対して

  host -t PTR 91.125.168.192.in-addr.arpa.

とすると,

> 91.125.168.192.in-addr.arpa domain name pointer q01.cl.math.sci.osaka-u.ac.jp.

として,確かにこの引き方で答えが返ってくることが分かる.
(ただし,これを毎回やるのは面倒だからか,たいていのコマンドは IP アドレスをそのまま直接入力してもコマンド側で解釈し直してくれる)

同様に,dig コマンドでも,

  dig -t PTR 91.125.168.192.in-addr.arpa.

とすればよいし,nslookup コマンドでも,

  nslookup -q=PTR 91.125.168.192.in-addr.arpa.

とすれば,本来の形での逆引きができる.

&ref(./warning.png); 上の例では,問い合わせタイプをレコード "PTR" にしているが,これは "ANY" にしてもよいだろう. 

&ref(./notes.png); 自分のマシンの IP アドレスを使って,上の host, dig, nslookup コマンドを行ない,自分のマシン名がきちんと返ってくるか確かめてみよう.

* DNS 問い合わせクライアントの設定 [#m5cfe5be]

サーバ BINDの設定の前に,DNS の問い合わせの設定は FreeBSD でどのようにされているか書いておこう.
FreeBSD では DNS 問い合わせを行う時の設定は基本的に /etc/resolv.conf というファイルに書き込むことになっている.
詳細は man resolv.conf もしくは jman resolv.conf としてマニュアルを読んでもらうことにして,最低限の説明を書いておこう.

| オプション | 例(どれも1行で書かれる) | 説明 |h
| nameserver | nameserver  192.168.125.14 | DNS の(再帰的)問い合わせ先. もちろん受け付けてくれる相手でないといけない. nameserver オプションは 3つまで指定でき,上から順に試される. |
| domain | domain cl.math.sci.osaka-u.ac.jp | ローカルドメイン名. これを書いておけば,ローカルドメインに所属するホストを検索する際に最初の . 以降を省略できる. search とは排他的. |
| search |  search math.sci.osaka-u.ac.jp sci.osaka-u.ac.jp | 検索の際,補完するために使われるドメインのリスト. 空白で区切る. domain とは排他的. |

&ref(./notes.png); /etc/resolv.conf の search オプションを設定して,活用してみよう.
具体的には,

>  search cl.math.sci.osaka-u.ac.jp math.sci.osaka-u.ac.jp sci.osaka-u.ac.jp

という行を /etc/resolv.conf に加えた後,
&ref(./warning.png); 1行で書くこと!

 host www

や

 dig +search -t ANY mail

などとしてみよう.
&ref(./warning.png); dig コマンドは,デフォルトでは search オプションを無視するので, +search としておく.

* DNS サーバの多重化 [#r6504da1]

さて,そろそろ DNS サーバの話に移ろう.
まず DNS サーバの多重化について述べておこう.

DNS サーバはインターネットで非常に重要な役割を果たすものであるので,あるドメイン情報を管理しているサーバが 1台しかない,という状態はあまりにも心細く,避けるべきである.
そこで,DNS サーバは基本的に2箇所以上に多重化することになっている.
&ref(./warning.png); いままで dig 等で DNS 情報を見たときに,どのドメインの担当サーバも複数あったことを思い出そう.

そして,多重化した際のデータの整合性や更新についても,きちんとした仕組みが考えられている. 

これは,1つのゾーン(1つの DNS 情報の責任範囲と思えばよい)について,そのオリジナル情報をもつサーバ ''マスターサーバ'' を1台と,そのコピー情報をもつサーバ ''スレーブサーバ'' を 1台以上用意すること,として実現される.
そうして,オリジナル情報がマスターサーバからスレーブサーバに定期的ないしは更新時にすぐコピーされることで,これら複数のサーバがほぼ同じ情報を持つ仕組みになっている.
これをゾーン転送という.ゾーン転送も DNS サーバの仕事なので,人間が手を下す必要は特にない.

なお,DNS 問い合わせを行うクライアントから見るとマスターサーバかスレーブサーバかの区別はあまり無く,単に「早く答えた奴」などから答えを得るようになっている.

* DNS サーバの親子関係 [#lb9157a0]

次に,DNS サーバの親子関係について述べよう.
各々の DNS サーバが局所的な情報を持っているだけで全体がうまくいく仕組みのポイントがこれであるので,しっかり理解しよう.

まず,DNS が階層的であり,その情報を管理する DNS サーバも階層的になっていることは先の授業の dig +trace の例で理解できているだろう.

さて,ではその階層,親子関係(親がより大きなドメインを,子はその中のサブドメインを管理しているサーバということになる)は実際にどのように管理されているだろうか.

これは,「親サーバが,子サーバがサブドメインを管理していることを知ってさえいればよい」ことを利用して管理されている.
&ref(./warning.png); 子は親を直接知る必要はない. なんなら一番上の祖先(ルートサーバ13台)からたどれば済むのだから.

具体的には,親サーバのそのゾーン(ドメイン)情報の中に,子サーバが管理するゾーン(ドメイン)とその子サーバの対応が書かれていればよい.
&ref(./warning.png); これが DNS サーバ管理の一番のポイントだ. ここさえわかれば実はそんなに難しくない.

分かり易いように具体例で書こう.
例えば,ある親サーバが aaa.com ドメインを管理していて,子サーバ ns.sub.aaa.com(192.168.125.105) がサブドメイン sub.aaa.com を管理するとしよう.
この時は,親サーバの aaa.com ゾーン情報内に

>  sub.aaa.com.  IN NS  ns.sub.aaa.com.
>  ns.sub.aaa.com. IN A 192.168.125.105

と書くことになる. 
&ref(./warning.png); 当たり前だが,二行目の情報がここに書いてあるか他のDNSから引けないと,ns.sub.aaa.com. にアクセスできないので意味がない.

さて,この話を逆に言えば,
「親サーバが,子サーバがサブドメインを管理していることを知らない」= 「親サーバで上のような設定をしていない」
状況にすれば,そのサブドメインの情報は「子サーバに直接問い合わせる人たちしか知らない」ので,あくまでローカルにサブドメインを使うことも可能である.
自宅でのみ通用するサブドメインなどは,こうして管理するという手もあるだろう.
もちろん,この場合はこのサブドメイン情報を使って外からアクセスすることはできない.


* BIND の基本設定 [#m9a6d616]

BIND の仕事はゾーン設定やリゾルバ(DNS問い合わせに答えること)などがあるわけだが,まずは動かすために最低限の設定を行ってみよう.
これだけでも充分意味がある.

** named.conf の設定 [#r8d1d939]

/etc/namedb (本当は /var/named/etc/namedb )以下に,BIND 自身の設定ファイルである named.conf がある.
これを書き換えれば,BIND の大まかな動作が変えられる. 
ちなみに,named.conf の文法チェック専用に named-checkconf というコマンドがあるので覚えておこう.

さて,コメントを無視すると,デフォルトではこのファイルには次のような項目しかないだろう.

>  options {
>       directory    "/etc/namedb";
>       pid-file     "/var/run/named/pid";
>       dump-file    "/var/dump/named_dump.db";
>       statistics-file "/var/stats/named.stats";
>       listen-on    { 127.0.0.1; };
>       disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
>       disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
>       disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
>       forwarders {
>            127.0.0.1;
>       };
>  };
>  &br;
>  zone "." { type hint; file "named.root"; };
>  &br;
>  zone "localhost"        { type master; file "master/localhost-forward.db"; };
>  zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
>  zone "255.in-addr.arpa" { type master; file "master/empty.db"; };
>  &br;
>  zone "0.ip6.arpa"       { type master; file "master/localhost-reverse.db"; };
>  &br;
>  zone "0.in-addr.arpa"           { type master; file "master/empty.db"; };
>  &br;
>  zone "10.in-addr.arpa"          { type master; file "master/empty.db"; };
>  zone "16.172.in-addr.arpa"      { type master; file "master/empty.db"; };
>  zone "17.172.in-addr.arpa"      { type master; file "master/empty.db"; };
>  zone "18.172.in-addr.arpa"      { type master; file "master/empty.db"; };
>  …似たような設定が続くので略…

これをみるとおおよそ分かるように,このファイルの設定形式は単純で,options か zone ぐらいしか設定項目はなさそうだ.
実際には他に acl(アクセス制限をかける), include(ファイルを別に読み込む), server(他の DNS サーバとの接続設定)などが設定できるが, まあ今は気にしなくてよいだろう.

*** named.conf の options [#fe19397f]

named.conf を編集する前に, いつものようにまずはバックアップをとろう.
&ref(./warning.png); いつでもとにかくバックアップだ! 癖にしてしまおう.

さて,options では BIND 自身の動作を決めるオプションを設定する.
デフォルトで書かれているものはほぼそのまま使えるものとして,ほとんどいじらないでもよい.

&ref(./notes.png); ただし,これから皆のサーバは各々他からの問い合わせにも答える DNS サーバとして設定しよう.
そのためには,他のマシンからの問い合わせを無視しないように設定を変更する.

そこで,自分自身からの問い合わせ「のみ」を許可している設定である lisen-on 部分を,
>  //      listen-on       { 127.0.0.1; };
と, コメントアウトして無効にしておこう.

他に options で設定によく使いそうなものとしては以下のものがあるので,説明しておこう.

| ステートメント | 設定例 | 説明等 |h
| forward | forward only; もしくは forward first; | only の場合,自分で持っていない情報は全て人任せ(^-^) first の場合は,まず人に任せて,ダメなら自分でなんとかする. |
| forwarders | forwarders {192.168.125.xxx; 192.168.125.yyy;}; | forward する相手 |
| recursion | recursion yes; もしくは recursion no; | BIND が再帰的問い合わせを行うかどうか. 行わない場合は純粋にゾーン情報提供者となる.  |
| allow-query | allow-query { 192.168.125.xxx; 127.0.0.1; }; | 問い合わせを受け付けるホスト名の列挙. 指定しないと(デフォルト),どこからでも受け付ける.  |
| allow-recursion | allow-recursion { 192.168.125.xxx; 127.0.0.1; }; | 再帰的問い合わせを受け付けるホスト名の列挙. 指定しないと(デフォルト),どこからでも受け付ける.  |
| allow-transfer | allow-transfer { 192.168.125.xxx; 127.0.0.1; }; | ゾーン転送を受け付けるホスト名の列挙. 指定しないと(デフォルト),どこからでも受け付ける.これは通常は管理者サーバとスレーブサーバのみにしておくのがよいとされる.  |

他にも細かい設定が沢山あるので,興味ある人は (j)man named.conf としてマニュアルを眺めてみよう.

&ref(./notes.png); さて,まずは「全部人任せにしてしまう」設定にしてみよう.
named.conf の options 部分を注意深く修正して,次の内容になるようにしておこう. 

>  forward only;
>  forwarders { 192.168.125.14; };

&ref(./warning.png); named.conf の書式では,二種類の「コメントアウト」が使われているので,それに囲まれているかどうかによく気をつけよう.
コメントアウトされているところに何を書きこんでも,設定に反映されない.

修正したら,念の為に named-checkconf でチェックしておこう.

  named-checkconf

何も言われなければ,文法上の問題はないということだ. 安心して次へ進もう.

// あと,念の為に
//   named-checkconf -z
// ともしておこう(エラーがでるはずだ. 詳しくは後述.). 

// *** 実習 [#w2df7607]
// 上までの作業を行え. 
// また,上の設定の意味を述べよ(listen-on 設定の意味も調べておこう).

*** named.conf の zone [#v248cc34]

また,named.conf には zone という項目がある.
これが「自分が管理するゾーン(ドメインと思ってよい)についての情報」を設定するところだ.
ただ,良くみると分かるように,具体的な情報は named.conf にはほとんど書かれておらず,

>   file "named.root";

などとして別ファイルから読み込むようになっている.

さて,先にまずここでは named.conf での zone について説明しよう.
zone 項目は一般に

>  zone "ゾーン名(≒ドメイン名)" {
>     type ゾーンのタイプ; &color(blue){← 多重化サーバとして,自分が「オリジナル」なのか「コピー」なのかを,master, slave などとして区別する.};
>     file 具体的な設定内容を書いてあるファイル名;
>     masters { マスターサーバの IPアドレス }; &color(blue){← ゾーンタイプが slave の場合};
> };

という形をしている.

以下,説明しよう.

+++ ゾーン名はまあわかるだろう.
+++ ゾーンのタイプは,全部で hint(ルートサーバ用の特別なものと思ってよい. より正確には,「情報を自前でもつが,マスターでもスレーブでもない状態」), master(自分がマスターサーバであることを意味する), slave(自分がスレーブサーバであることを意味する) の3種類と思っておけばよい.
+++ masters は,自分がスレーブサーバである場合に,データをくれるマスターサーバを指定するためにある.
+++ file は,自分がマスターサーバの場合は自分で作り,master ディレクトリの下に置く.
++ ゾーン名はまあわかるだろう.
&br;
++ ゾーンのタイプは,全部で hint(ルートサーバ用の特別なものと思ってよい. より正確には,「情報を自前でもつが,マスターでもスレーブでもない状態」), master(自分がマスターサーバであることを意味する), slave(自分がスレーブサーバであることを意味する) の3種類と思っておけばよい.
&br;
++ masters は,自分がスレーブサーバである場合に,データをくれるマスターサーバを指定するためにある.
&br;
++ file は,自分がマスターサーバの場合は自分で作り,master ディレクトリの下に置く.
自分がスレーブサーバの場合,slave ディレクトリの下にコピーされてくるので,そういうファイル名にしておく.

さて,デフォルトの設定を "file" 項目に着目して分類してみると,おおざっぱにいって,「ルートドメイン」,「自分自身」,「自分自身の逆引き」,「その他の(今は)使わないもの?」 が既に設定されていることがわかる.
&ref(./warning.png); master/empty.db ファイルは, 設定に使える「雛形」ファイルのようだ.

つまり,とりあえずこれで最低限は動きそうだ.
&ref(./warning.png); 最悪でも,ルートドメインの情報さえあればよいことは以前勉強したとおりだ.

// そしてそれらを良く読むと,zone "0.0.127.IN-ADDR.ARPA"((自分自身 127.0.0.1 の"上"ドメインの逆引き用)) と zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"((自分自身の"上"ドメインの逆引き用 IPv6 ))の設定が書かれているはずのファイル master/localhost.rev と master/localhost-v6.rev"が存在していないことに気づく.
// そこでまずはこれらのファイルを作ろう.
// とはいってもとくに考える必要はなくて,root で
//  cd /etc/namedb
//  sh ./make-localhost
//とすれば自動的にこれらのファイルが作られるようになっているので,そうしよう.

// これでとりあえずデフォルト設定 +アルファ が済んだはずなので,まずは
//  named-checkconf -z 
// として,エラーがでないかチェックしよう.

** 最低限の起動チェック [#b5409769]

&ref(./notes.png); とりあえず,これで BIND は最低限は動くはずだ. 試してみよう.

ということで,/etc/resolv.conf の nameserver 項目を

>  nameserver 127.0.0.1

と修正し,/etc/rc.conf に

>  named_enable="YES"

を適切な場所に書き込んだ上でリブートしよう((昔は named_flags にいろいろ設定しないといけなかったが,今はデフォルトで bind ユーザで chroot されるので,これだけでよい. )).

そして,起動したらまず

  ps -axuww | grep named

としてみよう.

>  /usr/sbin/named -t /var/named -u bind

というのが見い出せれば,設定はひとまずうまくいっている.

さらに,

  dig www.osaka-u.ac.jp

などとしてみる. そのとき,

>  ; <<>> DiG 9.4.2 <<>> www.osaka-u.ac.jp
>  ;; global options:  printcmd
>  ;; Got answer:
>  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38608
>  ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
>  &br; 
>  ;; QUESTION SECTION:
>  ;www.osaka-u.ac.jp.       IN           A
>  &br;
>  ;; ANSWER SECTION:
>  www.osaka-u.ac.jp.           213263       IN           A            133.1.8.18
>  &br;
>  ;; AUTHORITY SECTION:
>  osaka-u.ac.jp.               213263       IN           NS           b.osaka-u.ac.jp.
>  osaka-u.ac.jp.               213263       IN           NS           sigw.sinet.ad.jp.
>  osaka-u.ac.jp.               213263       IN           NS           a.osaka-u.ac.jp.
>  &br;
>  ;; ADDITIONAL SECTION:
>  a.osaka-u.ac.jp.             217104       IN           A            133.1.192.3
>  sigw.sinet.ad.jp.            40463        IN           A            150.100.2.2
>  b.osaka-u.ac.jp.             217776       IN           A            133.1.119.3
>  &br;
>  ;; Query time: 0 msec
>  ;; &color(red){SERVER: 127.0.0.1#53(127.0.0.1)};
>  ;; WHEN: Thu Jan 29 01:57:02 2009
>  ;; MSG SIZE  rcvd: 159

などとなり,127.0.0.1,つまり自分自身が DNS サーバとして問い合わせに答えたことがわかる(実際は知らない情報は全て 192.168.125.14 に任せているわけだが).
これで,少なくとも BIND の動作が確認できたことになる.

* BIND でゾーン設定 [#e8aaec77]

さて,BIND の本質的お仕事である,ゾーン(ドメイン)設定をしてみよう.
つまり,自分の「下」にドメインを作るのだ!

それでは,各自のマシンで実際にサブドメインを作って, その中に5台ある状態を管理するという設定で BIND を設定してみよう.
まず,各々のサブドメインは次のようなものとする.

[[授業資料/第03回 ネットワークの設定>授業資料/第03回#f242101a]] の PC 番号をもとに,

| 項目 | 設定値 | 備考 |h
| サブドメイン名 | sub&color(red){PC番号};.cl.math.sci.osaka-u.ac.jp | アルファベットの "sub" を番号の前につける. ただし,一桁の場合は 0 がついているので注意. 例えば,PC の番号が 08 の場合,sub08 である. |
| 使える IP | 192.168.125.&color(red){105+(5*PC番号)}; 贈ォ 192.168.125.&color(red){109+(5*PC番号)}; の5つ | 何も全部つかう必要はない. |
| スレーブサーバ | 誰か来ている人と組んで,その人のサーバとする | スレーブサーバは何台あってもよいので,3人,4人で組んでも問題ない |

としよう.

&ref(./notes.png); この後の作業を行う前に,forward only 設定を外しておこう.
具体的には,/etc/namedb/named.conf の forward only 行を「コメント」して,無効にしておけばよい.

** マスターサーバの設定 - named.conf の設定 [#d144237f]

&ref(./notes.png); では,上記の設定に沿って作業しよう.
例えば,PC 番号が 17 のマシンでは

>  zone "sub17.cl.math.sci.osaka-u.ac.jp" {
>          type master;
>          file "master/sub17.db";
>  };

という設定を named.conf に加えて,zone "sub17.cl.math.sci.osaka-u.ac.jp" の管理を自分で(マスターサーバとして)行う! と宣言する.

もちろん,こうした設定を加えたら

  named-checkconf

として設定ミスがないかチェックしておこう.

** マスターサーバの設定 - ゾーンファイル の設定 [#v018ab61]

&ref(./notes.png); 次に,肝心の情報を書きこむゾーンファイルを作り,設定しよう.
上の例の場合だと,master/sub17.db となる.
まず,雛形である empty.db をコピーしてファイルを作ろう.
例えば,

  cd /etc/namedb/master
  cp empty.db sub17.db

とする. それから,sub17.db を適宜編集して,今の例では


>  $TTL    3600
>  @       IN      SOA     q17.cl.math.sci.osaka-u.ac.jp. root.q17.cl.math.sci.osaka-u.ac.jp.  (
>                                  2009012301      ; Serial
>                                  3600    ; Refresh
>                                  900     ; Retry
>                                  3600000 ; Expire
>                                  3600 )  ; Minimum
>          IN      NS      q17.cl.math.sci.osaka-u.ac.jp.
>  test01  IN      A       192.168.125.190
>  test02  IN      A       192.168.125.191
>  test03  IN      A       192.168.125.192
>  test04  IN      A       192.168.125.193
>  test05  IN      A       192.168.125.194

などとする. 
以下,内容を少し説明しよう.

++ SOA の項目は,この情報の「責任をとるホストと,責任者のメールアドレス,シリアル値,有効時間等」である.
ちなみに,シリアル値はこのゾーンファイルの「新しさ」を示す値で,これが大きくなるとゾーンファイルが更新されたこととなり,ネットワークに更新された情報が流れることになる.
&ref(./warning.png); だから,ゾーンファイルを編集, 更新したら必ず Serial 値を増やしておかないといけない. ちなみに Emacs を使ってゾーンファイルを zone モードで編集すると,Serial 値が自動的に増える. ありがたい…
&br;
++ NS の項目は,この情報についての問い合わせに答えるネームサーバ(この場合は自分).
&ref(./warning.png); NS の設定は A などの設定よりも前でないとまずいようだ.
&ref(./warning.png); NS の設定は FQDN で書くということにも注意しよう.
&br;
++ A で並んでいる項目が,肝心の「管理している」情報そのもの.

さて,これで zone 設定ファイルとしてはとりあえず動くはずである.

また,設定全体については,つぎの項目を知っていれば大体大丈夫だ.
| 項目 | 説明 |h
| 各行の書き方 | ''名前 IN レコード名 設定'' と書かれることになっている |
| @ | named.conf で指定したそのゾーン名. 上の例だと sub17.cl.math.sci.osaka-u.ac.jp. となる. |
| 何も書いてないところ | @ と解釈される. 分かりにくいが,''IN NS q17.cl.math.sci.osaka-u.ac.jp.'' の行頭がそれに相当する. |
| .で終わっていないマシン名等 | .@ が補われる |
 
&ref(./notes.png); さて,この zone ファイルをチェックしよう. 

  named-checkzone ゾーン名  チェックしたいゾーンファイル

とすればチェックできる.  この例では,

  named-checkzone sub17.cl.math.sci.osaka-u.ac.jp ./sub17.db

として,エラーがでなければよい.

うまくいったら,BIND に設定ファイルを読み直させよう. それには

  rndc reload

とすればよい.

さて,動作を確認しよう. それには,他のマシンからこの場合は

  dig test01.sub17.cl.math.sci.osaka-u.ac.jp

などとして

>  ;; ANSWER SECTION:
>  test01.sub17.cl.math.sci.osaka-u.ac.jp. 2959 IN A 192.168.125.190

が得られればよい.

** スレーブサーバの設定 [#vecc2323]

&ref(./notes.png); 次に,スレーブサーバの設定をしてみよう.
これはマスターより「設定は」簡単である…が,マスターとスレーブの関係を理解していないとできないので,よくよく考えよう.

例えば,sub16.cl.math.sci.osaka-u.ac.jp ドメイン(マスターサーバは q16.cl...) のスレーブサーバを q17 が引き受けるとしよう.
この時に行う設定は二カ所だけである.

*** マスター側のゾーンファイルにスレーブサーバを NS として加える. [#if1cfb63]

具体的には,

>  IN  NS  q17.cl.math.sci.osaka-u.ac.jp.

をサーバ q16 のゾーンファイルに加えておくだけである(ただし,レコード A の設定等より前に書いておこう).

*** スレーブ側の named.conf でスレーブサーバ宣言をする [#dca8daa1]

サーバ q17 の named.conf に

>  zone "sub16.cl.math.sci.osaka-u.ac.jp" {
>          type slave;
>          masters { 192.168.125.106; }; ← q16 のアドレス
>          file "slave/sub16.db";
>  };

と書き加えるだけである.  "slave/sub16.db" というファイルは勝手にコピーされてくるので作ったりいじったりしなくてよい(というか,いじってはいけない).

&ref(./notes.png); 誰かと組んで,スレーブサーバ設定まで行ってみよう.
また,動作確認を行ってみよう.

具体的には,設定/動作までできたと思ったら,上の例で言えば他のマシンから

  dig -t NS sub16.cl.math.sci.osaka-u.ac.jp

などとしてみて,sub16.cl.math.sci.osaka-u.ac.jp の NS として,設定した複数のサーバが表示されることを確認すればよい.
他にも,スレーブサーバの /etc/namedb/slave にコピーされてくるはずのゾーンファイルを直接眺めてみるという手もある.

** 逆引き設定 [#zaf66a57]
これは実は「親サーバの事情/設定」で大きく変わってくるのであまり一般的でない… のでとりあえず省略しておく.

* レポート [#n180fa22]
* レポート [#o66d2b43]
途中で「調べよ」と指示された事項について調査を行い,報告せよ.
今回は NS, A レコードしか設定しなかったが,MX 等も設定してみよ.
// また,5つの IP を使いきってみよ.

また,本日行った作業について報告せよ.
もちろん各自の

+ 所属(学部,学科)
+ 学籍番号
+ 学年
+ 氏名
+ 日時
+ 肝心のレポート内容(得た知見,作業について気づいたこと等)

を書くのを忘れないように. 

* about Icons [#p90706c9]
Some icons in this page are downloadable at [[ICONFINDER:http://www.iconfinder.net/]].
The "note" icon &ref(./notes.png); designed by [[Marco Martin:http://www.notmart.org/]] is distributed with the LGPL licence
and the "warning" icon &ref(./warning.png); designed by [[Alexandre Moore:http://nuovext.pwsp.net/]] with the GPL licence.
Thank you Marco and Alexandre!

// &ref(./notes.png);
// &ref(./warning.png);