BIND中view的存在提供了一种较好的智能DNS方案,BIND可以根据用户的来源IP为其返回不同的Resource Record。
但是关于DNS动态更新的中并没有提及view(view只是BIND的一种智能DNS策略,跟DNS文档无关),那么在多个view中存在相同的zoneA的时候,如果对该zone发起动态更新请求,BIND9该更新哪个view中的zoneA呢?还是更新所有view中的zoneA?
阅读源代码就会发现,BIND9在多个view的情况下收到一个dynamic update请求时,只会更新某一个view中的zoneA。BIND9会根据发送update请求者的IP找出一个符合其matchlist的view,对这个view下面的zoneA做更新。
具体的更新策略见RFC2136,更新的实现代码见BIND9中的client.c::client_request函数和update.c::ns_update_start函数。
随便写个配置文件就可以验证这个结论了。