BIND9でviewに含まれるゾーンのスレーブ(slave)を設定する(スレーブもview使用)





BIND9でviewに含まれるゾーンのスレーブ(slave)を設定する。

こちらで問い合わせ元によって異なる回答を返す設定を行ったが、
その場合、1つのゾーンに対して
複数のゾーンファイルが存在することになる。

このような場合、スレーブはどのゾーンファイルを
ゾーン転送でもらってくるのだろうか?

また、スレーブ側もプライマリ同様viewを設定している場合、
view毎に異なるゾーンファイルをもらってこなければならない。

これを解決する方法は次の通り。

スレーブがviewを設定していない場合の基本的な動作はこちらで確認。

今回は、スレーブもviewを設定しているとする。

この場合は、プライマリのアクセスコントロールリスト(ACL)と、
スレーブの設定も必要となる。

○概要

プライマリ側で、
スレーブのIPアドレスが狙いのviewに当てはまるように
ACLに定義する。

これだけでは、スレーブの物理インターフェースのIPアドレスがマッチする
viewのゾーンファイルしか得ることができない。

そこで、スレーブ側で、
view毎にゾーン転送に使用するIPアドレスのエイリアスを定義する。
(複数IPアドレスが必要となる)


具体的な設定は次の通り。

まず、スレーブにIPアドレスのエイリアスを追加する。
RedHat linuxでIPアドレスのエイリアスを追加する方法はこちらを参考

プライマリ・スレーブのIPアドレス
プライマリ:1.1.1.100
スレーブ:1.1.1.200
          1.1.1.201(エイリアス)

次に、プライマリのACLを変更する。

プライマリのnamed.conf
acl zone1 { ! 1.1.1.201; 1.1.1/24; };

view zone1 {

	match-clients { zone1; };

	zone "test.example.com" {
		type master;
		file "db.test.example.com.zone1";
	};

};

view zone2 {

	match-clients { any; };

	zone "test.example.com" {
		type master;
		file "db.test.example.com.zone2";
	};

};

次に、スレーブにてview毎にゾーン転送に使用するIPアドレスを指定する。

スレーブのnamed.conf
acl zone1 { 1.1.1/24; };

view zone1 {

	match-clients { zone1; };

	zone "test.example.com" {
		type slave;
		masters { 1.1.1.100; };
		file "bak/db.test.example.com.zone1";
		transfer-source 1.1.1.200;
	};

};

view zone2 {

	match-clients { any; };

	zone "test.example.com" {
		type slave;
		masters { 1.1.1.100; };
		file "bak/db.test.example.com.zone2";
		transfer-source 1.1.1.201;
	};

};

これで、スレーブの設定は以下のようになった。
zone1のゾーン転送時の送信元:1.1.1.200
zone2のゾーン転送時の送信元:1.1.1.201

プライマリのACLにて、
1.1.1.200は、ACL「zone1」
1.1.1.201は、ACL「any」
と、それぞれマッチする。

したがって、上記設定によって、
スレーブは、
zone1のゾーンファイルをプライマリのzone1から
zone2のゾーンファイルをプライマリのzone2から
もらうことができるようになった。