有关多宿主服务器的 Active Directory 设计的建议

Mas*_*imo 11 networking domain-name-system active-directory domain-controller

客户要求我为具有以下要求的场景提出一个有效的 Active Directory 设计(简化,实际上它们要糟糕得多):

  • 客户端系统有一个子网。
  • 服务器系统有一个子网。
  • 两个网络没有连接。
  • 每个服务器应该有两张网卡,一张在服务器的网络上,另一张在客户端的网络上。
  • 客户端和服务器之间的流量应该只在客户端的网络上流动。
  • 服务器之间的流量应该只在服务器的网络上流动。
  • 这也应该适用于域控制器。

不用说,这与 Active Directory 使用 DNS 定位域控制器的方式不太相符。任何可能的方法都会导致以下情况之一:

  • DC 在域 DNS 中注册其“客户端”IP 地址;客户端将使用该地址与他们交谈,但服务器和 AD 复制流量也是如此。
  • DC 在域 DNS 中注册其“服务器端”IP 地址;服务器将使用该地址与它们通信,复制流量将在该网络上流动,但客户端将无法访问它们。
  • DC 将在域 DNS 中注册两个IP 地址;任何系统都会做些什么来达到他们的目标,这是任何人的猜测。

当然,这些要求完全是疯狂的,不可能同时满足所有要求,除非使用疯狂的解决方案,例如在两个网络上拆分 DNS 服务并手动填充其 SRV 记录(argh)或让服务器定位DC 使用 DNS,客户端使用 WINS(双参数)定位 DC。

我想出的解决方案是在“服务器”网络上有两个 DC,在“客户端”网络上有两个 DC,定义两个 AD 站点并仅通过 DC 复制流量跨越两个网络之间的边界。这仍然需要一些 DNS 修改,因为每个服务器仍然有两个网卡(除了两个服务器端 DC 和纯粹的后端服务器),但它至少有一些工作机会。

除了尽快逃离之外,还有什么建议吗?

Wea*_*ver 5

首先让我说我同意许多其他人的看法——要么说服客户,要么跑。

但是,鉴于您列出的要求(有许多未列出),我至少可以想到(并经过部分测试)实现这一目标的基础。

有几个具体方面需要考虑。

  1. Active Directory 域服务复制
  2. 客户端/成员服务器的 DC Locator 流程
  3. 非 AD DS 服务的名称解析和流量

一和二有很多共同点——一般来说,我们在这一点上是微软的心血来潮,必须在微软的 AD DS 流程范围内工作。

第三,我们还有一点工作空间。我们可以选择用于访问服务(文件、数据库实例等)的标签。

这是我的建议:

构建域控制器 (DC)

  • 可能至少有两个。
  • 每个 DC 将有两个 NIC,每个 IP 网络/AD DS 站点一个——现在将它们称为 clt 和 srv。
  • 现在在 srv 网络中的每个 DC 中配置一个 NIC。

正确配置 AD 站点和服务

  • srv 站点和子网
  • clt 站点和子网
  • 从站点取消选中“桥接所有站点链接”-> 站点间传输-> 右键单击​​“IP”
  • 如果 DEFAULTIPSITELINK 存在(或者您重命名它),请删除它,以便没有配置站点链接。请注意,这对我来说是未知的——KCC 可能会将错误转储到目录服务事件日志中,说明两个站点(srv 和 clt)未以不同的时间间隔连接。但是,两个 DC 之间的复制仍将继续,因为它们可以使用同一站点中的 IP 相互联系。

在 AD DS 集成 DNS 中配置附加区域

  • 如果您的 AD DS 域是acme.local,请创建第二个主 AD 集成区域,并启用名为clt.acme.local 的动态更新。

在 DC 上配置第二个 NIC

  • 这些 NIC 将是 clt 网络/站点中的 NIC。
  • 设置他们的IP
  • 这是神奇的部分——适配器属性 -> IPv4 属性 -> 高级 -> DNS 选项卡 -> 将此连接的 DNS 后缀设置为clt.acme.local -> 选中注册此连接... -> 选中使用此连接的DNS 后缀... -> 一路走好。
  • ipconfig /注册DNS
  • 这将在 clt.acme.local 区域中注册 clt NIC IP——为我们提供一种方法来控制稍后使用哪个 IP/网络。

配置成员服务器网卡

  • clt 站点中的成员服务器 NIC 必须具有它们的 DNS 后缀和复选框,并且与上面一样相应地设置。
  • 这些设置可以与静态和 DHCP 一起使用,没关系。

在站点中配置 DNS [存根] 解析器行为

  • DC's -> 配置 DC srv NIC 以使用自身和其他 DC srv NIC IP。将 DC clt NIC DNS 留空(尽管需要静态 IP)。(默认情况下,DC DNS 服务器仍将侦听所有 IP)。
  • 成员服务器 -> 配置成员服务器 srv NIC 以使用 DC srv 站点 IP。将成员服务器 clt NIC DNS 留空(可以使用静态 IP)。
  • 客户端/工作站 -> 配置 DNS(通过 DHCP 或静态)以使用 DC 的 clt NIC IP。

适当地配置映射/资源

  • 当服务器相互通信时,请务必使用 .acme.local -> 将解析为 srv 网络 IP。
  • 当客户端与服务器通信时,请务必使用 .clt.acme.local -> 将解析为 clt 网络 IP。

我在说什么?

  • AD DS 复制仍然会发生,因为 DC 可以相互解析并相互连接。acme.local 和 _msdcs.acme.local 区域将仅包含 DC srv NIC IP 的 AD DS 复制将仅发生在 srv 网络上。
  • 成员服务器和工作站的 DC 定位器进程将起作用——尽管当站点未知时,各种 AD DS 进程的各个部分存在延迟的可能性,如果返回多个 DC IP——它们将被尝试、失败并继续直到一个工作。对 DFS-N 的影响也尚未完全评估——但仍会起作用。
  • 如果您按照所述使用上述 .acme.local 和 .clt.acme.local 标签,非 AD DS 服务将正常运行。

我还没有完全测试过这个,因为它相当可笑。 然而,这个(哇,冗长)答案的重点是开始评估它是否可能——而不是是否应该完成。

@注释

@Massimo 1/2 不要将 acme.local 区域中的多个 AD DS 站点混淆,从​​而将 acme.local 区域中的那些站点中的 DC 填充的 SRV 记录与需要 clt.acme.local 区域中的 SRV 记录混淆。客户端的主要 DNS 后缀(以及它们加入的 Windows 域)仍将是 acme.local。客户端/工作站只有一个 NIC,主 DNS 后缀可能源自 DHCP,设置为 acme.local。

clt.acme.local 区域不需要 SRV 记录,因为它不会在 DC 定位器进程中使用。它仅由客户端/工作站使用 clt 网络中的成员服务器 IP 连接到成员服务器的非 AD DS 服务。AD DS 相关进程(DC 定位器)不会使用 clt.acme.local 区域,而是使用 acme.local 区域中的 AD DS 站点(和子网)。

@马西莫 3

clt 和 srv AD DS 站点都将有 SRV 记录——只是它们将存在于 acme.local 区域中——请参阅上面的注释。clt.acme.local 区域不需要 DC 相关的 SRV 记录。

客户将能够找到 DC 罚款。客户端 DNS 服务器指向 DC 的 clt IP。

当客户端上的 DC 定位器进程开始时

  • 如果客户端知道其站点,则 DNS 问题将是 _ldap._tcp.[site]._sites.dc._msdcs.acme.local SRV。这将返回已注册 SRV 记录的站点特定 DC。
  • 如果客户端知道它的网站上的DNS问题将是_ldap._tcp.dc._msdcs.acme.local SRV。这将返回所有 DC。客户端将尝试绑定到 DC 的 LDAP,直到它找到一个响应。当客户端找到一个时,它会执行站点查找以确定客户端的站点,并将该站点缓存在注册表中,以便将来的 DC 定位器实例发生得更快。

@马西莫 4

嗯,不错的收获。我认为有两种方法可以解决这个问题。

  1. 较小的影响(与下面的 2 相比)是在客户端/工作站上的主机文件中为 dc1.acme.local 和 dc2.acme.local创建一个条目,指向 DC 的 clt NIC IP。

或者

  1. 在每个 DC 上的 netlogon.dns 文件中手动创建必要的 SRV 记录。这可能会对服务器网络产生一些影响。如果进行了配置,成员服务器有时可能会与 clt 网络上的 DC 通信。

总而言之,它都不漂亮,但这不一定是最终目标。也许客户只是在测试你的技术。把它放在他们的会议桌上并告诉他们“在这里,这行得通,但我向你收取 4 倍于我的正常费率来配置和支持它。你可以将它降低到我正常费率的 1.5 倍——0.5 倍 PITA 费用,这样做[正确的解决方案]。”

如前所述,我的建议是说服其他人或运行。但这确实是一个有趣的小练习,可笑。:)


Mas*_*imo 3

最后我选择了两个站点解决方案:

  • 两个 DC 用于“服务器”网络,两个 DC 用于“客户端”网络。
  • 两个 AD 站点,一个用于“服务器”网络,一个用于“客户端”网络。
  • “服务器”网络中的 DC 上只会有一个 NIC(客户端根本不会与它们通信),因此这很容易。
  • “客户端”区域中的 DC 将有两个,但只会在 DNS 中注册其客户端 DC。
  • 服务器将与他们的 DC 通信,客户端将与他们的 DC 通信。

当然,这意味着启用两个网络之间的复制流量;“客户端”网络中的 DC 仍将拥有位于“服务器”网络上的 NIC,但由于它不会在 DNS 中注册,因此该网络中的 DC 将使用其客户端 IP 地址与它们联系;这样网卡实际上就完全没用了,并且需要打开一些防火墙端口。唯一的其他选择是破坏 DC 的hosts文件,但我们希望可以避免这种情况。

好吧,我认为这是满足尽可能多(疯狂)要求的最好方法。

感谢您的所有建议:-)