用于托管服务提供的 Active Directory 设计

用于托管服务提供的 Active Directory 设计

我经营一家小型托管服务[1]公司,以此来偿还我的学生贷款。我在数据中心拥有几台 Windows 机架式服务器。配置由我用 C# 编写的一些工具完成,这些工具与 WMI 和 ADSI 结合使用,为我的客户配置 Active Directory、IIS 和 Exchange。

[1]我可能应该说“网络托管”,但我提供的服务不止于此。

到目前为止一切正常,但当我开始时,我决定在内部和外部使用相同的域名。“Foohost.com”既是我的 AD 目录名称,也是我公司网站的域名。AD DNS 服务器是公开的。

当我扩展到两台服务器并在它们之间建立私有链接(使用 192.168.xx 频段)时,事情开始出现问题,因为当互联网上的人们尝试 nslookup 我的服务器的地址时,DNS 服务器会返回这些私有 IP 地址。

我现在已经阅读了 TechNet 上关于 Active Directory 设计的几篇文章,它们建议将“internal.foohost.com”用作 Active Directory 域,将“foohost.com”用作外部域。这对我来说很有意义,但在正确设置 DNS 服务器时,我感到很困惑:

我使用的是 Server 2008 上的 Microsoft DNS 服务器,它不支持 ACL 或对递归的严格控制。DNS 服务器为每个网站或客户端的域名提供了一个区域文件(有时是 AD 集成的,有时使用文件系统)。我不知道是否应该使用单独的专用 DNS 服务器(我负担不起)并禁用递归,仅用于托管客户端的区域文件,并将 AD 的 DNS 服务器严格用于 AD 域区域文件,并启用递归(以便域中的服务器可以解析 Internet DNS 条目),但要通过防火墙将其与公众隔离开来。

...还有一件事:我没有安装合适的防火墙。我只是在所有服务器上使用 Windows 防火墙。

答案1

您确实应该将 Active Directory 的 DNS 和托管域的公共解析 DNS 保留在不同的 DNS 服务器中。您已经看到,Microsoft DNS 服务器虽然可以很好地完成“防火墙后面”的任务,为 Active Directory 提供 DNS 并为客户端计算机提供递归名称解析,但缺少您可能需要在 Internet DNS 服务器中使用的功能(ACL 是您之前提到的一个重要功能)。

我自己不托管任何 DNS,也不建议我的客户这样做。第三方 DNS 托管始终是我的首选。话虽如此,如果您出于成本/控制原因而希望自己托管 DNS,您可以考虑运行几个运行 BIND 的小型 Linux VM 作为公共 DNS。

编辑:

这里有一些关于域名重命名的很好的讨论:https://web.archive.org/web/1/http://techrepublic%2ecom%2ecom/5208-6230-0.html?forumID=102&threadID=229757&start=0

我曾在小型环境(少于 20 台 PC、2 个 DC)和实验室场景中执行过域重命名,没有遇到任何问题。该 techrepublic.com 链接中相关的经验与我的经验非常相似。如果您处理的是少量域成员服务器计算机,我认为这是非常可行的。(显然,首先在实验室环境中进行测试。)

答案2

当然,最好的解决方案是针对您的外部域和内部域使用单独的 DNS 服务器,以避免它们之间发生任何冲突;但如果您买不起其他服务器,那么您就必须坚持使用您现有的服务器。

那么虚拟化呢?您可以轻松设置虚拟机来托管您的公共 DNS 服务器(并且仅执行此操作);仅启用 DNS 服务的 Windows 系统需要的资源很少。

答案3

如果您想走这条路,首先您需要重命名您的 AD 域:

http://technet.microsoft.com/en-us/library/cc786120(WS.10).aspx http://technet.microsoft.com/en-us/library/cc794869(WS.10).aspx

我建议使用“foohost.local”(或“foohost.internal”、“foohost.dom”、“foohost.private”等),以消除内部和外部域名之间的任何依赖关系。

当您成功完成域名重命名操作后,您将能够正确管理“foohost.com”的单独 DNS 区域。

答案4

我建议为域使用单个命名空间,您的所有服务器都必须将其用作其 FQDN。否则,您会发现随着规模的增长,您必须向每个域添加 DC 以实现冗余。

请注意,域成员身份不一定必须与您的应用程序有关系。您可以将您的域命名为“datacenter.foo.com”,并使用 bind 为您的外部域提供服务。通过这样做,您还可以从位置使用 GPO 进行管理。

请以批判的眼光阅读 Microsoft 有关这些主题的文档,因为他们通常假设您有一个大型、扁平的网络。

相关内容