BIND9インストール

ソースの入手

以下のURLから最新のソースを入手してください。
http://www.isc.org/
今回はbind-9.2.3.tar.gzをダウンロードしました。
ftp://ftp.isc.org/isc/bind9/9.2.3/bind-9.2.3.tar.gz

インストール

セキュリティ上root権限でBINDを動かすのは危険なのでnamedという専用ユーザを作成します。
私はuid,gid共に53で作成しましたが、利用の環境に合わせて作成してください。
もちろんroot権限で実行して下さい。

# groupadd -g 53 named
# useradd -d /var/named -s /bin/false -u 53 -g 53 named

ここではbind-9.2.3.tar.gzをダウンロードしたものとして説明します。

$ tar xvfz bind-9.2.3.tar.gz
$ cd bind-9.2.3
$ ./configure
$ make
$ su
# make install
# mkdir  /var/run/named/
# chown  named.named  /var/run/named/

これで/usr/local以下にインストールされます。

設定ファイルの準備

BINDを動作させるには最低限以下のファイルが必要になります。

named.conf
namedの起動時に読み込まれる設定ファイル
デフォルトでは/etc以下に設置します。

localhost逆引きゾーンファイル
127.0.0.1というローカルホストの名前解決用のファイル
私の環境では/var/named/localhost.revとして保存しています。

localhost正引きゾーンファイル
loalhostとう正引きの名前解決用のファイル
特に必要ではないようですが念のため、/var/named/localhost.zoneとして保存しています。

ルートキャッシュファイル
設置のDNSで名前解決が出来なかった場合に、ルートサーバの名前とアドレス情報が入ったファイル
私の環境では/var/named/named.rootとして保存しています。

それでは、実際に設定をしましょう。

(1) named.conf
/etc/named.confとして以下のようにファイルを作成します。

options {
        directory "/var/named";
        pid-file "/var/run/named/named.pid";
        allow-transfer {None;};
        version "marronkun";
};
zone "." {
        type hint;
        file "named.root";
};
zone "localhost" {
        type master;
        file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" {
        type master;
        file "localhost.rev";
};

directory "/var/named" とはゾーンファイルが格納されるディレクトリを示しています。
つまりlocalhost.zoneは/var/named/localhost.zoneにあるということです。
allow-transfer {None;} とはゾーン転送の許可設定です。とくにZone転送を行うことはしませんで"None"とします。
version とはBINDのバージョンの応答メッセージです。デフォルトではバージョンを答えてしまうのでセキュリティ上あまり、好ましくはありません。適当な名前をつけておきましょう。

(2) localhost逆引きゾーンファイル
localhostの逆引きファイルを用意します。/var/named/localhost.revとして保存してください。

$TTL 86400
@               IN      SOA     localhost. root.localhost.(
                                2004032602      ; serial
                                10800           ; refresh
                                3600            ; retry
                                3600000         ; expire
                                86400           ; TTL
                        )
;
@               IN      NS      localhost.
1               IN      PTR     localhost.

(3) localhost正引きゾーンファイル
localhostの正引きファイルを用意します。/var/named/localhost.zoneとして保存してください。

$TTL 86400
@               IN      SOA     localhost. root.localhost.(
                                2004032602      ; serial
                                10800           ; refresh
                                3600            ; retry
                                3600000         ; expire
                                86400           ; TTL
                        )
;
@               IN      NS      localhost.
@               IN      A       127.0.0.1

(3) ルートキャッシュファイル
digコマンド をつかってルートキャッシュファイルを作成します。/var/named/named.rootとして保存

/usr/local/bin/dig @e.root-servers.net . ns > /var/named/named.root

これでルートキャッシュが作成されるはずです。中身は以下のようになっています。

; <<>> DiG 9.2.3 <<>> @e.root-servers.net . ns
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25880
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      E.ROOT-SERVERS.NET.
.                       518400  IN      NS      D.ROOT-SERVERS.NET.
.                       518400  IN      NS      A.ROOT-SERVERS.NET.
.                       518400  IN      NS      H.ROOT-SERVERS.NET.
.                       518400  IN      NS      C.ROOT-SERVERS.NET.
.                       518400  IN      NS      G.ROOT-SERVERS.NET.
.                       518400  IN      NS      F.ROOT-SERVERS.NET.
.                       518400  IN      NS      B.ROOT-SERVERS.NET.
.                       518400  IN      NS      J.ROOT-SERVERS.NET.
.                       518400  IN      NS      K.ROOT-SERVERS.NET.
.                       518400  IN      NS      L.ROOT-SERVERS.NET.
.                       518400  IN      NS      M.ROOT-SERVERS.NET.
.                       518400  IN      NS      I.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
E.ROOT-SERVERS.NET.     3600000 IN      A       192.203.230.10
D.ROOT-SERVERS.NET.     3600000 IN      A       128.8.10.90
A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4
H.ROOT-SERVERS.NET.     3600000 IN      A       128.63.2.53
C.ROOT-SERVERS.NET.     3600000 IN      A       192.33.4.12
G.ROOT-SERVERS.NET.     3600000 IN      A       192.112.36.4
F.ROOT-SERVERS.NET.     3600000 IN      A       192.5.5.241
B.ROOT-SERVERS.NET.     3600000 IN      A       192.228.79.201
J.ROOT-SERVERS.NET.     3600000 IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     3600000 IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     3600000 IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33
I.ROOT-SERVERS.NET.     3600000 IN      A       192.36.148.17

;; Query time: 160 msec
;; SERVER: 192.203.230.10#53(e.root-servers.net)
;; WHEN: Sun Apr  4 14:46:26 2004
;; MSG SIZE  rcvd: 436

これで必要なファイルの用意はできました。

起動

では早速起動させましょう。
起動方法は以下のコマンドでできます。

# /usr/local/sbin/named -u named

-uとは起動する起動するユーザ名指定しています。
psコマンド等でnamedが立ち上がっていれば動作に問題はありません。

また、必要に応じて以下のような起動スクリプトを作成すれば幸せになれます。

#!/bin/sh
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: 345 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
# probe: true
# securlevel: 40
# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/local/sbin/named ] || exit 0

[ -f /etc/named.conf ] || exit 0

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting named: "
        daemon /usr/local/sbin/named -u named
        echo
        touch /var/lock/subsys/named
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down named: "
        killproc named
        rm -f /var/lock/subsys/named
        echo
        ;;
  status)
        ## "status" option is not suppoted yet in bind-9.1.3.
        #if [ -f /etc/rndc.conf ] ; then
        #       /usr/sbin/rndc -s localhost status || status named
        #else
        #       status named
        #fi
        status named
        exit $?
        ;;
  restart)
        #/usr/sbin/rndc restart  ## current rndc doesn't support "restart".
        $0 stop
        $0 start
        exit $?
        ;;
  reload)
        /usr/sbin/rndc reload > /dev/null 2>&1 || killall -HUP named
        exit $?
        ;;
  probe)
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /usr/sbin/rndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;

  *)
        echo "Usage: named {start|stop|status|restart}"
        exit 1
esac

exit 0

これでBIND9の構築は完了です。

marronおすすめの参考書 by Amazon
Bind, Torture, Kill Bind, Torture, Kill
Mindbase /
¥ 2,921
Ties That Bind: The Best Christian Country Ties That Bind: The Best Christian Country
Word -- Word -- /
Ties That Bind: Country Love Songs Ties That Bind: Country Love Songs
K-Tel /

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.