【问题标题】:Create a DNS NSRecord in C#在 C# 中创建 DNS NSRecord
【发布时间】:2012-02-06 18:37:05
【问题描述】:

我尝试通过DNS WMI Classes 创建一个 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


    【解决方案1】:

    从技术上讲,域的 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 添加到 Microsoft DNS 服务器时。需要添加 IP 地址 ID。请访问此截图s1.picofile.com/file/7244522361/dns.jpg
    • 这种情况下的IPAddress只需要验证nameserver是否存在,在DNS中持久化时,不会保存IP地址。输入主机名并单击解析后,它将在名称服务器选项卡中显示 IP 地址,但如果您要更新这些记录,它应该在打开对话框时再次解析 IP 地址。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      粘合记录是资源记录,可以通过'CreateInstanceFromTextRepresentation'添加(管理路径为'MicrosoftDNS_ResourceRecord')。

      您需要用于粘合记录的“TextRepresentation”是“{hostname} IN A {IP}”。例如:'ns1.example.com。在 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

      【讨论】:

        猜你喜欢
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 2016-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-24
        • 2015-08-19
        相关资源
        最近更新 更多