在C#中创建DNS NSRecord

本文关键字:DNS NSRecord 创建 | 更新日期: 2023-09-27 18:19:57

我尝试通过DNS WMI类创建DNS NSRecord。下面是我的示例代码。

如何设置NSRecord的IP地址?我知道输入NSRecord所需的IP。

    ManagementScope WmiScope = new ManagementScope("''''" + System.Environment.MachineName + "''ROOT''MicrosoftDNS");
ManagementPath path = new ManagementPath("MicrosoftDNS_NSType");
ManagementClass zone = new ManagementClass(WmiScope, path, null);
ManagementBaseObject p = zone.GetMethodParameters("CreateInstanceFromPropertyData");

p.Properties["DnsServerName"].Value = WmiScope.Path.Server;
p.Properties["ContainerName"].Value = "mydomain.com";
p.Properties["OwnerName"].Value = "";
p.Properties["NSHost"].Value = "ns1.domain.com";
zone.InvokeMethod("CreateInstanceFromPropertyData", p, null);

在C#中创建DNS NSRecord

从技术上讲,域的NS记录不包含IP地址,它是告诉"任何人"请求NS记录的授权记录,域的所有NS记录。

An NS-record identifies the name of a DNS server - not the IP-address.

http://www.mtgsy.net/dns/record_ns.htm

旧线程,但我正在努力解决这个问题,也许这会对某人有所帮助。

虽然不需要NSRecord的IPAddress,但Microsoft DNS实际上会为该NSRecord创建一个主机(a)粘合记录。通过在委派区域中有一个粘贴记录,可以节省一个步骤(稍微快一点),不必查找该NSRecord的地址。

遗憾的是,现在浪费了几个小时,似乎没有办法使用WMI添加粘合记录。

我意识到这是一篇非常古老的帖子(已有4年多的历史),但有一种方法可以通过WMI为名称服务器添加IP地址。正如我上面的JayROGreyBeard所说,您需要为每个名称服务器添加一个粘合记录。

粘合记录是资源记录,您可以使用"CreateInstanceFromTextRepresentation"添加它(管理路径为"MicrosoftDNS_ResourceRecord")。

粘合记录需要使用的"TextRepresentation"是"{hostname}IN a{IP}"。例如:'ns1.example.com.IN A 127.0.0.1'。如示例所示,请确保主机名以句点('.')结尾。

ManagementClass objMC_RRecords = new ManagementClass(objScope, new ManagementPath("MicrosoftDNS_ResourceRecord"), null);
ManagementBaseObject objParams_RR_NS1 = objMC_RRecords.GetMethodParameters("CreateInstanceFromTextRepresentation");
objParams_RR_NS1["DnsServerName"] = null;
objParams_RR_NS1["ContainerName"] = "example.com";
objParams_RR_NS1["TextRepresentation"] = "ns1.example.com. IN A 127.0.0.1";
objMC_RRecords.InvokeMethod("CreateInstanceFromTextRepresentation", objParams_RR_NS1, null);

有关"CreateInstanceFromTextRepresentation"方法的更多信息,请访问此处:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682714(v=vs.85).aspx