运行时,dig
您可以指定“服务器”(您进行查询的 DNS 服务器)、“域”和“主机”。由于“主机”不是可选的,我猜这就是您想要解决的问题。但您也可以指定一个“域”。我认为如果我们unix.stackexchange.com
以 为例,“主机”可能是unix
,“域”可能是stackexchange.com
,但是dig stackexchange.com unix
似乎没有检索 的 dns 记录unix.stackexchange.com
。
我所指的“主机”和“域”是下面帮助行中列出的内容。
(澄清一下,我知道这是dig unix.stackexchange.com
可行的,我在挖掘帮助热线中询问“主机”和“域”的含义)
$ dig -v
DiG 9.16.44-Debian
$ dig -h
Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt}
{global-d-opt} host [@local-server] {local-d-opt}
[ host [@local-server] {local-d-opt} [...]]
Where: domain is in the Domain Name System
q-class is one of (in,hs,ch,...) [default: in]
q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]
(Use ixfr=version for type ixfr)
q-opt is one of:
-4 (use IPv4 query transport only)
-6 (use IPv6 query transport only)
-b address[#port] (bind to source address/port)
-c class (specify query class)
-f filename (batch mode)
-k keyfile (specify tsig key file)
-m (enable memory usage debugging)
-p port (specify port number)
-q name (specify query name)
-r (do not read ~/.digrc)
-t type (specify query type)
-u (display times in usec instead of msec)
-x dot-notation (shortcut for reverse lookups)
-y [hmac:]name:key (specify named base64 tsig key)
d-opt is of the form +keyword[=value], where keyword is:
+[no]aaflag (Set AA flag in query (+[no]aaflag))
+[no]aaonly (Set AA flag in query (+[no]aaflag))
...
global d-opts and servers (before host name) affect all queries.
local d-opts and servers (after host name) affect only that lookup.
-h (print help and exit)
-v (print version and exit)
答案1
我认为这只是描述中的一个错误23年前完成的重构。帮助文本来自语法正确的内容:
"Usage: dig [@server] [domain] [q-type] [q-class] {q-opt} {d-opt}\n"
"where: server,\n"
" domain are in the Domain Name System\n"
对此(请注意它仍然说“在域名系统中”,但现在主语是单数“域”):
"Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt}\n"
" {global-d-opt} host [@local-server] {local-d-opt}\n"
" [ host [@local-server] {local-d-opt} [...]]\n"
"Where: domain are in the Domain Name System\n"
如果您检查这些更改,您会发现它们几乎完全是为了更改选项的分配方式(全局与每次查找),以及选择主机/域/名称/无论您调用它的代码被查找本身是不变的。它没有在解析本身中添加任何新的域与主机区别。我想提交的作者混淆了这些术语,因为他们似乎也在host
大约同一时间进行工作(并host
使用了“主机名”)。
此更改早于dig(1)
联机帮助页本身,该联机帮助页发布几个月后。联机帮助页避免使用“域”、“主机”和“主机名”标签,而是使用第四个标签“名称”,使用[@server] ... [name] [type] [class] [queryopt...]
仍然可见的更简单的格式。
答案2
Dig 的可选host
参数是要将查询发送到的本地计算机的名称。它不是完全限定域名的“主机”部分。 (即,不是unix
来自unix.stackexchange.com
)。参数domain
是您要查找的名称。 (IE,unix.stackexchange.com
)
因此,如果您的本地 DNS 解析器计算机名为“mydns”,则dig
对该名称的地址的查询unix.stackexchange.com
将是:
dig unix.stackexchange.com mydns
虽然它通常更像是:
dig @mydns unix.stackexchange.com
或者,如果您想dig
询问计算机的默认解析程序(可能是同一台计算机上的进程),它可以简单如下:
dig unix.stackexchange.com
对我来说返回:
% dig unix.stackexchange.com
; <<>> DiG 9.10.6 <<>> unix.stackexchange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34418
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;unix.stackexchange.com. IN A
;; ANSWER SECTION:
unix.stackexchange.com. 300 IN A 172.64.144.30
unix.stackexchange.com. 300 IN A 104.18.43.226
;; Query time: 25 msec
;; SERVER: 2001:558:feed::1#53(2001:558:feed::1)
;; WHEN: Mon Dec 11 23:17:58 PST 2023
;; MSG SIZE rcvd: 83