【问题标题】:How to know if a DNS server is an open resolver?如何知道 DNS 服务器是否是开放解析器?
【发布时间】:2016-09-07 21:31:27
【问题描述】:

我想知道如何知道 DNS 服务器是否是开放解析器。

哪个 bash 命令可以让我验证这一点?

【问题讨论】:

  • 什么是“免费 DNS”?
  • 我认为这是用于定义 DNS 服务器的名称,如果它不是来自同一组织,则它接受所有合法的 DNS 请求(例如递归)事件。
  • 不,这就是所谓的“开放式解析器”。使用“dig @ip”来查找名称会给出提示,但不是很容易自动证明它的东西。这也是本网站的题外话。
  • 好的,感谢您的澄清,我已经编辑了我的问题。

标签: dns server


【解决方案1】:

我们在Zonemaster 项目中这样做的方式是向有问题的名称服务器发送一个SOA 查询,并为几乎肯定不存在的名称xx--domain-cannot-exist.xx--illegal-syntax-tld 设置RD 标志。如果响应为NXDOMAIN,则名称服务器已执行递归查询,因此是开放递归。如果响应是其他内容(REFUSEDSERVFAIL 或引用 root 很常见),那很好。

【讨论】:

  • 感谢您的回复。如果我理解得很好,google.com 不是一个开放解析器,因为host xx--domain-cannot-exist.xx--illegal-syntax-tld google.com 返回一个connection timeout,但37.235.1.174 是一个,因为它返回Host xx--domain-cannot-exist.xx--illegal-syntax-tld not found: 3(NXDOMAIN)? (这似乎是真的)。请您简单解释一下为什么错误响应 NXDOMAIN 意味着 DNS 执行了递归查询?
  • NXDOMAIN 是查询的正确答案,为了得到它,名称服务器必须尝试查找它,它只有在为其他人进行递归查找时才会这样做(即是,是一个开放的解析器)。 REFUSEDSERVFAIL 和 root-referral 是名称服务器表示“我无法回答该查询”的不同方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多