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

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

我猜想一定有一个合理的方法来解决我的问题,但我正在尝试获取一些有关最佳实践的建议。

我最近跳槽到一家网页设计公司,我们需要能够伪造我们正在运营的网站的 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?

答案1

如果这一切只是处理覆盖主机名-> IP 查找,那么最容易设置和管理的(特别是如果您有快速变化的需求)可能是开发人员只需在本地添加相关名称即可覆盖正常解析主办方文件,而不要管 DNS。

但是,如果您想使用 DNS 执行此操作,使用 BIND 作为解析器服务器,并且只需要覆盖特定名称(而不是整个区域),我相信您需要使用响应政策区 (RPZ)功能。这可能可以与使用视图以使这些变化只影响特定的客户。

我已经提供了一个可以执行您特别要求的操作的示例,但请查看上面链接的文档,以了解如何覆盖事物的所有其他选项以及更完整的示例。

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

...

zone "development-overrides" {type master; file "master/development-overrides"; allow-query {none;}; };

引用的区域文件具有正常的主文件语法,但语义是 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

答案2

要么修改开发人员机器上的 hosts 文件(/etc/hosts在 UNIX/Linux 和C:\windows\system32\drivers\etc\hostsWindows 上),要么使用 DNS 上的视图设置,定义一个包含应该“欺骗”的子网的 ACL,并在视图中使用“match-clients”来匹配那些客户端。

关于您的示例,它是一个 CNAME 字段而不是 NS 字段。

相关内容