2 台のマシン間でバインド マスター -> スレーブ設定を実装しようとしていますが、スレーブ マシンに通知するためにマスターで使用される BIND の IP アドレスに関して問題があります。
私の設定は次のとおりです:
Master: master.site.com - 10.0.0.2
Slave: slave.site.com - 10.0.0.10
マスターは権限ゾーンを持っており、site.com
ゾーンが変更されるとすべてのスレーブに通知するように設定されています。ゾーンは正常に動作しています。クエリに正常に応答し、dig @10.0.0.2 -t SOA site.com
それで、マスターではこれを持っていますnamed.conf.options
:
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on { 10.0.0.2; };
listen-on-v6 { any; };
allow-query { any; };
recursion yes;
allow-recursion { localhost; };
allow-notify { localhost; };
allow-transfer { localhost; 10.0.0.10; };
version none;
notify yes;
also-notify { 10.0.0.10; };
};
スレーブについて:
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on { 10.0.0.10; };
listen-on-v6 { any; };
allow-query { any; };
recursion yes;
allow-recursion { localhost; };
allow-notify { localhost; 10.0.0.2; };
allow-transfer { localhost; 10.0.0.2; };
version none;
};
まず、通知が機能していないようですtcpdump
。スレーブ マシンで使用すると、次のメッセージが表示されました。
02:32:50.269377 IP 10.0.0.1.15271 > 10.0.0.10.53: 64103 notify [b2&3=0x2400] [1a] SOA? site.com. (85)
02:32:50.269662 IP 10.0.0.10.53 > 10.0.0.1.15271: 64103 notify Refused- 0/0/0 (27)
ご覧のとおり、マスターは10.0.0.2
通知を送信するときにリッスンするように設定されていますが、通知はメイン IP アドレスを使用して送信されており10.0.0.1
、論理的にはスレーブが通知を拒否しています...
なぜマスターは通知を送信しないのですか10.0.0.2
?それを強制できる設定はありますか?マシンは3つのIPを所有しています。1つはWebサイト用、もう1つは電子メール用、もう1つはDNS用です...それを作る必要がありますのみDNS に使用します10.0.0.2
が、listen-on
送信トラフィックでは機能しないようです...
これをどうすれば修正できますか?
答え1
オプションを探していますnotify-source
。バインドアーム:
通知元
通知ソースは、NOTIFY メッセージを送信するために使用するローカル ソース アドレスと、オプションで UDP ポートを決定します。このアドレスは、スレーブ サーバーのマスター ゾーン句または allow-notify 句に指定する必要があります。このステートメントはすべてのゾーンの通知ソースを設定しますが、構成ファイルのゾーンまたはビュー ブロック内に通知ソース ステートメントを含めることで、ゾーンごとまたはビューごとに上書きできます。
BIND がこのように動作する理由は、ほとんどのアプリケーションでかなり一般的です。ローカルで開始されたトラフィックの送信元 IP は、デフォルトで、ルートに関連付けられたインターフェイスのプライマリ IP になります。Linux システムでは、キーワードにip route show
続く値を入力して確認することで、各ルートに関連付けられた送信元 IP を表示できますsrc
。