前回は、ISC BIND DNSサーバについて、SOAレコードの書き方を中心に解説しました。今回は、SOAレコードの主要なパラメータに関連してゾーン転送設定をまとめます。
ゾーン転送のタイミングは、マスター/スレーブそれぞれの設定に依存する
前回は、マスター側で、SOAレコードのゾーン転送関連パラメータの最適値を検討しました。しかし、マスターがSOAレコードでスレーブサーバに提示する値が、必ずスレーブサーバに都合の良いものであるとは限りません。
前回述べたように、ゾーン転送のタイミングは、マスター/スレーブ相互の都合を検討して決定されるべきもので、マスターの一方的な都合をスレーブサーバに強制した場合、数1000個のゾーンのスレーブを務めるサーバなどでは、最悪、スレーブサーバ側で処理しきれなくなります。
多数のユーザ企業にセカンダリサーバサービスを提供するISPの場合、各ユーザ企業の担当者とゾーン転送のタイミングを協議するのは事実上不可能です。
BINDには、ゾーン転送のタイミング等にスレーブ側で制限を加えるための設定項目が提供されています。今回は、マスター/スレーブ双方について、ゾーン転送の安全性に拘わる設定項目を検討してみます。
スレーブサーバ側でゾーン転送タイミングを制限する
- min-refresh-time, max-refresh-timeREFRESHの値の範囲を制限するパラメータです。min-refresh-timeが下限、max-refresh-timeが上限を定めます。スレーブサーバでこれらの値が設定されている場合、マスターサーバがSOAレコードで指定したREFRESH値が制限範囲を超えた場合、スレーブサーバは、強制的に上限値あるいは下限値にてREFRESHを行います。
- min-retry-time, max-retry-time
RETRYの値の範囲を制限するパラメータです。min-retry-timeが下限、max-retry-timeが上限を定めます。SOAレコードでの設定同様、それぞれmin-refresh-time, max-refresh-timeで指定した値の整数分の一の値を設定します。
これらのパラメータは、options部、ゾーン定義部いずれでも設定可能です。
- max-transfer-time-in
一回のゾーン転送の継続時間の最大値です(分単位)。指定した時間を経過してもゾーン転送が終了しない場合、そのゾーン転送はその時点で中止されます。省略時の規定値は120(分)です。サーバ数台程度の小規模なサイトのひとつのゾーンの転送にかかわる時間は、WAN経由でも10ms前後で終了します。多数のゾーンを転送する場合は、実際にすべてのゾーンの転送が終了するまでの所要時間をnamedのログで確認した後、すべてのゾーンを転送するのに十分な値を設定します。
論理的に設定可能な最大値は40320分(28日)ですが、ゾーン転送が10時間以上に及ぶなどという場合は、この値を変更して対応するよりも、複数のネームサーバに分散させるなど、合理的な対策を講じるべきです。これらのパラメータは、options部、ゾーン定義部いずれでも設定可能です。
-
transfer-format ( one-answer|manyanswers )
マスターからゾーン転送する際に、複数のレコードをパケットのサイズが許す範囲でまとめて転送する(”manyanswers”)か、一回に1レコード(”one-answer”)とするかを指定します。このパラメータは、ゾーン単位で指定することはできません。named.confのグローバル部分または、options{}, server{}, view{}いずれかの内部で指定します。特定のマスターサーバに固有の値を指定する場合は、後述するserver{}を利用しることができます。 -
transfers-in
並列処理可能なゾーン転送の最大数を規定します。省略時の規定値は10です。 -
transfer-per-ns
マスターサーバ毎に並列処理可能なゾーン転送の最大数を規定します。省略時の規定値は2です。
以下は、これらのパラメータを指定したスレーブサーバのnamed.confの記述例です。
ゾーン転送関連パラメータを指定したスレーブサーバのnamed.conf
version “unknown”
hostname “somehost.some.domain”;
directory “/var/named/”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
pid-file “/var/run/named/named.pid”;
//
listen-on port 53 {
127.0.0.1;
192.168.0.2;
};
auth-nxdomain yes;
// Zone transfer specifications
notify no;
// Zone transfer parameters for SLAVE zone(s)
max-refresh-time 86400;
min-refresh-time 3600;
max-retry-time 3600;
min-retry-time 900;
max-transfer-time-in 60;
transfer-in 10;
transfer-per-ns 2;
//
allow-transfer { none; };
allow-query-cache { none; };
allow-query { any; };
//
recursion no;
};
include “/etc/myzones.zones”;
次回は、ゾーンファイルにホストを登録してみます。