使用 dig 列出域中的所有 DNS 记录?

Run*_*ble 207 domain-name-system internal-dns dig

我的公司运行一个内部 DNS mycompany.example

我需要在网络上找到一台机器,但我忘记了它的名字。如果我能看到一个列表,它可能会唤起我的记忆。

如何列出 的所有域记录mycompany.example

小智 198

简短的回答是您列出 CNAME 的具体问题是,您不能在没有权限的情况下进行区域转移(请参阅如何列出给定域的所有 CNAME 记录?)。

也就是说,您可以使用 dig 通过执行以下操作来列出其他记录:

dig +nocmd yourdomain.example any +multiline +noall +answer
Run Code Online (Sandbox Code Playgroud)

  • 任何在某些 DNS 服务器上都不好```IN HINFO "ANY obsoleted" "See draft-ietf-dnsop-refuse-any"``` (6认同)
  • 这个问题与`CNAME`记录无关...... (3认同)
  • 由于大多数 DNS 服务器不再支持“ANY”查询,因此使用在线工具(如 https://nslookup.io)要简单得多,它将单独查询每种记录类型并在一个概览中显示所有 DNS 记录。 (3认同)
  • 对我来说,`dig @8.8.8.8 +nocmd yourdomain.example any +multiline +noall +answer` 列出更多记录 (2认同)

小智 94

一个更容易记住(并且提供更多信息)的命令是:

> dig google.com ANY
Run Code Online (Sandbox Code Playgroud)

返回以下内容:

; <<>> DiG 9.8.3-P1 <<>> google.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31013
;; flags: qr rd ra; QUERY: 1, ANSWER: 22, AUTHORITY: 0, ADDITIONAL: 3

;; QUESTION SECTION:
;google.com.            IN  ANY

;; ANSWER SECTION:
google.com.     17  IN  A   74.125.225.72
google.com.     17  IN  A   74.125.225.73
google.com.     17  IN  A   74.125.225.78
google.com.     17  IN  A   74.125.225.64
google.com.     17  IN  A   74.125.225.65
google.com.     17  IN  A   74.125.225.66
google.com.     17  IN  A   74.125.225.67
google.com.     17  IN  A   74.125.225.68
google.com.     17  IN  A   74.125.225.69
google.com.     17  IN  A   74.125.225.70
google.com.     17  IN  A   74.125.225.71
google.com.     86400   IN  NS  ns1.google.com.
google.com.     86400   IN  NS  ns2.google.com.
google.com.     86400   IN  NS  ns3.google.com.
google.com.     86400   IN  NS  ns4.google.com.
google.com.     66641   IN  SOA ns1.google.com. dns-admin.google.com.    2013082900 7200 1800 1209600 300
google.com.     177 IN  MX  40 alt3.aspmx.l.google.com.
google.com.     177 IN  MX  50 alt4.aspmx.l.google.com.
google.com.     177 IN  MX  10 aspmx.l.google.com.
google.com.     177 IN  MX  20 alt1.aspmx.l.google.com.
google.com.     177 IN  MX  30 alt2.aspmx.l.google.com.
google.com.     287 IN  AAAA    2607:f8b0:4009:803::1007

;; ADDITIONAL SECTION:
ns1.google.com.     3924    IN  A   216.239.32.10
ns2.google.com.     64508   IN  A   216.239.34.10
ns3.google.com.     64508   IN  A   216.239.36.10

;; Query time: 77 msec
;; SERVER: 10.6.23.4#53(10.6.23.4)
;; WHEN: Fri Sep 13 14:26:09 2013
;; MSG SIZE  rcvd: 506
Run Code Online (Sandbox Code Playgroud)

  • 这不是问题的要求。它要求“google.com”中的所有记录。域,而不仅仅是“google.com.”的记录。您的查询中没有列出任何不是“google.com”的内容。除了粘合记录(名称服务器的 A 记录)。 (29认同)
  • [IETF 提议拒绝 ANY](https://tools.ietf.org/html/draft-ietf-dnsop-refuse-any-02)。我得到:`HINFO“请停止要求任何”“请参阅draft-ietf-dnsop-refuse-any”` (11认同)
  • 完美指挥。简洁易记,感谢发布! (7认同)

Jos*_*osh 62

尝试:

dig @ns.example.com -tAXFR example.com
Run Code Online (Sandbox Code Playgroud)

这可能有效,也可能无效。许多 DNS 服务器会拒绝这样的DNS 区域传输。有关详细信息,请参阅AXFR 协议的工作原理

  • 您走在正确的轨道上,但该语法对我不起作用。有效的是“dig @ns.example.com -tAXFR example.com”,其中 ns.example.com 是区域的主要名称服务器,并且 DNS 管理员已启用来自您正在查询的主机或 IP 的区域传输请求从。如果没有 AXFR 权限,则无法查询区域中的所有 DNS 记录。我不确定,但我不相信 AXFR 请求可以递归完成,因此需要直接查询区域的顶级名称服务器,这就是语法的“@ns.example.com”部分所做的。实际的主机名会有所不同。 (5认同)

Emr*_*ici 26

您还可以将hostDNS 查找实用程序与-lswitch 一起使用:

host -l example.com
Run Code Online (Sandbox Code Playgroud)

当然,您需要 DNS 区域传输权限才能工作。

  • @XXL ...除了更容易记住.... +1 (14认同)