BIND9でNOTIFYおよびviewの各々の使い方は以下で書いてある通りだが、
BIND9でNOTIFYを使用して更新を通知する
BIND9でviewに含まれるゾーンのスレーブ(slave)を設定する(スレーブもview使用)
プライマリとスレーブが両方viewを使用している環境でNOTIFYを使用しようとすると
また少し設定が必要となる。
上記設定をそれぞれ実施してもview毎のNOTIFYでの適切なやり取りはできない。
match-clients { };の制御によって
いずれか1つのviewに対するNOTIFYしか正常に動作しない。
view毎のNOTIFYを使用する方法は次の通り。
○概要
プライマリおよびスレーブにてview毎のIPアドレスのエイリアスを設定して、
view毎に異なるIPアドレスでNOTIFYのやり取りを行う。
具体的な設定は次の通り。
まず、プライマリおよびスレーブにIPアドレスのエイリアスを追加する。
RedHat linuxでIPアドレスのエイリアスを追加する方法はこちらを参考
プライマリ・スレーブのIPアドレス
プライマリ:1.1.1.100
1.1.1.101(エイリアス)
スレーブ:1.1.1.200
1.1.1.201(エイリアス)
次に、プライマリでNOTIFYを送出する際の送信元をview毎に指定する。
プライマリの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"; notify-source 1.1.1.100; notify yes; also-notify { 1.1.1.200; }; }; }; view zone2 { match-clients { any; }; zone "test.example.com" { type master; file "db.test.example.com.zone2"; notify-source 1.1.1.101; notify yes; also-notify { 1.1.1.201; }; }; };
続いてスレーブの設定
スレーブのnamed.conf
acl zone1 { ! 1.1.1.101; 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.101; }; file "bak/db.test.example.com.zone2"; transfer-source 1.1.1.201; }; };
プライマリのzone2のNOTIFY送信元が
スレーブのACL「znoe1」マッチしないように設定しています。
また、スレーブのzone2のmasters { };を
プライマリのzone2のNOTIFY送信元と合わせています。
そうしないと、スレーブが受け取ったNOTIFYを無視します。
上記設定よって、zone1では、
プライマリ(1.1.1.100)とスレーブ(1.1.1.200)でNOTIFYおよびゾーン転送のやり取りをし、
zone2では、
プライマリ(1.1.1.101)とスレーブ(1.1.1.201)でNOTIFYおよびゾーン転送のやり取りをするようになった。
これで、view毎にNOTIFYによる動作が正常に行えるようになった。