Создать DNS NSRecord в C # - PullRequest
       6

Создать DNS NSRecord в C #

1 голос
/ 10 января 2012

Я пытаюсь создать DNS NSRecord с помощью DNS WMI Classes .Ниже приведен пример кода.

Как установить IP-адрес для NSRecord?Я знаю. Введите IP-адрес, необходимый для NSRecord.

    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);

Ответы [ 3 ]

1 голос
/ 10 января 2012

Технически запись 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

0 голосов
/ 14 июля 2016

Я понимаю, что это очень старый пост (4+ года), но есть способ добавить IP-адреса для серверов имен с WMI.Как 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

0 голосов
/ 11 июня 2013

Старая тема, но я борюсь с этой проблемой, может быть, это кому-нибудь поможет.

Хотя IP-адрес для NSRecord не требуется, Microsoft DNS фактически создает клейкую запись узла (A) для этого NSRecord. При наличии склеенной записи в делегированной зоне сохраняется шаг (немного быстрее), так что нет необходимости искать адрес этого NSRecord.

К сожалению, потратив пару часов впустую, похоже, нет способа добавить клейкую запись с помощью WMI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...