DNSのレプリケーション設定と運用

検証環境

検証内容

レプリケーションについて

DNSコンテンツサーバーの基本設定(準備)

DNSコンテンツマスターサーバーの基本設定

/etc/rc.conf

以下の設定を追加する。

named_enable="YES"
named_chrootdir="/var/named"
altlog_proglist="named"

※altlog_proglist が既に設定済みの場合、「 named」を追加する。

あるいは下記コマンドを実行する(結果は同じ)。

sysrc named_enable=YES
sysrc named_chrootdir=/var/named
sysrc altlog_proglist+=named

/usr/local/etc/namedb/named.conf

   1 --- /usr/local/etc/namedb/named.conf.orig       2018-09-25 03:54:24.724317000 +0900
   2 +++ /usr/local/etc/namedb/named.conf    2018-11-10 21:38:31.343856000 +0900
   3 @@ -16,15 +16,22 @@
   4         dump-file       "/var/dump/named_dump.db";
   5         statistics-file "/var/stats/named.stats";
   6 
   7 +       recursion       no;
   8 +       allow-query       { none; };
   9 +       allow-recursion   { none; };
  10 +       allow-query-cache { none; };
  11 +
  12 +       allow-new-zones yes;
  13 +
  14  // If named is being used only as a local resolver, this is a safe default.
  15  // For named to be accessible to the network, comment this option, specify
  16  // the proper IP address, or delete this option.
  17 -       listen-on       { 127.0.0.1; };
  18 +       listen-on       { any; };
  19 
  20  // If you have IPv6 enabled on this system, uncomment this option for
  21  // use as a local resolver.  To give access to the network, specify
  22  // an IPv6 address, or the keyword "any".
  23 -//     listen-on-v6    { ::1; };
  24 +       listen-on-v6    { any; };
  25 
  26  // These zones are already covered by the empty zones listed below.
  27  // If you remove the related empty zones below, comment these lines out.
  28 @@ -378,3 +385,23 @@
  29         };
  30  };
  31  */
  32 +
  33 +include "/usr/local/etc/namedb/ns0-nsN.key";
  34 +
  35 +zone "catalog.example" {
  36 +       type    master;
  37 +       file    "/usr/local/etc/namedb/master/catalog.example.db";
  38 +       notify  explicit;
  39 +       allow-query {
  40 +               { !{ !ns1のIPアドレス; any; }; key "ns0-nsN."; };
  41 +               { !{ !ns2のIPアドレス; any; }; key "ns0-nsN."; };
  42 +       };
  43 +       allow-transfer {
  44 +               { !{ !ns1のIPアドレス; any; }; key "ns0-nsN."; };
  45 +               { !{ !ns2のIPアドレス; any; }; key "ns0-nsN."; };
  46 +       };
  47 +       also-notify {
  48 +                     ns1のIPアドレス          key "ns0-nsN.";
  49 +                     ns2のIPアドレス          key "ns0-nsN.";
  50 +       };
  51 +};
  52 

※カタログゾーン運用のための設定

※catalog.exmaple ゾーンに関する諸設定

/usr/local/etc/namedb/ns0-nsN.key

以下のコマンドを使用してTSIGキーを作成する。内容例については特に記載しない。

tsig-keygen -a hmac-sha256 ns0-nsN. > /usr/local/etc/namedb/ns0-nsN.key
chown bind:wheel /usr/local/etc/namedb/ns0-nsN.key
chmod 0400       /usr/local/etc/namedb/ns0-nsN.key

/usr/local/etc/namedb/master/catalog.example.db

$TTL    3600
@               IN      SOA     . . ( 1 86400 3600 86400 3600 )
                IN      NS      invalid.
version         IN      TXT     "1"
masters         IN      A       ns0のIPv4アドレス
label.masters   IN      A       ns0のIPv4アドレス
label.masters   IN      TXT     "ns0-nsN."
allow-query     IN      APL      1:0/0  2:0/0
allow-transfer  IN      APL     !1:0/0 !2:0/0

masters.catalog.example

本レコード設定は、指定されたAレコード(orAAAAレコード)を、スレーブサーバーに対して、以下の設定を行うのと同等となる。

masters {
    ns0のIPアドレス;
};

デフォルトの設定となるため、今後追加されるゾーンに対しては、特に指定せずとも、指定されたマスターサーバーよりゾーン転送しようとするようになる。

またスレーブサーバー側では default-masters で指定可能である。

label.masters.catalog.example

本レコード設定は、Aレコード・TXTレコードを、【スレーブサーバー】に対して、以下の設定を行うのと同等となる。

server ns0のIPアドレス {
    keys "ns0-nsN.";
};

またこれは、スレーブサーバー側で default-masters で指定可能である。

allow-query.catalog.example

本レコード設定は、APRレコードを、【スレーブサーバー】に対して、以下の設定を行うのと同等となる。

allow-query { any; };

本設定によりスレーブサーバー側の設定に寄らず、本設定が「デフォルト」として機能する。

allow-transfer.catalog.example

本レコード設定は、APRレコードを、【スレーブサーバー】に対して、以下の設定を行うのと同等となる。

allow-trasnfer { none; };

本設定によりスレーブサーバー側の設定に寄らず、本設定が「デフォルト」として機能する。

DNSコンテンツスレーブサーバーの基本設定

/etc/rc.conf

以下の設定を追加する。

named_enable="YES"
named_chrootdir="/var/named"
altlog_proglist="named"

※altlog_proglist が既に設定済みの場合、「 named」を追加する。

あるいは下記コマンドを実行する(結果は同じ)。

sysrc named_enable=YES
sysrc named_chrootdir=/var/named
sysrc altlog_proglist+=named

/usr/local/etc/namedb/catalog/ ディレクトリ

install -d -o bind -g wheel -m 0755 /usr/local/etc/namedb/catalog

/usr/local/etc/namedb/named.conf

   1 --- /usr/local/etc/namedb/named.conf.orig       2018-10-11 00:09:07.998066000 +0900
   2 +++ /usr/local/etc/namedb/named.conf    2018-11-10 22:10:47.557521000 +0900
   3 @@ -16,15 +16,28 @@
   4         dump-file       "/var/dump/named_dump.db";
   5         statistics-file "/var/stats/named.stats";
   6 
   7 +       recursion       no;
   8 +       allow-query       { any;  };
   9 +       allow-recursion   { none; };
  10 +       allow-query-cache { none; };
  11 +
  12 +       allow-new-zones yes;
  13 +       catalog-zones {
  14 +               zone            "catalog.example"
  15 +               zone-directory  "/usr/local/etc/namedb/catalog"
  16 +               in-memory       no
  17 +               default-masters { ns0のIPアドレス key "ns0-nsN."; };
  18 +       };
  19 +
  20  // If named is being used only as a local resolver, this is a safe default.
  21  // For named to be accessible to the network, comment this option, specify
  22  // the proper IP address, or delete this option.
  23 -       listen-on       { 127.0.0.1; };
  24 +       listen-on       { any; };
  25 
  26  // If you have IPv6 enabled on this system, uncomment this option for
  27  // use as a local resolver.  To give access to the network, specify
  28  // an IPv6 address, or the keyword "any".
  29 -//     listen-on-v6    { ::1; };
  30 +       listen-on-v6    { any; };
  31 
  32  // These zones are already covered by the empty zones listed below.
  33  // If you remove the related empty zones below, comment these lines out.
  34 @@ -378,3 +391,20 @@
  35         };
  36  };
  37  */
  38 +
  39 +include "/usr/local/etc/namedb/ns0-nsN.key";
  40 +
  41 +zone "catalog.example" {
  42 +       type    slave;
  43 +       file    "/usr/local/etc/namedb/slave/catalog.example.db";
  44 +       notify  no;
  45 +       masters {
  46 +               ns0のIPアドレス key "ns0-nsN.";
  47 +       };
  48 +       allow-query {
  49 +               !{ !ns0のIPアドレス; any; }; key "ns0-nsN.";
  50 +       };
  51 +       allow-transfer {
  52 +               none;
  53 +       };
  54 +};
  55 

※カタログゾーン運用のための設定

付録1.APRレコード

参考文献