如何获得" NS"使用C#记录给定域名的记录?

时间:2015-02-02 07:33:28

标签: c# dns

我对给定DomainName的NameServer存在很大问题。实际上我想要做的是一个简单的交易,但在互联网上搜索了很多代码片段以及nuget包管理器上的库后,我无法找到解决方案。

我有域名,如" www.example.com"我想通过使用C#代码获取其域服务器。

nuget上有一些图书馆,但这些图书馆都在使用' whois'搜索机制,但我不能信任所有人。因为他们返回的字符串就像网页上的任何搜索结果一样,并且每个字符串结果可能是不同的,因为在幕后使用不同的搜索网站。

一些网络专家说我应该使用" nslookup"通过使用C#检索可信任的结果来命令powershell。

1 个答案:

答案 0 :(得分:7)

理论上使用ARSoft.Tools.Net(我还没有真正尝试过),您应该可以请求域的NS记录。

类似的东西:

var resp = DnsClient.Default.Resolve("mydomain.com", RecordType.Ns);
var nsrecords = resp.AnswerRecords.OfType<NsRecord>();
foreach (var record in nsrecords) {
    Console.WriteLine(record.NameServer);
}

请注意,这会返回名称服务器主机,但应使用Dns.GetHostAddresses(或相同的ARSoft.Tools.Net库)轻松将其转换为IP

这是完全未经测试的,但如果我理解正确的问题,应该是你正在照顾的。

更新

我实际上做了一个测试程序并且运行得很好。完整代码:

using System;
using System.Linq;
using System.Net;
using ARSoft.Tools.Net.Dns;

namespace SOTestDNS
{
  class Program
  {
    static void Main(string[] args)
    {
      var resp = DnsClient.Default.Resolve("google.com", RecordType.Ns);
      var nsrecords = resp.AnswerRecords.OfType<NsRecord>();
      foreach (var record in nsrecords)
      {
        Console.Write(record.NameServer);
        foreach (var address in Dns.GetHostAddresses(record.NameServer))
        {
          Console.WriteLine(" -> " + address);
        }
      }
    }
  }
}

结果:

ns1.google.com -> 216.239.32.10
ns3.google.com -> 216.239.36.10
ns4.google.com -> 216.239.38.10
ns2.google.com -> 216.239.34.10

声明

我对绝对没有任何关联我所使用的库。刚刚发现这是最简单的工具,因为你提到使用第三方库是好的。