【问题标题】:How do I test my DNS connection?如何测试我的 DNS 连接?
【发布时间】:2010-12-30 02:11:31
【问题描述】:

一个简单的问题。如何测试我当前的 DNS 是否正常工作或关闭?会涉及投票吗?我担心会占用资源并且还需要在单独的线程上执行。

【问题讨论】:

  • dig、traceroute 和/或 nslookup 甚至可能是 netstat 的好工具。用于网络扫描的更多信息 insecure.org

标签: c# .net networking dns


【解决方案1】:

是的,这将涉及查找某些内容、解析主机名或其他一些 DNS 功能。此外,您还需要确保您尝试解析的主机也没有缓存在本地 DNS 缓存中。

Dns.GetHostByName 函数执行查找,但没有提及它是否会使用本地缓存。很可能确实如此,因为它可能在底层使用了操作系统查找功能。

【讨论】:

  • 是的,我相信它也会缓存查找。有什么办法可以绕过缓存?
  • 尝试不同的主机名。你可以使用一个不存在的——查找不会被缓存,你只会得到一个 not found 每次。
【解决方案2】:

如果您尝试在 C# 代码中执行此操作,请查看

namespace System.Net

在此处找到的文档:http://msdn.microsoft.com/en-us/library/system.net.aspx

...包括类...

public static class Dns

在此处找到的文档:http://msdn.microsoft.com/en-us/library/system.net.dns.aspx

这将允许您编写代码,例如:

IPHostEntry hostInfo = Dns.GetHostByName("www.contoso.com");

Dns 类中的其他功能可能对您有用,具体取决于您要完成的工作。

这并没有提供直接检查您的“DNS 是否关闭”的方法,但可以假设您无法解析应该始终启动的网站(例如 www.microsoft.com 或 www.google.com ) 那么您的 dns 已关闭,或者您已失去与 Internet 的连接。如果这不是您要查找的内容,请在评论中提供更多详细信息,我们会看看是否可以提供帮助。

【讨论】:

【解决方案3】:

尝试使用 dns 解析域名。

【讨论】:

    【解决方案4】:

    几件事:

    投票1:

    由于有可能取回 bached 值,您可能希望查找不存在的随机域(可能是 guid.somedomainyoucontrol.com)并检查是否收到超时或预期的 NXDOMAIN 结果。

    投票2:

    关于您担心这可能会花费大量资源:您确实必须在此处解释您想要做什么以获得真正的答案,但是:DNS 是一个非常轻量级的协议。我认为它不会对您的客户端或服务器造成巨大影响,具体取决于轮询间隔。哎呀,那里甚至还有“TCP over DNS”隧道,真的强调了 DNS 可以做什么,而且它们通常不会破坏其他人的网络或 DOS 服务器。 可能最好的办法是确定一个保守的轮询超时并解析您拥有的某个域之下的子域,甚至可能直接查询您控制的名称服务器。

    “连接”:

    DNS 大部分时间都使用 UDP。它可以切换到 TCP 或通过 TCP 使用,但这不是“正常”用法。因此,“连接”一词可能具有误导性。如果您可以现在解析主机,您可以随时测试任何时间点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2023-03-19
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 2016-05-02
      相关资源
      最近更新 更多