为什么学习DNS如此困难? DNS为什么很难学习?( 二 )


为了能看到上述内容,我确实需要安装更新版本的dig
令人困惑的工具尽管很多 DNS 的细节被隐藏起来,但你可以通过使用dig工具来找出发生了什么事情 。
例如,你可以使用dig +norecurse来确定给定的 DNS 解析器是否在其缓存中具有特定的记录 。如果响应没有被缓存,8.8.8.8看起来会返回SERVFAIL响应 。
以下是对google.com进行该操作的示例:
$ dig +norecurse@8.8.8.8 google.com;; Got answer:;; ->>HEADER这是对homestarrunner.com的示例:
$ dig +norecurse@8.8.8.8 homestarrunner.com;; Got answer:;; ->>HEADER【为什么学习DNS如此困难? DNS为什么很难学习?】在这里,你可以看到我们对于google.com得到了一个正常的NOERROR响应(8.8.8.8的缓存中有该记录),但对于homestarrunner.com得到了SERVFAIL响应(没有缓存) 。这并不意味着homestarrunner.com没有 DNS 记录(实际上有!),它只是没有被缓存 。
但如果你不熟悉这样的输出,它确实很难阅读!以下是我认为其中一些奇怪的地方:

  1. 标题很奇怪(有->>HEADER、flags:、OPT PSEUDOSECTION:、QUESTION SECTION:、ANSWER SECTION:) 。为什么学习DNS如此困难?,DNS为什么很难学习? 。小编来告诉你更多相关信息 。
    DNS为什么很难学习
  2. 空格排版很奇怪(OPT PSEUDOSECTIONQUESTION SECTION之间为什么没有换行符?) 。
  3. MSG SIZE rcvd: 47很奇怪(MSG SIZE中是否还有其他字段,而不仅仅是rcvd?它们是什么?) 。
  4. 它说有 1 个记录在ADDITIONAL部分,但没有显示它,你必须以某种方式神奇地知道OPT PSEUDOSECTION记录实际上在ADDITIONAL部分 。
总的来说,dig的输出给人的感觉是一个以临时方式编写并随着时间的推移逐渐发展起来的脚本,而不是经过有意设计的东西 。
处理令人困惑的工具的一些想法:
  • 解释输出结果 。例如,我写了一篇如何使用 dig的文章,解释了dig的输出结果以及如何配置它以默认给出更简短的输出 。
  • 创建新的、更友好的工具 。例如,在 DNS 方面,有dog、doggo和我的 DNS 查询工具 。我认为这些工具非常酷,但我个人不使用它们,因为有时我想做一些稍微高级一点的操作(比如使用+norecurse),据我所知,无论是dog还是doggo都不支持+norecurse 。我更愿意使用一个工具来完成所有任务,所以我坚持使用dig 。要替换dig,其功能广度是一项庞大的工作 。
  • 使 dig 的输出更加友好 。如果我在 C 编程方面更好一些,我可能会尝试编写一个dig的拉取请求,添加一个+human标志以以更结构化和易读的方式格式化长格式的输出,可能类似于以下形式:
$ dig +human +norecurse@8.8.8.8 google.com HEADER:opcode: QUERYstatus: NOERRORid: 11653flags: qr rarecords: QUESTION: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1QUESTION SECTION:google.com.INAANSWER SECTION:google.com.21INA172.217.4.206ADDITIONAL SECTION:EDNS: version: 0, flags:; udp: 512EXTRA INFO:Time: Fri Jul 28 10:51:01 EDT 2023Elapsed: 52 msecServer: 8.8.8.8:53Protocol: UDPResponse size: 47 bytes这样可以更清晰地呈现 DNS 响应的结构-包括标题、问题、答案和附加部分 。
而且它并不是“简化”了什么!它是完全相同的信息,只是以更结构化的方式进行了格式化 。我对替代的 DNS 工具最大的不满是它们经常为了清晰起见而删除信息 。虽然这些工具肯定有其用武之地,但我想要看到所有的信息!我只是希望它能够以清晰明了的方式呈现 。
在过去的 40 年中,我们已经学到了很多关于如何设计更用户友好的命令行工具的知识,我认为将其中一些知识应用到我们那些有些陈旧的工具中将会很棒 。
dig +yaml关于dig的一个简单备注:较新版本的
为什么学习DNS如此困难?,DNS为什么很难学习? 。小编来告诉你更多相关信息 。
DNS为什么很难学习 dig支持+yaml输出格式,对我来说更加清晰,但有些冗长(一个相当简单的 DNS 响应都无法在屏幕上完整显示) 。
一些奇怪的陷阱DNS 存在一些相对常见但很难通过自学了解到的奇怪问题 。以下是一些例子(有更多可在 导致 DNS 中断的一些方式中找到):