BIND9で問い合わせ元によって異なる回答を返す(view)





BIND9で問い合わせ元によって異なる回答を返すように設定する方法は次の通り。

www.test.example.com.に対して回答するIPアドレスを以下のように
使い分けたい。

1.1.1.0/24から問い合わせがあった場合

10.10.10.1

2.2.2.0/24(1.1.1.0/24以外)から問い合わせがあった場合

20.20.20.1


まず、送信元を判別するためのアクセスコントロールリスト(ACL)を作成する。

named.confにて、
acl zone1 { 1.1.1/24; };

今回は1.1.1.0/24と、それ以外という分け方にします。


次にviewという概念を使って、2つのパターンのゾーンを設定します。

named.confにて、
view zone1 {

	match-clients { zone1; };

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

};

named.confにて、
view zone2 {

	match-clients { any; };

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

};


ここまでの設定で、test.example.comドメインに関して
1.1.1.0/24から問い合わせがあった場合、
ACL「zone1」にマッチするため、
db.test.example.com.zone1ファイルの内容で回答する。

2.2.2.0/24から問い合わせがあった場合、
ACL「any」にマッチするため、
db.test.example.com.zone2ファイルの内容で回答するようになった。

match-clients { };には、ACLを使わずに直接IPアドレスを記述することも可能

最後に、db.test.example.com.zone1とdb.test.example.com.zone2に
それぞれ以下のように設定する。

db.test.example.com.zone1

www IN A 10.10.10.1


db.test.example.com.zone2

www IN A 20.20.20.1



これで、www.test.example.comドメインに関して
1.1.1.0/24から問い合わせがあった場合、
10.10.10.1と回答し、
2.2.2.0/24から問い合わせがあった場合、
20.20.20.1と回答するようになった。