私有 DNS 区域的最佳模型

私有 DNS 区域的最佳模型

我在一家小公司工作,拥有几个公共 URL。DNS 由一家大型 ISP 托管,并且拥有几个 A 和 CNAME 记录。

在我们的私有网络中,我们有许多相互连接的服务器和主机。我使用 yp/nis 发布它们的名称。当 Linux 工作站配置到 nis 域并设置 nsswitch.conf 文件时,我就可以使用这些名称。

Windows 工作站必须手动更新其主机文件。

简单来说,我想做的是拥有一个本地 DNS 服务器来扩展域company.com,但只用于我的内部系统。例如,我将在 IP 10.10.10.10 上运行绑定。我的本地系统将获得额外的条目,但 10.10.10.10 不会尝试将有关 company.com 的任何内容传递到上游。

www.company.com- 地球上每个人都可以看到

ralph.company.com- 仅对使用 10.10.10.10 的内部系统可见

这可能吗?或者 10.10.10.10 必须定义一个子域。

www.company.com

ralph.sandbox.company.com

答案1

它会按预期工作,如果您将区域添加到内部 DNS 解析器,则可以屏蔽您的公共域。如果您使用 ISP 的 DNS 解析器,则必须按照问题中提到的方式设置自己的解析器。

您的内部 DNS 解析器必须添加到resolv.conf网络上每台机器上的文件(或 Windows 上的等效文件)中,并且必须允许递归查询,否则您的主机将无法解析任何公共名称。

这样,您内部网络上的主机将看到 的本地版本company.com,而世界其他地方将看到公共 ISP 托管的版本。

但是有一个问题:本地区域内不存在的任何记录company.com都不会被内部网络上的任何机器看到,因为内部 DNS 不会将任何*.company.com查询转发到外部世界。因此,为了让您的内部网络能够访问,www.company.com您必须将记录添加到内部 DNS 服务器中的该区域。

答案2

首先:是的,这是可能的。

一种方法是实施水平分割 DNS, 哪个

是域名系统 (DNS) 实现的功能,用于提供不同的 DNS 信息集,通常由 DNS 请求的源地址选择。

但是,如果您的域名的权威名称服务器由您的提供商托管,则这将不起作用。

因此,我想到两种可能性,但还有更多(DNS 非常复杂,因此至少对我来说,不可能写出一个一刀切的答案):

  • 自行托管名称服务器,例如使用绑定

  • 让您的提供商继续托管权威名称服务器。在您的私有网络内设置另一个(这次是递归)名称服务器,例如未绑定. 将您的客户端指向该服务器以进行域名解析。

    将您私有网络内需要的记录放入配置中,例如通过:

    local-data: "ralph.company.com A 10.10.10.10"
    local-data-ptr: "10.10.10.10 ralph.company.com"
    

    将请求转发到unbound可公开访问的 DNS 解析器,例如通过

    forward-zone:
      name: "."
      forward-addr: ${RESOLVER_IP_1}
      forward-addr: ${RESOLVER_IP_2}
    

    编辑:采用第二种方法可以防止您遇到 André Fernandes 的回答中提到的“陷阱”。

相关内容