DNS サーバの構築 (マスター、スレーブ)

環境は以下の通り。

mas:RHEL61.example.com (192.168.110.135)
sla:RHEL66.example.com (192.168.110.136)


・マスター・サーバ/スレーブ・サーバ

1./etc/sysconfig/named の編集

#IPv6 の無効
OPTIONS="-4"


・マスター・サーバ

1.named.conf (/var/named/chroot/etc/named.conf) の編集

acl local-net {
  10.0.1.1;
  192.168.110.0/24;
};

options
{
        directory               "/var/named";

        #rndc によるダンプ情報のファイル
        dump-file               "data/cache_dump.db";

        #rndc によるステータス情報のファイル
        statistics-file         "data/named_stats.txt";

        #rndc によるメモリ情報のファイル
        memstatistics-file      "data/named_mem_stats.txt";

        #BIND がクライアントからのクエリを受け取るport と NIC を指定
        listen-on port 53       { 127.0.0.1; 192.168.110.135;};
        #listen-on-v6 port 53    { ::1; };

        #クエリが出来るクライアントを指定
        allow-query             { local-net; };

        #キャッシュされた情報に対するクエリが出来るクライアントを指定
        allow-query-cache       { local-net; };

        #再帰的なサーバーとして動作するかどうかを指定
        recursion yes;

        #DNSSEC を無効
        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside no;
};

logging
{
        channel default_debug {
                file "data/named.log" versions 3 size 10m;
                severity dynamic;
                print-time yes;
                print-severity yes;
                print-category yes;

        };

        #クエリ情報を queries.log に出力
        channel "log_queries" {
                file "data/queries.log" versions 3 size 10m;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
        category queries { "log_queries"; };
};

view "internal"
{
        match-clients           { local-net; };
        recursion yes;

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

        include "/etc/named.rfc1912.zones";


        zone "example.com" {
                type master;
                file "example.com.db";

                #ゾーン転送要求を許可するスレーブサーバの IP アドレス指定 (192.168.110.136)
                #自身からの dig の axfr を許可するため自身の IP アドレス指定 (192.168.110.135)
                allow-transfer { 192.168.110.136; 192.168.110.135;};

                #ゾーン情報に変更が加えられた際に他のネームサーバに変更を通知
                notify yes;

                #notify が yes の場合、通知先となるサーバの IP アドレスを指定
                also-notify { 192.168.110.136; };

        };

        zone "110.168.192.in-addr.arpa" {
                type master;
                file "192.168.110.0.local.rev";

                #ゾーン転送要求を許可するスレーブサーバの IP アドレス指定 (192.168.110.136)
                #自身に対して dig の axfr を許可するため自身の IP アドレス指定 (192.168.110.135)
                allow-transfer { 192.168.110.136; 192.168.110.135;};

                #ゾーン情報に変更が加えられた際に他のネームサーバに変更を通知
                notify yes;

                #notify が yes の場合、通知先となるサーバの IP アドレスを指定
                also-notify { 192.168.110.136; };

        };
};


2.ゾーンファイルの編集

/var/named/chroot/var/named/example.com.db の編集。

$ttl 38400
@                    IN      SOA     RHEL61.example.com. root.RHEL61.example.com. (
                                     0000000001
                                     10800
                                     3600
                                     604800
                                     38400 )

                     IN      NS      RHEL61.example.com.
RHEL61.example.com.  IN      A       192.168.110.135
RHEL66.example.com.  IN      A       192.168.110.136

※「FQDN + .」と「FQDN」のみの違い

RHEL61.example.com.→RHEL61.example.com となる
                  ^
RHEL61.example.com →RHEL61.example.com.example.com となる
                  ^


/var/named/chroot/var/named/192.168.110.0.local.rev の編集。

$ttl 38400
@                    IN      SOA     RHEL61.example.com. root.RHEL61.example.com. (
                                     0000000001
                                     10800
                                     3600
                                     604800
                                     38400 )

                     IN      NS      RHEL61.example.com.
135                  IN      PTR     RHEL61.example.com.
136                  IN      PTR     RHEL66.example.com.

※以下でゾーン情報をダンプして確認可能

# rndc dumpdb -zones
# cat /var/named/chroot/var/named/data/cache_dump.db


・スレーブ・サーバ

1.named.conf (/var/named/chroot/etc/named.conf) の編集

acl local-net {
  10.0.1.1;
  192.168.110.0/24;
};

options
{
        directory               "/var/named";

        #rndc によるダンプ情報のファイル
        dump-file               "data/cache_dump.db";

        #rndc によるステータス情報のファイル
        statistics-file         "data/named_stats.txt";

        #rndc によるメモリ情報のファイル
        memstatistics-file      "data/named_mem_stats.txt";

        #BIND がクライアントからのクエリを受け取るport と NIC を指定
        listen-on port 53       { 127.0.0.1; 192.168.110.136;};
        #listen-on-v6 port 53    { ::1; };

        #クエリが出来るクライアントを指定
        allow-query             { local-net; };

        #キャッシュされた情報に対するクエリが出来るクライアントを指定
        allow-query-cache       { local-net; };

        #再帰的なサーバーとして動作するかどうかを指定
        recursion yes;

        #DNSSEC を無効
        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside no;
};

logging
{
        channel default_debug {
                file "data/named.log" versions 3 size 10m;
                severity dynamic;
                print-time yes;
                print-severity yes;
                print-category yes;

        };

        #クエリ情報を queries.log に出力
        channel "log_queries" {
                file "data/queries.log" versions 3 size 10m;
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
        category queries { "log_queries"; };
};

view "internal"
{
        match-clients           { local-net; };
        recursion yes;

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

        include "/etc/named.rfc1912.zones";


        zone "example.com" {
                type slave;
                file "slaves/example.com.db";

                #マスターサーバの IP アドレス指定 (192.168.110.135)
                masters { 192.168.110.135; }; 

        };

        zone "110.168.192.in-addr.arpa" {
                type slave;
                file "slaves/192.168.110.0.local.rev";

                #マスターサーバの IP アドレス指定 (192.168.110.135)
                masters { 192.168.110.135; }; 


        };
};

※参考情報
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html-single/Deployment_Guide/index.html
14.2. BIND
https://lists.openshift.redhat.com/docs/manuals/enterprise/RHEL-5-manual/ja-JP/Deployment_Guide/s2-bind-introduction-bind.htm
http://www.atmarkit.co.jp/flinux/index/indexfiles/bind9index.html
https://www.suse.com/ja-jp/documentation/sles10/book_sle_reference/data/cha.dns.htmll
http://www.eis.co.jp/category/dns_bind/
http://www.maruko2.com/mw/rndc%E3%81%A7named%E3%82%92%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B