无法手动解析 DNS

无法手动解析 DNS

因此,我尝试用 JavaScript 编写 DNS 解析器。对于 amazon.com 和 stanford.edu 等情况,它运行良好。但是对于 example.com 等情况,它不起作用。

我也尝试手动解决它,但没有成功。我尝试在下面总结我的方法。

首先,我想介绍一个我用来跟踪所走路径的在线工具:https://manytools.org/network/query-dns-records-online/。此工具允许我们使用特定的 DNS 名称服务器。进行 DNS 解析。以下是我尝试手动解决此问题时遵循的步骤:

  1. 我输入 198.41.0.4 作为 DNS 解析器并为 example.com 请求 A 记录。
  2. 附加部分返回了大约 13 个名称服务器。例如,其中一个是 e.gtld-servers.net,IP 为 192.12.94.30。有 0 个答案或权限部分。
  3. 现在,对于返回的 13 个名称服务器,我逐一尝试解析 example.com 的 A 记录。
  4. 对于 13 个查询中的每一个,我都获得了答案、权威和附加部分,其中没有条目。
  5. 这是我走进死胡同的地方。

我希望我尝试解决的方法和我的理解是正确的。如果不正确,请告诉我。

对其他域名(例如 amazon.com 或 paypal.com)采用相同的方法即可得到答案。

那么,当手动方法失败时,我怎么能指望代码能工作呢?

请帮助我找出我犯的错误或应该做什么。谢谢

附上我的工作案例的输出日志(example.com)

Resolving DNS for  amazon.com at  198.41.0.4
query amazon.com.
Resolving DNS for  amazon.com at  192.12.94.30
query amazon.com.
Resolving DNS for  amazon.com at  156.154.64.10
query amazon.com.
 
FOUND!
decoded name amazon.com.
decoded A Record 54.239.28.85

附上我的非工作案例的输出日志(example.com)

Resolving DNS for  example.com at  198.41.0.4
query example.com.
Resolving DNS for  example.com at  192.5.6.30
query example.com.

答案1

该在线工具已损坏。它会在“其他”部分显示它获得的 A/AAAA 记录,但它不显示您确实会在“权威”部分收到 NS 记录 – 而这些正是您实际上应该遵循的。

“附加”部分中的 A/AAAA 记录是不必要存在 – 并且当存在时,它们不应被视为最终的服务器列表;它们只应用于“解析”您从“权限”部分获得的 NS 名称。

(它们在这里的目的是充当“粘合剂”,以避免在尝试解析已经解析的名称下的 NS 名称时出现无限循环。如果不发生循环,则大多数情况下不会发布粘合记录。)

$ dig example.com. a @198.41.0.4

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59194
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 27

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:
;example.com.                   IN      A

;; AUTHORITY SECTION:
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
[...]

;; ADDITIONAL SECTION:
e.gtld-servers.net.     172800  IN      A       192.12.94.30
e.gtld-servers.net.     172800  IN      AAAA    2001:502:1ca1::30
b.gtld-servers.net.     172800  IN      A       192.33.14.30
b.gtld-servers.net.     172800  IN      AAAA    2001:503:231d::2:30
[...]

;; Query time: 30 msec
;; SERVER: 198.41.0.4#53(198.41.0.4) (UDP)

(在 Windows 上,您可以使用nslookup -d -q=A example.com. 198.41.0.4,但您需要从其输出中挖掘出所需的“得到答案:”——并且尾随.很重要,以避免获得两倍无用的输出。如果可能,请获取适用于 Windows 的 dig.exe 或通过 WSL 使用它。)

相关内容