![位置相关的 DNS 重定向](https://linux22.com/image/659225/%E4%BD%8D%E7%BD%AE%E7%9B%B8%E5%85%B3%E7%9A%84%20DNS%20%E9%87%8D%E5%AE%9A%E5%90%91.png)
我有一个包含两个站点的公司网络。每个站点都有自己的域控制器和 DNS 服务,并且两个域控制器都为同一个 company.net 域提供服务。我们在站点之间设置了一个 mpls 网络,因此它们实际上是同一个网络,但位于不同的 IP 范围内。一个站点的 IP 范围是 10.1.1.. 另一个是 10.1.6... 域控制器正在相互通信,并且没有设置子域,因此两个站点都在 company.net 域中,除了本地 IP 地址外,站点的命名没有明显差异。
我正在此设置上试验文件服务器和复制,我尝试执行的操作如下:在站点 1 上设置名为 fileserv1 的文件服务器。在站点 2 上设置另一个名为 fileserv2 的相同文件服务器。通过双向 DFS 复制在两个服务器之间复制所有数据,以便在两个服务器上获得相同的数据集。到目前为止,它已完成并正常运行。
现在我想为所有用户设置一个重定向,以便他们可以通过一个通用的服务器名称(例如 Fileserv)访问其站点相应的服务器。
例如,他们访问站点 1 上的服务器 Fileserv,然后它将他们重定向到 fileserv1。当他们访问站点 2 上的 Fileserv 时,它将他们重定向到 fileserv2。
DHCP 设置(通过 dhcp 服务器)将主 dns 服务器指向每个站点上的本地 dns 服务器,因此所有站点上的用户都将使用其本地 dns 服务器作为主 dns 服务器。我可以在每个 DNS 服务器上创建一个 A 记录,指定两个不同的服务器,但这两个 dns 服务器正在相互通信并复制记录。
如果我向 DNS 添加两个 Fileserv A 记录,每个记录对应一个服务器的 IP 地址,我相信它将执行循环重定向,该重定向与当前站点无关。
我有什么选择可以实现我想要做的事情?搞乱 DNS 配置?登录脚本?还有其他的吗?在上述场景中,最佳做法是什么?
基本上,我希望每个站点在文件服务器上都有所有数据的本地副本以减少访问时间,但我希望用户能够通过通用名称访问它们,让网络后端根据用户的当前位置整理出要使用的服务器。
这是一个 VMware 环境,虚拟文件服务器,运行 Windows Server 2012 R2 Datacenter。这些服务器目前是实验性的服务器,上面没有任何实际运行的东西。
答案1
你的问题的答案是子网优先级。
如果解析器从 DNS 服务器收到多个 A 资源记录,并且其中一些记录的 IP 地址来自计算机直接连接到的网络,则解析器会首先对这些资源记录进行排序。这样可以强制计算机连接到距离它们较近的网络资源,从而减少跨子网的网络流量。
基本上,您只需添加指向同一域名的多个 A 记录,服务器就会对它们重新排序,以便客户端首先获取最近资源的 IP 地址。
但是正如 Michael Lewis 已经指出的那样,更好的方法是充分利用 DFS,因为您已经在使用它了。
通过双向 DFS 复制在两台服务器之间复制所有数据,以便在两台服务器上获得相同的数据集。到目前为止,它已经完成并且正在运行。
[…]
现在我想为所有用户设置重定向,以便他们可以使用通用服务器名称(例如 Fileserv)访问其站点的相应服务器。
这正是 DFS 所做的,您已经在使用它了。设置一个文件夹并在相应的站点上创建两个文件夹目标。
- 文件夹“我的共享”
- 目标 2:\\fileserv1\myshare
- 目标 2:\\fileserv2\myshare
完毕 ...
答案2
DNS 不是实现此目的的错误方法。如果您使用的是 Server 2012 R2,则应该考虑使用 DFS 和命名空间。https://technet.microsoft.com/en-GB/library/dn281957.aspx
这实际上就是你想要的。你创建一个命名空间并从每个位置添加一个文件服务器。然后你的共享位置就是命名空间,用户将被指向他们的本地服务器。
您需要在 Active Directory 中配置单独的 AD 站点才能使其正常工作。