设置 DNS 缓存,以便为我的外部可访问服务器的域请求提供内部地址响应

设置 DNS 缓存,以便为我的外部可访问服务器的域请求提供内部地址响应

我很难在互联网上找到任何解释如何做到这一点的内容......

我正在运行 Ubuntu 14.04,存储库当前为 Bind9

我有一个权威的 DNS 服务器,它在我的网络上托管我的域名和我的 Web/邮件服务器,该服务器位于单个静态外部 IP 地址后面,该 IP 地址由大楼内的所有其他计算机共享。

我在第二台机器上为所有传出的 DNS 请求设置了 DNS 缓存,我希望当我输入 www.my.domain 时,DNS 缓存将提供 Web 服务器的内部 IP 而不是外部 IP。

我还没有找到有关如何执行此操作的任何信息,但我认为我并没有在寻找正确的术语。

我尝试将地址添加到 /etc/hosts 文件,但这对网络的其余部分不起作用。

我不知道从哪里开始看,有人能指出我正确的方向吗?

谢谢。

答案1

您要查找的搜索词是“拆分 DNS”或“拆分视图”。人们普遍认为这是一个坏主意,因为从长远来看,它最终会造成管理上的麻烦。

您可能希望考虑创建一个不会在互联网上公开的私人转发子域。(即int.example.com,您拥有的域下的某个域)将私有 IP 地址的 DNS 记录放在此域中。它不会解决www.example.com选择性返回私有 IP 的问题——这通常应该在单个系统上解决——但它至少会为您的私有网络提供专用的 DNS 记录。

答案2

您可以使用未绑定它完全支持您想要执行的操作。它将替代 BIND,您的配置将如下所示;

local-zone: "example.com." transparent local-data: "server1.example.com. IN A 192.168.0.10" local-data: "server2.example.com. IN A 192.168.0.11" local-data: "serverN.example.com. IN A 192.168.0.12"

它的作用是什么;

  1. 定义区域“example.com”。
  2. transparent指的是如果没有local-data匹配的记录,则会传递到外部/转发器名称服务器的模式。
  3. local-data定义您想要在内部覆盖的记录。server1.example.com 可能有一个外部 IP 地址 1.2.3.4,但对于使用此 DNS 服务器的任何客户端,它都会显示为 192.168.0.10。

我之前在大型办公网络上使用过几次,效果非常好。您还可以定义多个local-zone定义来覆盖任意数量的域。

相关内容