有没有只对域名执行 DNS 查找的命令?比如
dns unix.stackexchange.com
哪个会返回151.101.1.69
,哪个gbnjk.com
会返回error: domain not found
。
答案1
另一种 DNS 查询工具dig
,默认情况下非常冗长,但如果您将其用作dig +short
,您只会得到答案,每行一个:
$ dig +short unix.stackexchange.com
151.101.65.69
151.101.193.69
151.101.129.69
151.101.1.69
$ dig +short www.latimes.com
32975.edgekey.net.
e11929.e12.akamaiedge.net.
2.22.63.16
2.22.63.11
如果请求的域不存在,则不返回任何内容:
$ dig +short gbnjk.com
$
答案2
是的,有几个。
ISC 工具和各种风格host
ISC 的 BIND 附带的工具是host
和dig
。您可以dig
在此处的其他答案中看到他们的操作,包括 的短模式。
然而, ISC 并不是host
工具的唯一来源。
- Knot DNS 带有自己的
khost
工具。在 Debian 上,它被打包在包裹knot-host
它还提供了一个符号链接,使其也可以访问host
。% 主机 unix.stackexchange.com。 unix.stackexchange.com。 IPv4 地址为 151.101.1.69 unix.stackexchange.com。 IPv4 地址为 151.101.65.69 unix.stackexchange.com。 IPv4 地址为 151.101.129.69 unix.stackexchange.com。 IPv4 地址为 151.101.193.69 托管 unix.stackexchange.com。无AAAA记录 托管 unix.stackexchange.com。没有 MX 记录 %
- 我提供了一个
host
工具来使用djbwares 工具集,我也以 Debian 包的形式提供djbdns-host
。它是原生 djbdns 查询工具的薄包装。与 Knot 和 ISChost
工具不同,正如您从前面所看到的,它们在某些情况下会执行多个事务,但它始终执行只有一个DNS 事务。% 主机 unix.stackexchange.com。 1 unix.stackexchange.com: 104字节,1+4+0+0条记录,响应,无错误 查询:1 unix.stackexchange.com 答案:unix.stackexchange.com 300 A 151.101.1.69 答案:unix.stackexchange.com 300 A 151.101.65.69 答案:unix.stackexchange.com 300 A 151.101.129.69 答案:unix.stackexchange.com 300 A 151.101.193.69 % % 主机 gbnjk.com 1 gbnjk.com: 27字节,1+0+0+0条记录,响应,权威,nxdomain 查询:1 gbnjk.com %
丹尼尔·J·伯恩斯坦工具
本机 djbdns 查询工具有dnsq
, dnsqr
, dnsqrx
, dnsname
, dnsnamex
, , dnsmx
, dnsip
, dnsipq
,dnstxt
和dnstrace
。它们的数量很多,因为它们分为三类:
- 产生人类可读输出的工具:
dnsq
,dnsqr
,dnsqrx
- 产生机器可解析输出的工具:
dnsname
,dnsnamex
,dnsmx
,dnsip
,dnsipq
,dnstxt
dnstrace
其输出是机器可解析的,并且通常通过dnstracesort
,一个将机器可解析的内容转换为人类可读的过滤器
如上所述,人类可读的工具仅执行一项 DNS 事务,并打印来自相关 DNS 服务器的响应内容(不同的工具针对特定类型的 DNS 服务器进行定制,内容或者代理人)。
% dnsqr ns stackexchange.com。 2.stackexchange.com: 170字节,1+4+0+0条记录,响应,无错误 查询:2 stackexchange.com 答案:stackexchange.com 170156 NS ns-1029.awsdns-00.org 答案:stackexchange.com 170156 NS ns-925.awsdns-51.net 答案:stackexchange.com 170156 NS ns-cloud-d1.googledomains.com 答案:stackexchange.com 170156 NS ns-cloud-d2.googledomains.com % % dnsq ns stackexchange.com。 ns-925.awsdns-51.net。 /package/admin/djbwares [pts/4.10022.1] 2.stackexchange.com: 170字节,1+4+0+0条记录,响应,权威,无错误 查询:2 stackexchange.com 答案:stackexchange.com 172800 NS ns-1029.awsdns-00.org 答案:stackexchange.com 172800 NS ns-925.awsdns-51.net 答案:stackexchange.com 172800 NS ns-cloud-d1.googledomains.com 答案:stackexchange.com 172800 NS ns-cloud-d2.googledomains.com % % dnsqr a gbnjk.com 1 gbnjk.com: 27字节,1+0+0+0条记录,响应,权威,nxdomain 查询:1 gbnjk.com %
机器可解析的工具设计用于 shell 脚本。它们不会用诸如“有 ipv4 地址”或“答案:”之类的额外内容来扰乱其输出,并且它们的输出是明确定义的。 dnsipq
例如,始终为每个输入名称打印一行(可能为空白)或以失败代码退出。 dnsnamex
另一个示例是,始终为每个输入 IP 地址打印一行(可能为空白或包含多个空格分隔的名称)。
% dnsip unix.stackexchange.com。 unix.stockexchange.com。 151.101.129.69 151.101.193.69 151.101.1.69 151.101.65.69 % % dnsnamex `dnsip unix.stackexchange.com。` % % dnsmx unix.stackexchange.com。 0 unix.stackexchange.com % % dnsmx stackexchange.com。 1 aspmx.l.google.com 5 alt1.aspmx.l.google.com 5 alt2.aspmx.l.google.com 10 alt3.aspmx.l.google.com 10 alt4.aspmx.l.google.com %
如您所见,它们专门用于进行 DNS 查找用于特定任务而不是只执行一个特定类型的 DNS 事务。 dnsmx
例如,以机器可解析的每行一个结果、空格分隔的形式报告 MTS 将在何处传输 SMTP 邮件以及它们尝试的顺序;收集哪些信息涉及多个 DNS 事务。
NLlabs工具
国家实验室drill
来自LDNSdig
(不像另一个答案所说的“Unbound”)旨在根据其用户手册打印“比”更多的信息。它没有相当于dig
的短模式。与正常模式一样dig
,其输出采用 ISC 的“区域文件”格式,包含大量注释行,需要完整的“区域文件”解析器以编程方式处理。因此它不是用于机器可解析的短输出的工具。
它的命令行解析相当草率:
% 练习,你可以在这里拥有任何东西+简短的内容,只要你喜欢'!' unix.stackexchange.com。 ;; ->>标头<<- 操作码:QUERY,rcode:NOERROR,id:47385 ;;标志:qr rd ra;查询:1,答案:4,权限:0,附加:0 ;;问题部分: ;; unix.stackexchange.com。在一个 ;;答案部分: unix.stackexchange.com。 277 于 151.101.193.69 unix.stackexchange.com。 277 于 151.101.129.69 unix.stackexchange.com。 277 于 151.101.65.69 unix.stackexchange.com。 277 在 151.101.1.69 ;;权力部分: ;;附加部分: ;;查询时间:145毫秒 ;;服务器:127.0.0.1 ;;时间:2018 年 5 月 27 日星期日 10:52:12 ;;味精大小 rcvd:104 %
虽然这种事情可以帮助那些不记得类型或域名是否是命令的第一个参数的人,但这与人们想要的脚本目的相反。人们想要一个定义良好的接口,具有定义和记录的参数顺序,其中误用是一种错误错误这并不试图事后猜测什么意思是跑步。
“只是 DNS”
正如另一个答案中所述,这取决于您想要的“只是 DNS”。
- 如果您希望在脚本中使用具有机器可解析输出的工具,则该输出只是结果信息,查看 djbdns 工具集。
- 如果您想要只执行的工具只有一个DNS 事务,但提供您作为人类可以读取的输出,请查看我的
host
或 djbdns 工具集中的工具。 - 否则,请查看上述所有内容。
请注意,其中之一一些的缺点nslookup
是,在包括一些 Unices 在内的多个操作系统上,它已被增强以执行以下操作不仅仅是 DNS 查找。 nslookup
正如我和其他人近二十年来一直在解释的那样,这是一个存在严重缺陷的工具。绝对是不应该是“常用工具”,我希望通过我们多年来的努力,现在它不是。
进一步阅读
- 乔纳森·德博因·波拉德 (2004)。DNS 诊断工具。。经常给出的答案。
- 乔纳森·德博因·波拉德。 命令。 djbwares 工具集。 软件。
- 乔纳森·德博因·波拉德 (2001)。
nslookup
是一个有严重缺陷的工具。不要使用它。。经常给出的答案。
答案3
这取决于你所说的“只是”到底是什么意思(与什么基线相比?)。host
(来自bind-tools或bind-utils包)其输出非常简洁,但仍然有一些人类可读的文本:
[0 1016 8:16:41] ~ % host unix.stackexchange.com
unix.stackexchange.com has address 151.101.129.69
unix.stackexchange.com has address 151.101.193.69
unix.stackexchange.com has address 151.101.65.69
unix.stackexchange.com has address 151.101.1.69
“问题”的一部分是,可能会发生更多情况,您需要在输出和/或返回代码中发出信号,例如:DNS 服务器故障、CNAME 条目(即“linux.example.com 是任何 unix .example.com 是,去那里看看”):
[0 1018 8:17:36] ~ % host www.latimes.com
www.latimes.com is an alias for 32975.edgekey.net.
32975.edgekey.net is an alias for e11929.e12.akamaiedge.net.
e11929.e12.akamaiedge.net has address 23.219.130.10
e11929.e12.akamaiedge.net has address 23.219.130.8
可能还有更多。
答案4
常用的简单工具有:
$ host unix.stackexchange.com
unix.stackexchange.com has address 151.101.1.69
unix.stackexchange.com has address 151.101.65.69
unix.stackexchange.com has address 151.101.129.69
unix.stackexchange.com has address 151.101.193.69
$ nslookup unix.stackexchange.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: unix.stackexchange.com
Address: 151.101.1.69
Name: unix.stackexchange.com
Address: 151.101.65.69
Name: unix.stackexchange.com
Address: 151.101.129.69
Name: unix.stackexchange.com
Address: 151.101.193.69
主机来自未绑定在bind9-host 包中的ISC。 dig 和 nslookup 都来自 dnsutils 包。如果您需要其他工具来更详细地分析 DNS,那么有dig
(来自绑定)。选项给出了简短的答案+short
(删除以获得更详细的答案):
$ dig +short unix.stackexchange.com
151.101.1.69
151.101.65.69
151.101.129.69
151.101.193.69
或钻(从不受约束的):
$ drill @1.1.1.1 unix.stackexchange.com
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 48240
;; flags: qr rd ra ; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; unix.stackexchange.com. IN A
;; ANSWER SECTION:
unix.stackexchange.com. 250 IN A 151.101.1.69
unix.stackexchange.com. 250 IN A 151.101.65.69
unix.stackexchange.com. 250 IN A 151.101.129.69
unix.stackexchange.com. 250 IN A 151.101.193.69
;; AUTHORITY SECTION:
;; ADDITIONAL SECTION:
;; Query time: 3 msec
;; SERVER: 1.1.1.1
;; WHEN: Sun May 27 10:16:27 2018
;; MSG SIZE rcvd: 104
如果您不知道如何设置信任锚,请小心挖掘,特别是信任钻探答案。这两种工具都远非简单。