Windows 2008 R2 DNS 服务器 - 可以将名称更改为与计算机名称不同的名称吗?

Windows 2008 R2 DNS 服务器 - 可以将名称更改为与计算机名称不同的名称吗?

我有一台 Windows 2008 R2 Enterprise 计算机(我们假设它的计算机名称设置为“MYSERVER”),运行 DNS 服务器角色 - 它不在域中(系统将其显示为名为“WORKGROUP”的工作组中)。

我希望它在 DNS 配置中显示为“ns1.mydomain.com”而不是“MYSERVER”-mydomain.com 是一个外部“正常”域,它并不隔离到内部网或防火墙后面或任何东西。

添加角色后,我首先查看了 DNS 配置,但没有看到任何可以更改名称属性的内容。

我尝试通过 WMI 更改它,但没有成功 -MicrosoftDNS_Server 类的 MSDN 页面将 Name 属性列为只读,我猜这就是更新未生效的原因。

如果有必要,可以重新安装 DNS 角色(如果角色安装/激活/运行后无法更改),但我也不知道如何在角色安装期间对其进行配置。

谢谢!

答案1

这不是我想要的答案,但由于我提到问题是自动生成的 SOA 和 NS 记录,所以我还想包括在区域创建后修复它们的代码。

我没有修改这个问题,因为我不想混淆实际的问题,但万一将来有人遇到这个问题而到那时还没有更好的答案,至少这对他们来说是一个潜在的解决方法。

public void FixupResourceRecords()
{
    var resourceRecordClass = new ManagementClass(@"\\localhost\root\MicrosoftDNS:MicrosoftDNS_ResourceRecord");

    var oldServerName = ...;
    var newServerName = ...;

    var search = " " + oldServerName.ToLower() + ".";
    var replace = " " + newServerName.ToLower() + ".";

    // we want the subclasses too (including SOA and NS records)
    var options = new EnumerationOptions() { EnumerateDeep = true };
    var allResourceRecords = resourceRecordClass.GetInstances(options).Cast<ManagementObject>().ToList();

    Console.WriteLine("Checking {0} resource records", allResourceRecords.Count);
    var resourceRecordsToFix = (
        from record in allResourceRecords
        let textVersion = record["TextRepresentation"].ToString().ToLower()
        let replacedVersion = textVersion.Replace(search, replace)
        where replacedVersion != textVersion
        select new
        {
            textVersion,
            replacedVersion,
            record,
        }
    ).ToList();

    Console.WriteLine("Fixing up {0} resource records", resourceRecordsToFix.Count);
    resourceRecordsToFix.ForEach(tuple => 
    {
        // first delete the old one
        tuple.record.Delete();
        resourceRecordClass.InvokeMethod("CreateInstanceFromTextRepresentation", new object[]
            {
                tuple.record["DnsServerName"],
                tuple.record["ContainerName"],
                tuple.replacedVersion,
            });
    });
}

相关内容