bind-9.2.3-13

[サーバの実験室 Redhat/Fedora]

作成 : 2004/06/13
修正 : 2005/01/22

"サーバの実験室"の検索


bind-9.2.3-13のインストール

bindパッケージ(bind本体)、bind-utilsパッケージ(digなどのユーティリティ)、bind-libsパッケージ(ライブラリ)、bind-chrootパッケージ(非特権ユーザでbindを起動するため)をインストールする。

# rpm -Uvh bind-9.2.3-13.rpm
# rpm -Uvh bind-libs-9.2.3-13.rpm
# rpm -Uvh bind-utils-9.2.3-13.rpm
# rpm -Uvh bind-chroot-9.2.3-13.rpm

ファイルの配置

/var/named/chrootディレクトリにchrootするので、必要なファイルはみんなその中に配置する。

/var/named/chroot/
              + dev/
                 + null
                 + random
              + etc/
                 + named.conf    <--- 設定ファイル
                 + rndc.key    <--- rndcキーファイル
              + var/
                 + named/
                     + named.ca     <--- ルートゾーンファイル
                     + zone/
                         + localhost    <--- ローカルゾーン正引きファイル
                         + nina.jp    <--- nina.jpゾーン正引きファイル
                         + xxxx.jp    <--- xxxx.jpゾーン正引きファイル(スレーブなので自動生成)
                     + rev/
                         + 0.0.127.in-addr.arpa    <--- ローカルゾーン逆引きファイル
                         + 0.168.192.in-addr.arpa    <--- nina.jp逆引きファイル
                 + run/
                     + named/
                         + named.pid    <--- PIDファイル(自動生成)

/var/named/chroot/etc/named.confの編集

bindの設定ファイルnamed.confを編集する。 設定の詳細は、named.confの設定を参照。

optionsステートメントのdirectoryディレクティブで、ワーキングディレクトリとして/var/namedディレクトリを指定している。 しかし、/var/named/chrootディレクトリにchrootしているので、実際のワーキングディレクトリは/var/named/chroot/var/namedディレクトリとなる。

プライベートアドレスの逆引きクエリをインターネットに流さないように、10.0.0.0/8172.168.0.0/12192.168.0.0/16169.254.0.0/16の逆引き設定を書いておくこと。

acl "internal-acl" { 127.0.0.0/8; 192.168.0.0/16; };    <--- ACLを定義

include "/etc/rndc.key";    <--- rndcキーファイル
controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndckey; }; };    <--- rndcはローカルホストからの接続を許可

options {
        directory "/var/named";    <--- ワーキングディレクトリ
        pid-file "/var/run/named/named.pid";    <--- PIDファイル
};

logging {
        channel "default_syslog" {
                syslog daemon;
                severity info;
        };
        channel "default_debug" {
                file "named.run";
                severity dynamic;
        };
        channel "null" {
                null;
        };

        category "unmatched" { "null"; };
        category "default" { "default_syslog"; "default_debug"; };
};

view "internal-view" {
        match-clients { internal-acl; };    <--- LAN内のクライアントはこのビューを参照できる
        allow-query { internal-acl; };    <--- このビューはLAN内のクライアントからのクエリを許可
        allow-recursion { internal-acl; };    <--- このビューはLAN内のクライアントから再帰クエリを許可

        zone "." IN {
                type hint;
                file "named.ca";
        };

        zone "localhost" IN {
                type master;
                file "zone/localhost";
                allow-update { none; };
        };

        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "rev/0.0.127.in-addr.arpa";
                allow-update { none; };
        };

        zone "nina.jp" {
                type master;
                file "zone/nina.jp";
        };

        zone "168.192.in-addr.arpa" {
                type master;
                file "rev/168.192.in-addr.arpa";
        };

        zone "10.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "16.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "17.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "18.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "19.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "20.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "21.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "22.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "23.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "24.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "25.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "26.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "27.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "28.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "29.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "30.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "31.172.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };

        zone "254.169.in-addr.arpa" {
                type master;
                file "rev/dummy.rev";    <--- ダミーのゾーンファイル
        };
};

view "external-view" {
        match-clients { any; };    <--- すべてのクライアントはこのビューを参照できる
        allow-query { any; };    <--- このビューはすべてのクライアントからのクエリを許可
        allow-recursion { none; };    <--- このビューはすべてのクライアントからのクエリを拒否
        allow-notify { any; };

        zone "xxxx.jp" IN {
                type slave;    <--- このゾーンはスレーブゾーン
                file "zone/xxxx.jp";
                masters { X.X.X.X; };    <--- このゾーンのマスタホスト
        };
};

ゾーンファイルの作成

正引きゾーンファイルは/var/named/chroot/var/named/zoneディレクトリ、逆引きゾーンファイルは/var/named/chroot/var/named/revディレクトリに置くことにする。 (デフォルト設定では、正引きファイルも逆引きファイルも/var/named/chroot/var/namedディレクトリに置く)

/var/named/chroot/var/named/zone/localhost
(/var/named/chroot/var/named/localhost.zoneをリネーム)

$TTL    86400
$ORIGIN localhost.
@                       1D IN SOA       @ root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        @
                        1D IN A         127.0.0.1
/var/named/chroot/var/named/rev/0.0.127.in-addr.arpa
(/var/named/chroot/var/named/localhost.revをリネーム)

$TTL    86400
$ORIGIN 0.0.127.in-addr.arpa.
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      localhost.

1       IN      PTR     localhost.
/var/named/chroot/var/named/zone/nina.jp

$ORIGIN nina.jp.
$TTL 86400      ; 1 day
                        IN SOA  ns.nina.jp. root.ns.nina.jp. (
                                2004060101 ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns.nina.jp.
                        A       192.168.0.10

ns                      A       192.168.0.10
pop                     CNAME   ns
smtp                    CNAME   ns
www                     CNAME   ns
/var/named/chroot/var/named/rev/168.192.in-addr.arpa

$ORIGIN .168.192.in-addr.arpa
$TTL 86400      ; 1 day
                        IN SOA  ns.nina.jp. root.ns.nina.jp. (
                                2004060101 ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns.nina.jp.

10.0                    PTR     ns.nina.jp.

ダミーのゾーンファイルには、SOANSだけ記述しておく。

/var/named/chroot/var/named/rev/dummy.rev

$TTL 86400      ; 1 day
@                       IN SOA  ns.nina.jp. root.ns.nina.jp. (
                                2004060101 ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      ns.nina.jp.

スレーブゾーンファイルを置く/var/named/chroot/var/named/zoneディレクトリは、namedユーザに書き込み権限を付与しておかないと、Permission Deniedエラーになる。

# chown root:named /var/named/chroot/var/named/zone
# chmod 770 /var/named/chroot/var/named/zone

/var/named/chroot/etc/rndc.confの作成

rndcを利用してnamedサービスに接続するときに必要な、鍵と設定のファイルrndc.confを作成する。

# rndc-confgen -a -t /var/named/chroot
/var/named/chroot/etc/rndc.conf

key "rndckey" {
        algorithm hmac-md5;
        secret "0hzFmmwt21SGmLub3Kfgpw==";
};

options {
        default-key "rndckey";
        default-server 127.0.0.1;
        default-port 953;
};

namedの起動

namedを起動する。 ファイアウォールを使用している場合は、TCP/UDP 53番ポートをあけておくこと。

# /etc/init.d/named start

システム起動時にデーモンが起動するよう、/etc/rc3.dディレクトリにシンボリックリンクを作成する。

# cd /etc/rc3.d
# ln -s ../init.d/named S55named

namedプロセスの確認

psコマンドでnamedプロセスを確認してみる。

# ps -ef | grep named
named     834      1  0 10:10 ?        00:00:00 /usr/sbin/named -u named -t /var/named/chroot

namedが非特権ユーザ(namedユーザ)で起動されており、chrootディレクトリとして/var/named/chrootが指定されていることがわかる。 chrootディレクトリの指定は、/etc/sysconfig/namedファイルに記述されている。


[サーバの実験室 Redhat/Fedora]