如何覆盖 bind9 视图中的一个条目?

如何覆盖 bind9 视图中的一个条目?

我为一个区域配备了两台辅助 DNS 服务器。当其中一台服务器收到来自特定范围的请求时,应该修改其中一条记录。

为了分割答案,我打算使用一个视图:

acl dmz { 192.168.0.0/24; localhost; };
acl lan { 10.0.0.0/8; };

view dmz {
  match-clients { dmz; };
  zone "example.info" {
    type slave;
    masters { 10.100.10.254; };
    file "/etc/bind/db.example-dmz.info";
  };

};

view lan {
  match-clients { lan; };
  zone "example.info" {
    type slave;
    masters { 10.100.10.254; };
    file "/etc/bind/db.example-lan.info";
  };

};

上面的配置分裂了答案,但是答案是相同的。

我希望,当设备192.168.0.10(在 中dmz)请求 的分辨率时foo.example.info,发回192.168.0.20而不是来自传输区域的答案。

如何覆盖此单一条目?

答案1

使单个从属名称服务器成为区域的主服务器foo.example.info,并仅在所需的视图中显示它,例如

view all-clients {
  match-clients { lan; !192.168.0.10/32; dmz; };
  zone "example.info" {
    type slave;
    masters { 10.100.10.254; };
    file "/var/bind/db.example.info";
  };
};

view exception-host {
  match-clients { 192.168.0.10; };
  zone "foo.example.info" {
    type master;
    file "/etc/bind/foo.example.info-for-192.168.0.10";
  };

  zone "example.info" {
    in-view all-clients;
  };
};

现在,当 192.168.0.10 请求查找时,它将看到“exception-host”视图,并为记录“foo.example.info”获得不同的响应。否则,它将获得与所有其他执行查找的客户端相同的结果。

答案2

您的视图中缺少“match-clients”语句来指示哪些 acl 可以使用该视图。例如,您可能需要类似以下内容:

view dmz {
  match-clients { dmz; };
  zone "example.info" {
    type slave;
    masters { 10.100.10.254; };
    file "/etc/bind/db.example-dmz.info";
  };

};

以及“lan”视图的对应条目。

相关内容