将 DNS 从 Windows Server 2003 迁移到 Windows Server 2012 R2

将 DNS 从 Windows Server 2003 迁移到 Windows Server 2012 R2

当前环境:两台 Windows Server 2003 服务器,未加入我们的域(用于处理我们的外部 DNS 请求)。

计划:启动 Windows Server 2012 R2 服务器,不要加入我们的域。提供 IP 并在服务器上安装 DNS 角色。将服务器标记为我们的主 DNS 服务器(即 Windows Server 2003)的从属服务器。复制完成后,将 2012 R2 DNS 服务器标记为主服务器。在 2012 R2 平台上构建辅助 DNS 服务器,作为从属服务器加入 2012 R2 主服务器。然后停用 2003 DNS 服务器。

我的问题是,这个计划是否存在任何“陷阱”或问题?2003 服务器和 2012 R2 服务器之间是否存在兼容性问题?我们的计划可行吗?我一直在四处寻找,但无论是从微软还是从他们的合作伙伴那里都没有找到任何关于这样做的信息。

答案1

编辑:

请注意,以下仅传输 A 记录,不传输其他记录,因此您仍然需要手动输入剩余记录。

我从来没有做过上述事情,但另一种选择是:

  1. 从 2003 年开始导出您的 A 记录和区域。保存它 - c:\dnsrecords.txt
  2. 重新导入到 Server 2012。
  3. 在 2012 年复制涵盖外部查找的其他 2003 年设置。
  4. 为一台 PC 分配新的 DNS 服务器并监控其效果。

可以在 2003 服务器上导出 DNS 条目。您应该有一个类似于下面的文本文件。

User-PC Host (A)    10.24.2.48
Fileserver  Host (A)    10.25.2.49
  • 将文件放入 XLS 并将主机和(A)变成列,这样就只剩下。

    用户-PC 10.24.2.48

    文件服务器 10.25.2.49

然后您可以使用for & dnscmd将条目导入到您的服务器 2012。下面是 dnscmd 语法,下面是一个示例,它将使用您创建的 .txt 作为输入多次运行该命令。它将代替 %i 主机名%j 替换为 IP 地址

dnscmd ServerName /RecordAdd DNSZoneName HostName RecordType IPAddress

DNScmd 语法:

for /f "tokens=1-2" %i in (c:dnsrecords.txt) do dnscmd Server2012 /RecordAdd test.local %i A %j

答案2

我以前也用这种方法复制过。其实这只是区域传输。

我必须将其作为迁移到新的 2008 DC 的一部分,以准备提升功能级别并更换旧硬件。我在 2003 中遇到的问题是广告集成 DNS 运行不正常。可能只是因为这个域已从 NT 4.0 -> win2k -> win2k3 升级到 win2k8。只有 2k12 成员服务器……话虽如此:

https://support.microsoft.com/en-us/kb/323383

https://technet.microsoft.com/en-us/library/cc739904(v=ws.10).aspx

我遇到的最大问题是内部服务器具有 DHCP 地址,但手动配置了 DNS 服务器(我知道这没有意义)。我的建议是保持旧服务器处于活动状态,并在停用旧服务器之前将外部 NS 记录更改为指向新服务器(外部 DNS 仍应接受辅助服务器的 SOA)。这将使您在外部 DNS 区域传播期间保持活动状态。它还可以让您更轻松地回滚。

答案3

我们已将 DNS 服务器升级为 2003 域服务器环境中的从属服务器。我知道您提到过不在域环境中,但只要您拥有主 DNS 服务器的访问/管理权限,我认为这就不是问题。一旦新的 2012 服务器配置了 DNS 角色,您将在某个阶段获得一个从主 DNS 服务器复制的选项。正如 stuart 提到的,这主要是区域传输,不应导致两者同时运行的任何问题,但您最好降级/停止使用 2003 服务器。

答案4

@Ankh2054 - 回答得好!一定要明确说明你只用脚本传输 A 记录。(抱歉没有直接评论,我暂时还不能评论帖子)

在 Windows 中使用 AD 的内部环境中,您通常会拥有由 AD 创建的 SRV 记录,而 MX 记录则很常见。NS 记录也相当大,甚至在内部使用 DHCP 提供的 NS IP。不要忘记反向区域以方便使用(PTR 记录),如果没有外部 PTR 进行健全性检查,某些邮件服务器会抱怨。

原始发帖人没有说明他们是否在使用 SPF、Google Apps 或其他联合服务,这些服务通常需要添加带有指纹、验证密钥或类似内容的 TXT 记录。外部 CNAME 记录很常见,是一种提供手动故障转移到备份服务器并将服务与其运行的 IP 隔离开来的好方法。

不过,您的脚本是一个非常优雅的解决方案。我使用了一些类似的东西(但不那么干净)来批量添加缺失的 PTR 记录。

相关内容