有什么方法可以列出一个域的所有DNS记录?

我知道像dig和nslookup这样的东西,但它们只能到此为止。例如,如果我有一个子域a记录为

test A somedomain.co.uk

除非我特别提出要求。

dig any test.somedomain.co.uk

我看不见。

有什么方法(除了通过到DNS管理器查看记录)来确切地查看所有DNS记录是什么?


当前回答

dig @8.8.8.8 example.domain any

将列出所有DNS记录。这里8.8.8.8是谷歌的DNS。

其他回答

我改进了乔什的答案。我注意到,dig只显示查询的名称服务器缓存中已经存在的条目,因此最好从SOA中提取一个权威的名称服务器(而不是依赖默认的名称服务器)。我还禁用了通配符ip的过滤,因为我通常对设置的正确性更感兴趣。

新脚本使用-x参数扩展输出,使用-s NS参数选择特定的命名服务器:dig -x example.com

#!/bin/bash
set -e; set -u
COMMON_SUBDOMAINS="www mail mx a.mx smtp pop imap blog en ftp ssh login"
EXTENDED=""

while :; do case "$1" in
  --) shift; break ;;
  -x) EXTENDED=y; shift ;;
  -s) NS="$2"; shift 2 ;;
  *) break ;;
esac; done
DOM="$1"; shift
TYPE="${1:-any}"

test "${NS:-}" || NS=$(dig +short  SOA "$DOM" | awk '{print $1}')
test "$NS" && NS="@$NS"

if test "$EXTENDED"; then
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
  wild_ips=$(dig +short "$NS" "*.$DOM" "$TYPE" | tr '\n' '|')
  wild_ips="${wild_ips%|}"
  for sub in $COMMON_SUBDOMAINS; do
    dig +nocmd $NS "$sub.$DOM" +noall +answer "$TYPE"
  done | cat  #grep -vE "${wild_ips}"
  dig +nocmd $NS "*.$DOM" +noall +answer "$TYPE"
else
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
fi

许多DNS服务器拒绝“任何”查询。所以唯一的方法是单独查询每种类型。幸运的是,有些网站可以让这变得更简单。例如,https://www.nslookup.io默认显示最流行的记录类型,并支持所有现有的记录类型。

你想要的叫做区域转移。您可以使用dig -t axfr请求区域转移。

一个区域是一个域和它下面所有没有委托给另一个服务器的域。

注意,并不总是支持区域传输。它们不用于正常的查找,只用于在服务器之间复制DNS数据;但是有其他协议可以用于此目的(例如ssh上的rsync),暴露名称可能存在安全风险,并且区域传输响应生成和发送的成本比通常的DNS查找要高。

Windows:

您可能会发现需要检查您的域名DNS记录的状态,或检查名称服务器,以查看服务器正在拉动哪些记录。

Launch Windows Command Prompt by navigating to Start > Command Prompt or via Run > CMD. Type NSLOOKUP and hit Enter. The default Server is set to your local DNS, the Address will be your local IP. Set the DNS Record type you wish to lookup by typing set type=## where ## is the record type, then hit Enter. You may use ANY, A, AAAA, A+AAAA, CNAME, MX, NS, PTR, SOA, or SRV as the record type. Now enter the domain name you wish to query then hit Enter.. In this example, we will use Managed.com. NSLOOKUP will now return the record entries for the domain you entered. You can also change the Name Servers which you are querying. This is useful if you are checking the records before DNS has fully propagated. To change the Name Server type server [name server]. Replace [name server] with the Name Servers you wish to use. In this example, we will set these as NSA.managed.com. Once changed, change the query type (Step 3) if needed then enter new a new domain (Step 4.)

Linux:

1)使用Dig命令查看DNS记录 Dig是域名信息探勘器(domain information groper)的缩写,是一种用于查询DNS名称服务器的灵活工具。它执行DNS查找并显示从所查询的名称服务器返回的答案。大多数DNS管理员使用dig来排除DNS问题,因为它的灵活性、易用性和输出的清晰度。其他查找工具的功能往往不如dig。

2)使用NSlookup命令查看DNS记录 Nslookup是一个用于查询Internet域名服务器的程序。Nslookup有交互和非交互两种模式。

交互式模式允许用户查询名称服务器,以获取各种主机和域的信息,或打印某个域中的主机列表。

非交互模式用于仅打印主机或域的名称和请求信息。这是网络管理工具,将帮助他们检查和排除DNS相关问题。

3)使用主机命令查看DNS记录 host是一个用于执行DNS查找的简单实用程序。它通常用于将名称转换为IP地址,反之亦然。当没有给出参数或选项时,主机打印其命令行参数和选项的简短摘要。

dig @8.8.8.8 example.domain any

将列出所有DNS记录。这里8.8.8.8是谷歌的DNS。