有什么方法可以列出一个域的所有DNS记录?
我知道像dig和nslookup这样的东西,但它们只能到此为止。例如,如果我有一个子域a记录为
test A somedomain.co.uk
除非我特别提出要求。
dig any test.somedomain.co.uk
我看不见。
有什么方法(除了通过到DNS管理器查看记录)来确切地查看所有DNS记录是什么?
有什么方法可以列出一个域的所有DNS记录?
我知道像dig和nslookup这样的东西,但它们只能到此为止。例如,如果我有一个子域a记录为
test A somedomain.co.uk
除非我特别提出要求。
dig any test.somedomain.co.uk
我看不见。
有什么方法(除了通过到DNS管理器查看记录)来确切地查看所有DNS记录是什么?
当前回答
你想要的叫做区域转移。您可以使用dig -t axfr请求区域转移。
一个区域是一个域和它下面所有没有委托给另一个服务器的域。
注意,并不总是支持区域传输。它们不用于正常的查找,只用于在服务器之间复制DNS数据;但是有其他协议可以用于此目的(例如ssh上的rsync),暴露名称可能存在安全风险,并且区域传输响应生成和发送的成本比通常的DNS查找要高。
其他回答
许多DNS服务器拒绝“任何”查询。所以唯一的方法是单独查询每种类型。幸运的是,有些网站可以让这变得更简单。例如,https://www.nslookup.io默认显示最流行的记录类型,并支持所有现有的记录类型。
简单地说,这通常是不可能的,除非你控制了这个领域。
选项1:ANY查询
当您查询ANY时,您将得到该级别的所有记录的列表,但不低于该级别。
# try this
dig google.com any
这可能会返回A记录,TXT记录,NS记录,MX记录等,如果域名是“google.com”。但是,它不会返回子记录(例如,www.google.com)。更准确地说,如果这些记录存在,您可能会得到它们。
如果名称服务器选择不返回这些记录(例如,为了减少响应的大小),则不必返回这些记录。大多数DNS服务器拒绝任何查询。
选项2:AXFR查询
AXFR是一种区域传输,可能是您想要的。但是,这些通常是受限的,除非您控制了该区域,否则不可用。您通常会直接从权威服务器(下面的@ns1.google.com)和可能不会发布的名称服务器(隐形名称服务器)执行区域传输。
# This will return "Transfer failed"
dig @ns1.google.com google.com axfr
如果您可以控制该区域,则可以对其进行设置,以获得受TSIG密钥保护的传输。这是客户端可以发送给服务器以授权传输的共享秘密。
选项3:用脚本刮
另一种选择是使用脚本抓取所有DNS记录。您必须遍历所有DNS记录类型,还必须遍历公共子域,具体取决于您的需要。
选项4:使用专门的工具
有一些在线工具可以枚举子域,还有一些在线工具可以列出DNS名称的所有DNS记录。注意,子域枚举通常不是详尽的。
你想要的叫做区域转移。您可以使用dig -t axfr请求区域转移。
一个区域是一个域和它下面所有没有委托给另一个服务器的域。
注意,并不总是支持区域传输。它们不用于正常的查找,只用于在服务器之间复制DNS数据;但是有其他协议可以用于此目的(例如ssh上的rsync),暴露名称可能存在安全风险,并且区域传输响应生成和发送的成本比通常的DNS查找要高。
区域传输是确保您拥有所有子域记录的唯一方法。如果DNS配置正确,则通常不能执行外部区域传输。 的扫描。io项目有一个DNS记录数据库,可以下载和搜索子域。这需要下载87GB的DNS数据,或者您可以尝试在https://hackertarget.com/find-dns-host-records/上在线搜索数据
要在一个实例中获得一个域的所有DNS记录,没有简单的方法。 你只能查看某些记录,例如,如果你想查看某个域的A记录,你可以使用命令:dig A (type of record) domain.com。这对于您想要查看该域的所有其他类型的记录都是一样的。
如果你不熟悉命令行界面,你也可以使用像mxtoolbox.com这样的网站。Wich是非常方便的工具,以获得一个领域的记录。
我希望这能回答你的问题。