【bind】 セカンダリDNSサーバ構築 2 セカンダリ側の設定


さてさてお待たせしました。bindでセカンダリDNSサーバを作ろう!の後編です。というか、ここからが本編ですね。今回は、bindのインストールから行います。

■■ bindのインストール

※ うちの環境はCentOS4.5なので、yumで楽々インストールです。
# yum install bind

ここから、各種ゾーンファイル作成とnamed.confの記述、bind起動の解説になりますが、
やること少ないクセにかなり長いので「【bind】 セカンダリDNSサーバ構築 2 セカンダリ側の設定の続きを読む」をクリックしてください。


■■ 各種ゾーンファイルの作成

/var/named ディレクトリ以下に、
「プライマリネームサーバから転送されない」ゾーンのファイルを作成します。

# cd /var/named

■ named.ca の作成

このファイルがないと、bindの起動すらしません。
ルートサーバのnsレコードをここに書いてやります。

# dig @a.root-servers.net . ns > named.ca

これだけで、named.caができます。

■ localdomain.zone の作成

# vi localdomain.zone
------------------------------------------------------------------------------------------------------------------------
$TTL    86400
@               IN SOA  localhost root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           localhost
localhost       IN A            127.0.0.1
------------------------------------------------------------------------------------------------------------------------

■ localhost.zone の作成

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

                IN NS           @
                IN A            127.0.0.1
                IN AAAA         ::1
------------------------------------------------------------------------------------------------------------------------

■ named.broadcast の作成

# vi named.broadcast
------------------------------------------------------------------------------------------------------------------------
$TTL    86400
@               IN SOA  localhost       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      localhost
------------------------------------------------------------------------------------------------------------------------

■ named.ip6.local の作成

# vi named.ip6.local
------------------------------------------------------------------------------------------------------------------------
$TTL    86400
@  
     IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      localhost.

1      IN      PTR     localhost.
------------------------------------------------------------------------------------------------------------------------

■ named.local の作成

# vi named.local
------------------------------------------------------------------------------------------------------------------------
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      localhost.

1       IN      PTR     localhost.
------------------------------------------------------------------------------------------------------------------------

■ named.zero の作成

# vi named.zero
------------------------------------------------------------------------------------------------------------------------
$TTL    86400
@               IN SOA  localhost       root (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      localhost
------------------------------------------------------------------------------------------------------------------------

■■ named.confの設定

■ まずはオリジナルのnamed.confをバックアップします。

# cd /etc/
# cp -p named.conf named.conf.org

■ 次に、named.confを設定します。

素のnamed.confには

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
};
include "/etc/rndc.key";

という記述しかありません。これから、セカンダリサーバとして動かすための設定を行います。

# vi named.conf

------------------------------------------------------------------------------------------------------------------------
options { の行の上に、内部ネットワークの定義を書く

acl localnet{
    192.168.0.0/24;
    127.0.0.1;
};
------------------------------------------------------------------------------------------------------------------------
options の箇所で、以下の設定をします。
named.confのお約束で、「//から始まる行」あるいは
「/* ~ */」で囲まれた箇所は、コメント行扱いになります。

【ここを】
------------------------------------------------------------------------------------------------------------------------
options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
};
--------------------------------------------------------------------------------------
----------------------------------

【こうする】
------------------------------------------------------------------------------------------------------------------------
options {
       directory "/var/named";
       version "unknown";
       dump-file "/var/named/data/cache_dump.db";
       statistics-file "/var/named/data/named_stats.txt";
        // localnetと定義したネットワークからのクエリを許可する
               allow-query{ localnet; };
        // 再帰的な検索をlocalnetからのみ受け付ける
               allow-recursion{ localnet; };
        // ゾーン転送をlocalnetにのみ許可し、
        // 問い合わせを192.168.0.2に回送する
               allow-transfer{ localnet; };
                       forwarders{
                               192.168.0.2;
                       };
       };
------------------------------------------------------------------------------------------------------------------------

【rndcで制御可能なホストを、このサーバ自身に限定する】
------------------------------------------------------------------------------------------------------------------------
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
------------------------------------------------------------------------------------------------------------------------

【ログに関する設定】
------------------------------------------------------------------------------------------------------------------------
logging {
        // 逆引のエラーをログに残さない
        category lame-servers { null; };
        // クエリに関するログを取る
        channel "log" {
            file "/var/log/named_querylog";
            // ログにカテゴリ名の取得をする
            print-category yes;
            // ログに優先度の取得をする
            print-severity yes;
            // ログにタイムスタンプ取得をする
            print-time yes;
        };
        category queries {"log";};
};

ここまでが、bind全体の設定です。
------------------------------------------------------------------------------------------------------------------------

【ゾーンに関する設定】
いよいよここから、個別のゾーンについて定義します。
------------------------------------------------------------------------------------------------------------------------
// view ステートメントを定義する。
// ゾーンの定義を全部書いたあとの閉じカッコを忘れないこと。
view "any" {
    // match-clients ですべての接続元という定義をする。
    // 個別の定義をする場合は、anyの上に書くこと。
    match-clients {
        any;
    };

// ルートネームサーバのゾーンを定義する。
// これがないと、bind(named)を起動できない。
zone "." IN {
        // ルートネームサーバを指定するため、
        // hintと定義する。
        type hint;
        // ゾーン情報を書き込むファイルを指定する。
        // ファイル名は「named.ca」とする。
        file "named.ca";
};

// localdomein ゾーンの定義をする。
// これがあると、localhost.localdomain などの名前を定義できる。
zone "localdomain" IN {
        // ゾーンデータのマスターコピーを持ち、
        // ゾーンの権威ある返答を提供することができるよう、
        // mastarと定義する。
        type master;
        // ファイル名の指定
        file "localdomain.zone";
        // ゾーン転送を許可しない
        allow-update { none; };
};

// localhostの定義をする。
// これがあると、localhostの名前解決ができる。
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};

// 127.0.0.0/8 ネットワークの逆引設定を定義する。
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

// IPv6アドレスの逆引設定を定義する。
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.ip6.arpa" IN {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};

// ブロードキャストアドレスの逆引設定を定義する。
zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};

// ネットワークアドレスの逆引設定を定義する。
zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};

// rndc.keyを読み込む。
// named.confには最初から書いてあります。
include "/etc/rndc.key";

// blogcube.infoのゾーン情報
zone "blogcube.info" IN {
        // このゾ