BIND8

昔の記事をblog側に持ってきて編集してみました。
書いた当初からずいぶん時間が経っているので、ちょっとおかしなところがあるかもしれません。

ドメインを取得・申請したので、ネームサーバを立ててみます。

今回はよく使われている(と思われる)bind8を、FreeBSDに入れてみましょう。
bind8のソースプログラムは、Internet Software Consortium (ISC)から持ってきます。

まずは、ダウンロードをして、展開、コンパイルまでしましょう。

> fetch ftp://ftp.isc.org/isc/bind/src/8.4.1/bind-src.tar.gz Receiving bind-src.tar.gz (1432277 bytes): 100%
> tar xzf bind-src.tar.gz
(カレントにsrcというディレクトリができます。)

> cd src
> make
Making /usr/home/kentaro/src/.systype
Making .settings
/usr/home/kentaro/src/include
…あとは気長に待ちましょう(^^;

コンパイルが無事完了したら、インストールします。この場合では、/etc/namedb以下にインストールされます。
(Linuxはどうなのでしょう…?/var/namedとか?)

>su Password:(rootになりましょう)
# make install
mkdir -p /usr/local/bind/include/arpa
set -x; for x in inet.h nameser.h nameser_compat.h; do install -c -m 444 $x /usr/local/bind/include/arpa/$x; done
+ install -c -m 444 inet.h /usr/local/bind/include/arpa/inet.h
……………

インストールが終わりましたら、設定ファイルを書きます。

[ /etc/namedb/named.conf ]options {
directory “/etc/namedb”;
};

zone “.” {
type hint;
file “named.root”;
};

zone “localhost” {
type master;
file “localhost”;
allow-query { any; };
};

zone “0.0.127.IN-ADDR.ARPA” {
type master;
file “localhost.rev”;
};

//
// kenti.jp
zone “kenti.jp” {
type master;
file “db/kenti.jp.zone”;
allow-update { none; };
};

設定で注意するのは、赤字にしたところです。/etc/namedbをホームとして、それぞれのファイルを参照する形になります。今回、kenti.jpはそこにディレクトリを作成し、kenti.jp.zoneというゾーンファイルを作成する形となりますので、さらに以下のファイルを作成しました。
(名前→IPを表す正引きファイル)

[ /etc/namedb/db/kenti.jp.zone ]$ORIGIN kenti.jp.
$TTL 3600
@ IN SOA ns.kenti.jp. postmaster.kenti.jp. (
2002120801 ;serial
10800 ;refresh
3600 ;retry
604800 ;expiry
86400 ) ;minimum
;
IN NS ns.kenti.jp.

;
IN MX 10 mx.kenti.jp.
* IN MX 10 mx.kenti.jp.
;
;
; KENTI ZONE
;
ns IN A 61.206.126.90
www IN A 61.206.126.90
mx IN A 61.206.126.90

なにやら不可思議な記述が書いてありますが、順に説明すると以下のようになります。

$ORIGIN
ゾーンセクション。この場合kenti.jp.となる。
$TTL
有効時間。秒単位で指定するので、この場合3600秒=1時間。
@
$ORIGINで指定されたもの(ここでは、kenti.jp.)を指す言葉になります。
SOA
SOAの後ろの@は、ns.kenti.jpのようにホスト名で書き換えます。次にあるpostmasterは、自分のメールアドレス(ユーザ名+ドメイン名)を指定します。何かあった場合、このアドレスに対して問い合わせがくるようになります。注意点は、メールアドレスの@を、「.」(ピリオド)に直して書くことです。
;
セミコロンの後は、コメントになります。
;serial
シリアルナンバー。内容を更新したら、かならずこの数値を変化させて、変更があったことを他DNSサーバへ知らせます。シリアルは、1,2,3…と適当な数字で増やしていってもいいのですが、上記のように日付+2桁の数字、で入れておくと管理しやすいです。
;refresh
リフレッシュ時間。このゾーンを確認する間隔を指定。この場合10800秒=180分=3時間。
;retry
上のリフレッシュ時間において、ゾーン確認に失敗した場合の再試行までの待ち時間。この場合3600秒=1時間。
;expiry
このファイルで定義されている内容の有効期限。この場合604800秒で7日(1週間)。
;minimum
ファイル自体の有効期限。この場合86400秒=24時間。
NS
NSレコード(ネームサーバ)の指定。
ここでは、一般的にこのDNSサーバの名前を指定しています。
MX
MXレコード(メールサーバ)の指定。
メールサーバの名前を指定します。なお、サーバ名の前にある「10」はメールサーバの優先度を指定しています。複数メールサーバがあれば、20,30といったように記述することも出来ます。
A
Aレコードの指定。
この場合、ns.kenti.jp.のIPアドレスはいくつか、を指定しています。これが設定できてないと、www.kenti.jpはどのIPなのか、といった参照が出来ません。
ほかに、mailにもAレコードが指定してあります。これがないと、MXで指定した名前のIPがわからなくなってしまうからです。
CNAME
今回は出てきませんが、別名という意味で使われます。
ftp IN CNAME www
とすれば、ftp.kenti.jpはwww.kenti.jpの別名だよ、と指定することが出来ます。
※トラブルの原因になるので、なるだけAレコードで書いた方が良いと思われます。特に、MXはCNAMEで書きますとトラブルの元になります。
PTR
これも今回は出てきません。IPから名前を表す、逆引きに使用するレコードです。
61.206.126.90 IN PTR ns.kenti.jp.
という具合で書きます。
kenti.jpで使用しているIPは、プロバイダから既に逆引きの名前が割り当てられており、変更することが出来ないので逆引きのゾーンは作成しませんでした。

設定ファイルが出来たので、namedを起動します。

# /usr/sbin/ndc start
new pid is 708

起動後、/var/log/messageなどを見て、エラーが出てないことを確認しましょう。(^_^)v
動いているようであれば、以下のように名前が解決できるようになります。

# nslookup www.kenti.jp Server: localhost Address: 127.0.0.1Name: www.kenti.jp
Address: 61.206.126.90

また、OS起動時(この場合は、FreeBSD)にnamedを起動させるようにするには、以下の方法があります。

[ /etc/rc.conf ] 以下の2行を追加するnamed_enable=”YES”
named_program=”/usr/sbin/named”

Linuxのような起動方法として、FreeBSDでは以下のスクリプトを書いてあげれば自動起動してくれます。
(パーミッションの設定は755としておくといいのかな…。)

[ /usr/local/etc/rc.d/named ] 新規に作成します#!/bin/sh

case “$1” in

start)
if [ -x /usr/sbin/named ]; then
echo named
/usr/sbin/ndc start
fi
;;
stop)
/usr/sbin/ndc stop
;;
*)
echo “$0 start|stop”
;;
esac

とりあえず、そんなこんなで一段落といったところでしょうか。(^^;