我很难在互联网上找到任何解释如何做到这一点的内容......
我正在运行 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"
它的作用是什么;
- 定义区域“example.com”。
transparent
指的是如果没有local-data
匹配的记录,则会传递到外部/转发器名称服务器的模式。local-data
定义您想要在内部覆盖的记录。server1.example.com 可能有一个外部 IP 地址 1.2.3.4,但对于使用此 DNS 服务器的任何客户端,它都会显示为 192.168.0.10。
我之前在大型办公网络上使用过几次,效果非常好。您还可以定义多个local-zone
定义来覆盖任意数量的域。