材料
材料の入手
Solaris2.6 に付属の bind を使用します。バージョンは named 4.9.4-P1 のようです。
named のコンパイルは別の機会にしますね。:)
下拵え
設定のために以下の項目は決めておきましょう。
まぁ、ちゃんとして設定なら JPNIC などで IP アドレスやらドメイン名を取得 ( 登録 ) しなくちゃいけないんでしょうけど、今回は閉じたローカルな設定で料理します。適当な例で進めますので、個々を読み替えてください。
- primary サーバーのホスト名 : pochi
- primary サーバーの IP アドレス : 192.168.1.26
- secondary サーバーのホスト名 : tama
- secondary サーバーの IP アドレス : 192.168.1.27
- 管理されるコンピュータのホスト名 : shiro, mike
- 管理されるコンピュータの IP アドレス : 192.168.1.28, 192.168.1.29
- ドメイン名 : mystery.org
- named の設定ファイルの格納場所 : /var/named
/etc/named.boot の料理
/etc/named.boot は基本的なファイルになります。これがあると /etc/rc2.d/S72inetsvc があるので、起動時に読み上げて named が起動するようになります。ファイルにミスがあると起動時にエラーの山を築けます。 :)
基本的に named の各設定ファイルがどこにあるか記述するファイルのようです。
コメント行はセミコロン [ ; ] ですよ。
# vi /etc/named
;
; /etc/named.boot
;
directory /var/named
cache . root.cache
primary mystery.org mystery.zone
primary 1.168.192.in-addr.arpa mystery.rev
primary 0.0.127.in-addr.arpa localhost.rev
# chmod 644 /etc/named.boot
# chown root /etc/named.boot
# chgrp sys /etc/named.boot
# mkdir /var/named
# chmod 755 /var/named
# chown root /var/named
# chgrp sys /var/named
各行の説明内容ですが、
- directory /var/named
named の各設定ファイルの格納されているディレクトリを指定します。どこでもいいみたいすけど、 /var/named とか /etc/named が多いみたいです。
まぁ、 /var/named ということでディレクトリを作成しています。
- cache . root.cache
ルート・ネームサーバーの情報を収めたデータベースファイルを記述します。
root.cache がファイル名になります。
. は、情報が反映されるドメインになります。ルーとネーム・サーバーですので、ドメインはルート . になります。
- primary mystery.org mystery.zone
primary server として mystery.org を管理する事を宣言して、その設定ファイルは mystery.zone だよとなります。
- primary 1.168.192.in-addr.arpa mystery.rev
primary server として逆引き用のドメインとデータベースファイルを指定しています。
逆引きなので IP アドレスの表記が逆になっています。 192.168.1.26 のマシンなので、 1.168.192.in-addr.arpa になります。
ファイル名は mystery.rev ね。
- 0.0.127.in-addr.arpa localhost.rev
ローカルホストを管理する事を宣言して、その設定ファイルは localhost.zone だよとなります。127.0.0.1 は、ローカルを示す特殊な IP アドレスだそうで、それを使用します。
/var/named/root.cache の料理
/var/named ( /etc/named.boot の directory で指定したパスね ) にルート・ネームサーバーのデータベースファイルを作成しましょ。
# vi /var/named/root.cache
;
; /var/named/root.cache
;
. 99999999 IN NS pochi.mystery.org.
pochi.mystery.org. 99999999 IN A 192.168.1.26
# chmod 644 /var/named/root.cache
# chwon root /var/named/root.cache
# chgrp system /var/named/root.cache
閉じたネットワークですから上位のルート・サーバーに問い合わせる必要がないので、こんな感じになります。
もし外につながるような設定の場合は、 ftp://ftp.rs.internic.net/domain/named.root から最新のルート・ネームサーバーの情報を得る事ができます。現在は 11 個程度でしょうか。
ちょっと休憩
named の各データベースファイルを構成やキーワード (?) ってほぼ同じですので、まとめて書いておきます。たぶんこれでいいと思います。う〜ん。
キーワード |
A ( Address ) |
IP アドレス |
ホスト名から IP アドレスへのマッピングについて定義する。
|
PTR ( PointTeR ) |
計算機名 |
IP アドレスからホスト名へのマッピングを定義する。
|
SOA ( Start Of Authority ) |
データのはじまり |
primary サーバー名や設定ファイルの有効期間とか secondary サーバーのキャッシュ時間などを定義する。
|
NS ( Name Server ) |
ネームサーバー |
primary サーバー及び secondary サーバー名を定義する。
|
CNAME ( Cannonical NAME ) |
計算機の別名 |
あるホスト名が別名である場合にこのレコードを使用する。
$ORIGIN mystery.org.
www IN CNAME pochi.mystery.org.
だと www.mystery.org は pochi.mystery.org のエイリアスとして定義される。
CNAME で定義された名称に対して他の記述をしたり、さらに CNAME したりすると混濁するのでダメですよ。
|
MX ( Mail eXchanger ) |
電子メール配送先 |
メールアドレスからメールを受け取るホストへのマッピングを書く。 MX レコードには受信ホストの優先順位に合わせて指定する。小さい値から順番に配送される。
|
HINFO ( Host INFOrmation ) |
計算機の情報 |
|
TXT ( TeXT ) |
任意の文字列 |
|
WKWN ( WellKnoWN service ) |
よく知られたサービス |
|
各ファイルとも SOA レコードからはじまります。 SOA レコードの書式は、
@ IN SOA pochi.mystery.org. root.mystery.org. (
19981115 ; Serial
10800 ; Refresh
1800 ; Retry
4320000 ; Expire
86400 ) ; Minimum
になります。各記述子の内容は、
- @
データベースの起点を示してます。 mystery.org なんですが、 @ を使用すると /etc/named.boot で指定されたドメイン名が割り当てられます。省略形ですね。
- IN SOA
キーワード (?) です。
- pochi.mystery.org.
named の各ファイルを管理する計算機名になります。
- root.mystery.org.
管理者のメールアドレスを書いておくそうです。あんまり意味はないという話です。
- 2 ; Serial
データベースのシリアル番号です。
primary server しか無い場合はあまり意味が無いみたいです。
secondary server があるとこの番号を見て更新を自動でするようになるそうです。日付なんてよく使われているようです。 19981115 みたいにね。これはたぶん重複する事はないでしょうから。
- 10800 ; Refresh
primary server しか無い場合はあまり意味が無いみたいです。
secondary server が primary server に問い合わせる間隔を指定します。
単位は [ 秒 ] です。 10800 だと 3 時間ごとになるんですね。
- 300 ; Retry
primary server しか無い場合はあまり意味が無いみたいです。
secondary server から primary server に問い合わせをし時、落ちていたりして反応が無い時のリトライの時間間隔です。
単位は [ 秒 ] です。 1800 だと 30 分ですね。
- 4320000 ; Expire
primary server しか無い場合はあまり意味が無いみたいです。
secondary server が primary server から入手したデータの有効期間です。これを超えても primary server に接続できないと、 secondary server 上の設定が消去されます。
単位は [ 秒 ] です。 4320000 だと 50 日ですね。
- 3600 ; Minimun
データベースの各レコードの内容の有効期限です。
この時間分設定をキャッシュします。
単位は [ 秒 ] です。 86400 だと 24 時間ですね。
こんな感じで各設定ファイルを作成していきます。
/var/named/mystey.zone の料理
/var/named/mystery.zone を書いてみます。
# vi /var/named/mystery.zone
;
; /var/named/mystery.zone
;
@ IN SOA pochi.mystery.org. root.mystery.org. (
19981115 ;
10800 ;
1800 ;
4320000 ;
86400 ) ;
IN NS pochi.mystery.org.
IN MX 10 pochi
localhost IN A 127.0.0.1
mystery-met IN PTR 26.1.168.192.in-addr.arpa.
pochi IN A 192.168.1.26
IN MX 10 pochi
tama IN A 192.168.1.27
IN MX 10 pochi
shiro IN A 192.168.1.28
IN MX 10 pochi
mike IN A 192.168.1.29
IN MX 10 pochi
# chmod 644 /var/named/mystery.zone
# chown root /var/named/mystery.zone
# chgrp system /var/named/mystery.zone
/var/named/mystery.rev の料理
/var/named/mystery.rev を書いてみます。
# vi /var/named/mystery.zone
;
; /var/named/mystery.rev
;
@ IN SOA pochi.mystery.org. root.mystery.org. (
19981115 ;
10800 ;
1800 ;
4320000 ;
86400 ) ;
IN NS pochi.mystery.org.
26 IN PTR pochi.mystery.org.
27 IN PTR tama.mystery.org.
28 IN PTR shiro.mystery.org.
29 IN PTR mike.mystery.org.
# chmod 644 /var/named/mystery.rev
# chown root /var/named/mystery.rev
# chgrp system /var/named/mystery.rev
/var/named/localhost.rev の料理
/var/named/localhost.rev を書いてみます。
# vi /var/named/localhost.rev
;
; /var/named/localhost.rev
;
@ IN SOA pochi.mystery.org. root.mystery.org. (
19981115 ;
10800 ;
1800 ;
4320000 ;
86400 ) ;
IN NS pochi.mystery.org.
1 IN PTR localhost.mystery.org.
# chmod 644 /var/named/localhost.rev
# chown root /var/named/localhost.rev
# chgrp system /var/named/localhost.rev
/etc/resolv.conf の料理
DNS を引くためのクライアント側に設定になる resolv.conf を作成しましょう。
ドメイン名とネームサーバーの IP アドレスを書いておきます。自分自身の IP アドレスになるので、 127.0.0.1 でもいいし 192.168.1.26 でもいいようです。
# vi /etc/resolv.conf
domain mystery.org
nameserver 192.168.1.26
# chmod 644 /etc/resolv.conf
# chown root /etc/resolv.conf
# chgrp system /etc/resolv.conf
もしくは
# vi /etc/resolv.conf
domain mystery.org
nameserver 127.0.01
# chmod 644 /etc/resolv.conf
# chown root /etc/resolv.conf
# chgrp system /etc/resolv.conf
/etc/nsswitch.conf の料理
DNS をちゃんと見にいくようにします。 DNS で名前が無ければ /etc/hosts ( file ) を見に行く順番にします。
# vi /etc/nsswitch.conf
hosts: file → hosts: dns file
#
試食 1
in.named を起動して様子を見てみましょう。
まず、in.named が動作してるかどう確認してからね。起動していたら死んでもらいましょう。
# ps -ef | grep in.named
root 816 742 0 16:30:00 ? 0:00 /usr/sbin/in.named
# kill -9 816
in.named を起動 !
# /usr/sbin/in.named
エラーの状況を見てみましょう。ウチャウチャとエラーがあったら該当のファイルを修正して、いままでの手順を繰り返してみてくださいな。
# tail /var/adm/messages
Nov 15 16:28:16 pochi named[759]: starting. named 4.9.4-P1
Nov 15 16:28:16 pochi named[760]: Ready to answer queries.
#
エラーがあったりすると以下のようになっていると思います。
# tail /var/adm/messages
Nov 15 16:22:19 pochi named[742]: starting. named 4.9.4-P1
Nov 15 16:22:19 pochi named[742]: Zone "0.0.127.in-addr.arpa" (file localhost.r
ev): no NS RRs found at zone top
Nov 15 16:22:19 pochi named[742]: primary zone "0.0.127.in-addr.arpa" rejected
due to errors (serial 1)
Nov 15 16:22:19 pochi named[743]: Ready to answer queries.
#
試食 2
nslookup (1m) で dns のチェックをしてみましょう。
SOA レコード、 A レコード、 PTR レコード、 MX レコードのチェックをしてみます。
終わりは [Ctrl]+[D] です。登録した予定のコンピュータに対して試してみましょう。
これで特にエラーが出なかければ primary サーバーの設定はおしまいね。
# nslookup
Default Server: pochi.mystery.org
Address: 192.168.1.26
> set type=soa
> mystery.org
Server: pochi.mystery.org
Address: 192.168.1.26
mystery.org
origin = pochi.mystery.org
mail addr = root.mystery.org
serial = 19981115
refresh = 10800 (3 hours)
retry = 1800 (30 mins)
expire = 4320000 (50 days)
minimum ttl = 86400 (1 day)
mystery.org nameserver = pochi.mystery.org
pochi.mystery.org internet address = 192.168.1.26
> set type=a
> pochi
Server: pochi.mystery.org
Address: 192.168.1.26
Name: pochi.mystery.org
Address: 192.168.1.26
> tama
Server: pochi.mystery.org
Address: 192.168.1.26
Name: tama.mystery.org
Address: 192.168.1.27
> set type=ptr
> 26.1.268.192.in-addr.arpa.
Server: pochi.mystery.org
Address: 192.168.1.26
26.1.168.192.in-addr.arpa name = pochi.mystery.org
1.168.192.in-addr.arpa nameserver = pochi.mystery.org
pochi.mystery.org internet address = 192.168.1.26
> 27.1.268.192.in-addr.arpa.
Server: pochi.mystery.org
Address: 192.168.1.26
27.1.168.192.in-addr.arpa name = tama.mystery.org
1.168.192.in-addr.arpa nameserver = pochi.mystery.org
pochi.mystery.org internet address = 192.168.1.26
> set q=mx
> pochi
Server: pochi.mystery.org
Address: 192.168.1.26
pochi.mystery.org preference = 10, mail exchanger = pochi.mystery.org
mystery.org nameserver = pochi.mystery.org
pochi.mystery.org internet address = 192.168.1.26
> tama
Server: pochi.mystery.org
Address: 192.168.1.26
tama.mystery.org preference = 10, mail exchanger = pochi.mystery.org
mystery.org nameserver = pochi.mystery.org
pochi.mystery.org internet address = 192.168.1.26
> #
secondary サーバーの /etc/named.boot の料理
secondary サーバーにも /etc/named.boot ファイルを作成しましょう。
secondary サーバーになるマシンで作業しましょう。
# vi /etc/named.boot
;
; /etc/named.boot
;
directory /var/named
cache . root.cache
secondary mystery.org 192.168.1.26 backup/mystery.zone
secondary 1.168.192.in-addr.arpa 192.168.1.26 backup/mystery.rev
primary 0.0.127.in-addr.arpa localhost.rev
# chmod 644 /etc/named.boot
# chown root /etc/named.boot
# chgrp sys /etc/named.boot
# mkdir /var/named
# chmod 755 /var/named
# chown root /var/named
# chgrp sys /var/named
# mkdir /var/named/backup
# chmod 755 /var/named/backup
# chown root /var/named/backup
# chgrp sys /vr/named/backup
ほとんど同じです。
secondary ではじまっている行だけが異なっている場所だけの説明をします。
- secondary mystery.org 192.168.1.26 backup/mystery.zone
mystery.zone ファイルは 192.168.1.26 のマシンで管理されている mystery.zone を /var/named/backup/mystery.zone にコピーしてきてるよ。
- secondary 1.168.192.in-addr.arpa 192.168.1.26 backup/mystery.rev
mystery.rev ファイルは 192.168.1.26 のマシンで管理されている mystery.rev を /var/named/backup/mystery.rev にコピーしてきているよ。
secondary サーバーの /var/named/root.cache と /var/named/localhost.rev ファイルの料理
primary サーバーとまったく同じものですから、コピーしてきちゃいましょう。
# cd /var/named
# ftp pochi
Connected to pochi.
220 pochi FTP server (SunOS5.6) ready.
Name (pochi:root) : root
331 Password required for root.
Password :
230 User root logged in.
ftp> cd /var/named
250 CWD command succcessful.
ftp> bin
200 Type set to I.
ftp > get root.cache
200 PORT data connection for root.cache (192.168.1.27,328767) (113 bytes).
150 Binary Transfer complete.
local: root.cache remote: root.cache
113 byte received in 0.0013 seconds (87.93 Kbyte/s)
ftp > get localhost.rev
200 PORT data connection for root.cache (192.168.1.27,328767) (196 bytes).
226 Binary Transfer complete.
local: localhost.rev remote: localhost.rev
113 byte received in 0.0013 seconds (144.46 Kbyte/s)
ftp > quit
221 Goodbye.
# chmod 644 root.cache localhost.rev
# chown root root.cache localhost.rev
# chown sys root.cache localhost.rev
secondary サーバーの /etc/resolv.conf の料理
primary サーバーのとおんなじです。サーバが 2 つになったので IP アドレスは 2 つ書いておきましょ。あっ、 primary サーバーの方の /etc/resolv.conf にも secondary サーバーの IP アドレスを書いておいてね。
# vi /etc/resolv.conf
domain mystery.org
nameserver 192.168.1.26
nameserver 192.168.1.27
# chmod 644 /etc/resolv.conf
# chown root /etc/resolv.conf
# chgrp sys /etc/resolv.conf
sevondary サーバーの /etc/nsswitch.conf の料理
primary サーバーと同じように DNS をちゃんと見にいくようにします。 DNS で名前が無ければ /etc/hosts ( file ) を見に行く順番にします。
# vi /etc/nsswitch.conf
hosts: file → hosts: dns file
#
試食 3
secondary サーバーの in.named を起動して様子を見てみましょう。
まず、in.named が動作してるかどう確認してからね。起動していたら死んでもらいましょう。
# ps -ef | grep in.named
root 816 742 0 16:30:00 ? 0:00 /usr/sbin/in.named
# kill -9 816
in.named を起動 !
# /usr/sbin/in.named
エラーの状況を見てみましょう。ウチャウチャとエラーがあったら該当のファイルを修正して、いままでの手順を繰り返してみてくださいな。
# tail /var/adm/messages
Nov 15 16:28:16 pochi named[759]: starting. named 4.9.4-P1
Nov 15 16:28:16 pochi named[760]: Ready to answer queries.
#
エラーがあったりすると以下のようになっていると思います。
# tail /var/adm/messages
Nov 15 16:22:19 pochi named[742]: starting. named 4.9.4-P1
Nov 15 16:22:19 pochi named[742]: Zone "0.0.127.in-addr.arpa" (file localhost.r
ev): no NS RRs found at zone top
Nov 15 16:22:19 pochi named[742]: primary zone "0.0.127.in-addr.arpa" rejected
due to errors (serial 1)
Nov 15 16:22:19 pochi named[743]: Ready to answer queries.
#
ちゃんと動くと /var/named/backup の下に primary サーバーより mystery.rev と mystery.zone ファイルが自動的にコピーさえてきているのが確認できると思います。
# ls /var/named/backup
mystery.rev mystery.zone
#
試食 4
secondary サーバーでも nslookup (1m) で dns のチェックをしてみましょう。
primary サーバーと同様に SOA レコード、 A レコード、 PTR レコード、 MX レコードのチェックをしてみます。
終わりは [Ctrl]+[D] です。登録した予定のコンピュータに対して試してみましょう。
これで特にエラーが出なかければ secondary サーバーの設定はおしまいね。
食事
/etc/named.boot があると起動時に /etc/rc2.d/S72inetsver で勝手に起動するので、何もしなくていいです。
おまけですが ... DNS のネームサービスをやめる場合は /etc/named.boot を消してしまえばいいわけですね。だけど、 /etc/named.pid ってファイルが勝手にできていて、これを消しとかないと boot 時にロックしてしまいます。ひぇ〜