ここですばやく簡単に説明します。ビュー間で共有される動的ゾーンを持つBIND9で、nsupdateを実行し、nsupdateを実行したのと同じビューに該当するクライアントからそのレコードをクエリすると、レコードの更新/作成/削除が正常に機能します。から。
nsupdateで使用したビューとは異なるビューからクエリを実行すると、NXDOMAINがスローされるか(新しいレコードを追加する場合)、変更/更新が発生した場合に、任意の時間まで古いレコード情報が表示されます(たとえば15分)パス、または私は強制的に行います$ rndc freeze && rndc thaw
。 $ rndc sync
問題を解決するために何もしないようです-ジャーナルのフラッシュは約15分でフラッシュするように文書化されているので、それが単なるジャーナルファイルであることを望んでいました。
それが明確でない場合は、開始するための擬似コードを次に示します。
BINDビュー
view "cdn-redir" {
match-clients { 10.1.1.0/24; 10.1.2.0/24; };
include "cdn-zone.db";
include "dynamic-zone.db";
};
view "default" {
match-clients { any; };
include "dynamic-zone.db";
};
コマンドラインの例
user@ns:~$ nsupdate -k rndc.key
> server localhost
> zone example.com.
> update add foohost.example.com. 600 A 10.5.6.7
> send
> quit
user@ns:~$ dig foohost.example.com (resolv.conf points to 127.0.0.1)
[ responds with correct answer 10.5.6.7 ]
その他、nsupdateと同じビューに陥るホスト
user@10.11.12.50:~$ foohost.example.com (resolv.conf points to above nameserver)
[ responds with correct answer 10.5.6.7 ]
他の場所では、ホストはnsupdateとは異なるビューに陥ります
user@10.1.1.50:~$ dig foohost.example.com (resolv.conf points to above nameserver)
[ responds with NXDOMAIN even though I'm asking the same server ]
この時点で、我慢すれば問題は最終的には解決するでしょう(たぶん15分ほど)が、私には忍耐の余裕がないことが多いので$ rndc freeze && rndc thaw
、ネームサーバーで強制的に問題を修正せざるを得ません。
裏側
完全に逆に言えば、「cdn-redir」ビューに該当するアドレスからサーバーに対してnsupdateを実行すると、問題は元に戻ります。"cdn-redir"に一致するクライアントからの後続のクエリは、nsupdateの直後に "rndc freeze / thaw"をいじることなく正しいレコードを取得しますが、 "cdn-redir"のビューの外にあるアドレスからのクエリにはdelay / rndcの問題があります。
私の究極の質問
42と単純であれば、両手を広げて...
DHCPサーバーからの動的更新を見逃すことを恐れて、「rndcフリーズ&& rndc解凍」する必要を避けたいのですが。更新されたレコードをビュー間でより効果的/効率的に同期させる方法を知っている人はいますか?
編集:BIND 9.9.5 / Ubuntu 14.04ですが、UbuntuとBINDの両方の以前のバージョンで発生していました。
皆さんありがとう!
アンドリューBからのリクエストに応じて、編集された(そして部分的に)ゾーンは次のとおりです。
$ORIGIN .
$TTL 3600
example.com IN SOA ns1.example.com. HOSTMASTER.example.com. (
2009025039 ; serial
900 ; refresh 15
600 ; retry 10
86400 ; expire 1 day
900 ; minimum 15 min
)
NS ns1.example.com.
$ORIGIN example.com.
$TTL 30
AEGIS A 10.2.1.60
TXT "31bdb9b3dec929e051f778dda5abd0dfc7"
$TTL 86400
ts-router A 10.1.1.1
A 10.1.2.1
A 10.1.3.1
A 10.1.4.1
A 10.1.5.1
A 10.1.6.1
A 10.1.7.1
A 10.1.8.1
A 10.2.1.1
A 10.2.2.1
A 10.2.3.1
ts-server A 10.2.1.20
ts-squid0 A 10.2.2.20
ts-squid1 A 10.2.2.21
$TTL 600
tssw4 A 10.2.3.4
tssw5 A 10.2.3.5
tssw6 A 10.2.3.6
tssw7 A 10.2.3.7
; wash rinse repeat for more hosts
$TTL 30
wintermute A 10.2.1.61
TXT "003f141e5bcd3fc86954ac559e8a55700"
zone
私の考えがホーカンのものと同様の方向に進んでいたので、私は宣言を見たいと思いました。
server
ではなくを使用local external-ip-address
すると、ゾーンのMNAME(ゾーンのSOA内)を参照し、別のネームサーバーに移動してDNSを更新する可能性があることに注意する必要があります(特に、hidden-master / public-slaveがある場合)またはステルスマスターネットワークトポロジ)。