如何有选择地覆盖绑定 DNS 服务器上的某些 A 记录?

Mik*_*rry 13 domain-name-system ubuntu bind

我猜必须有一种合理的方法来解决我的问题,但我正试图就最佳实践获得一些建议。

我最近搬到了一家网页设计公司,我们需要能够欺骗我们正在处理的网站的 DNS 条目。然而,我们只想覆盖某些 A 记录,但保留其他记录,以便站点似乎可以正常工作。

即:我们想让“support.abcd.com”在本地解析,但其他所有内容都转到真实站点。这将使我们能够设计/演示一个功能齐全的站点,仅在本地进行工作。

我们有一个内部 BIND DNS 服务器 (9.9.5.dfsg-3)。

根据上面的示例,我的区域文件应该如何查找“abcd.com”?

编辑:这行得通吗?

          IN ns1
abcd.com. IN NS ns1
support.abcd.com. IN A 192.168.1.1
faq.abcd.com.     IN A 192.168.1.1
*.abcd.com.       IN NS abcd.com     <- External?
Run Code Online (Sandbox Code Playgroud)

Håk*_*ist 17

如果这一切都只是处理覆盖主机名-> ip 查找,那么最容易设置和管理的方法(特别是如果您的需求变化很快)是让开发人员通过在其本地添加相关名称来简单地覆盖正常解析hosts文件,并单独保留 DNS。

但是,如果您想通过 DNS 执行此操作,使用 BIND 作为解析器服务器,并且您只需要覆盖特定名称(而不是整个区域),我相信您将需要使用响应策略区域 (RPZ)功能。这可以结合视图的使用来完成,以使这些更改仅影响特定客户端。

我已经包含了一个示例,该示例可以执行您特别要求的操作,但请查看上面的链接文档,了解有关如何覆盖内容和更完整示例的所有其他选项。

options {
  ...
  response-policy { zone "development-overrides"; };
};

...

zone "development-overrides" {type master; file "master/development-overrides"; allow-query {none;}; };
Run Code Online (Sandbox Code Playgroud)

引用的区域文件具有正常的主文件语法,但语义是特定于RPZ 的(请阅读RPZ 文档!):

$TTL 1H
@                       SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h)
                        NS  LOCALHOST.

support.example.com     A   192.168.1.1
faq.example.com         A   192.168.1.1
Run Code Online (Sandbox Code Playgroud)