我需要在 Linux DNS 服务器中设置多租户 DNS 解决方案。目前我为多家公司提供服务:ABC 公司、XYZ 公司等...
我需要创建
- 转运区
- 反向前进区
我可以轻松创建带有域的转发区域美国广播公司 我面临的挑战是,我的每个客户组件都共享相同的 IP 地址。因此,如果我创建反向转发区域,最终会得到如下结果:
- abc.com 1.1.1.1 主机.abc.com
- xyz.com 1.1.1.1 主机.xyz.com
如果我对 host.abc.com 执行反向查找,它可以正常工作...但如果我在 Windows DNS 中对 1.1.1.1 执行反向查找,我会得到如下负载平衡响应:
- 第一次尝试:host.abc.com
- 第二次尝试:host.xyz.com
- 第三次尝试:host.abc.com
我想在 DNS 配置中添加逻辑,以根据源机器主机名处理 DNS 反向查找,并在每次尝试时使用正确的主机名进行响应。
解决方法:创建多个 DNS,但这不可扩展。
答案1
取决于您使用的名称服务器软件。在 BIND 中,您将创建多个视图。视图将与查询的源 IP 地址匹配。在每个视图中,您将拥有不同的配置 - 全部位于一个服务器实例下。
或者,如果源 IP 始终相同,您可以让名称服务器监听多个 IP 地址,并让您的视图与接收查询的名称服务器 IP 相匹配。然后,您可以配置每个“公司”将查询发送到不同的 IP。
您无法做的是根据查询源认为的主机名直接进行匹配。
根据后续评论,您之前似乎依赖客户端将特定域附加到查询本身。您也可以在 BIND 中执行类似操作,只需创建包含该域的区域即可。
即,为 1.2.0.192.in-addr.arpa.foo.example.com 创建一个区域,为 1.2.0.192.in-addr.arpa.bar.example.net 创建一个区域。但是,如果其中一个客户端未将域名附加到其查询中,则此方法将不起作用。因此,您不应依赖此方法,即使当您使用基于 Windows 的名称服务器时,该方法似乎大多数时候都有效。
也就是说,最好的方法就是使用唯一的 IP 地址!