我猜必须有一种合理的方法来解决我的问题,但我正在尝试就实施的最佳实践获得一些建议。
我最近搬到了一家网页设计公司,我们需要能够欺骗我们正在开发的网站的 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?
如果这一切都只是处理覆盖主机名-> ip 查找,那么最容易设置和管理(特别是如果您有快速变化的需求)是开发人员通过在本地添加相关名称来简单地覆盖正常解析主机文件并单独保留 DNS。
但是,如果您想使用 DNS 执行此操作,使用 BIND 作为解析服务器,并且您只需要覆盖特定名称(而不是整个区域),我相信您将需要使用响应策略区域 (RPZ)功能。这可以结合使用视图来完成,以使这些更改只影响特定的客户端。
我已经包含了一个示例,该示例可以执行您特别要求的那种事情,但请查看上面的链接文档以了解有关如何覆盖事物和更完整示例的所有其他选项。
引用的区域文件具有正常的主文件语法,但语义是特定于 RPZ 的(请阅读RPZ 文档!):
修改开发人员机器上的主机文件(
/etc/hosts
在 UNIX/Linux 和C:\windows\system32\drivers\etc\hosts
Windows 上)或使用 DNS 上的视图设置,定义一个 ACL,其中包含应该“欺骗”的子网并在视图中使用“匹配客户端”只匹配那些客户。关于您的示例,它是 CNAME 字段而不是 NS 字段。