dig 命令
用途
DNS 查询实用程序。
语法
dig[@server][-b address][-c class] [-f filename] [-k keyfile] [-m] [-p port#] [-q name] [-t type] [-u] [-v] [-x addr] [-y[hmac:]name:key] [-4] [-6][name] [type] [class][queryopt...]
dig[-h]
挖掘 [global-queryopt...] [询问...]
描述
dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具。 它执行 DNS 查找并显示从查询的名称服务器返回的答案。 多数 DNS 管理员使用 dig 命令 来诊断 DNS 问题,因为它灵活性好、容易使用、输出清晰。 虽然通常情况下 dig 与命令行参数配合使用,但它也可以按批处理方式从文件读取查询请求。 不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询。 除非被告知查询特定名称服务器,否则 dig 命令将尝试查询 /etc/resolv.conf 文件中列示的每个服务器。 如果找不到可用的服务器地址,dig 命令会将查询发送到本地主机。 如果没有指定命令行参数或选项,dig命令将执行 NS 查询". (根)。
可通过 ${HOME}/.digrc 文件对 dig 命令设置每个用户的缺省值。 dig 命令会读取此文件并在应用命令行参数之前应用其中的所有选项。
IN 和 CH 类名与 IN 和 CH 顶级域名重叠。 查询这些顶级域时,可以使用-t和-c选项指定类型和类别,或使用-q选项指定域名,或使用IN和CH名称。
标志
| 项 | 描述 |
|---|---|
| -b 地址[#端口] | 设置要将查询发送至的地址的源 IP 地址。 指定的地址必须是主机网络接口上的有效地址,或者是0.0.0.0"或"::"。 可通过附加“#port”来指定可选端口。 |
| -c 类 | 覆盖缺省查询类(对于因特网为 IN)。 class 参数值是任何有效类,如 HS(用于 Hesiod 记录)或 CH(用于 CHAOSNET 记录)。 |
| -f 文件名 | 通过从指定文件名读取要处理的查询请求列表,使 dig 命令在批处理方式下运行。 文件包含许多查询;每行一个。 对于使用命令行接口的 dig 命令,该文件中的每个条目必须以表示为查询的方式进行组织。 |
| -h | 显示命令行参数和选项的简短总结。 |
| -k 密钥文件 | 使用 -k 选项来指定 TSIG 密钥文件以对由 dig 命令发送的 DNS 查询签名。 您可以使用 tsig-keygen 命令生成密钥文件。 使用 "dig命令进行 TSIG 身份验证时,被查询的名称服务器必须识别所使用的密钥和算法。 在 BIND 中,这一操作是通过在 "named.conf文件中指定适当的密钥和服务器语句来完成的。 |
| -M | 启用内存使用调试。 |
| -p 端口# | 查询非标准端口号。 port# 参数值是 dig 命令将其查询发送至的端口号而不是标准 DNS 端口号 53。 可使用此选项来测试已配置为侦听非标准端口号上的查询的名称服务器。 |
| -q 名字 | 将该名称与其他参数区分开。 将查询名称设置为指定的 name 参数值。 |
| -t 类型 | 将查询类型设置为 type 参数值。 它可以是 BIND9 中支持的任意有效查询类型。 缺省查询类型是 A,除非提供 -x 选项来指示一个逆向查询。 通过指定 AXFR 的
type 可以请求一个区域传输。 需要增量区段转移 (IXFR) 时,类型参数值设置为ixfr=N。 增量区转移包含对该区所做的更改,因为该区 SOA 记录中的序列号为N。 所有资源记录类型都可以用TYPEnn 表示,其中nn是类型的编号。 如果 BIND 9 不支持资源记录类型,则会按照RFC3597 中的描述显示结果。 |
| -U | 表示必须以微秒而不是毫秒为单位指定打印查询时间。 |
| -v | 打印版本号并退出。 |
| -x 地址 | 简化冗余查询(将地址映射至名称)。 addr
参数值是用点分十进制表示的 IPv4 地址或用冒号定界的 IPv6 地址。 使用此选项时,无需提供
name、class 和 type 参数。 dig 命令自动对 11.12.13.10.in-addr.arpa
之类的名称执行查询,并分别将查询类型和类设置为 PTR 和 IN。 |
| -y[hmac:]名称:键 | 在命令行上指定 TSIG 密钥本身;hmac 是 TSIG 的类型。 缺省值为 HMAC-MD5。 name 参数值是 TSIG 密钥的名称,而 key 参数值是实际密钥。 密钥是 64 位加密字符串,通常由 dnssec-keygen(8) 生成。 在多用户系统上使用 -y 选项时必须特别谨慎,因为密钥在 ps(1) 的输出或 shell 的历史记录文件中是可视的。 将 TSIG 认证与 dig 命令配合使用时,查询的名称服务器需要知道正在使用的密钥和算法。 在 BIND 中,这是通过在 named.conf 文件中提供适当的密钥和服务器语句完成的。 |
| -4 | 强制 dig 命令仅使用 IPv4 查询传输。 |
| -6 | 强制 dig 命令仅使用 IPv6 查询传输。 |
参数
查询选项
no 以否定该关键字的含义。 其他关键字分配各选项的值,例如超时时间间隔。 它们的形式为 "+keyword=value。 查询选项是:- +[no]tcp
- 查询名称服务器时使用或不使用 TCP。 缺省行为是使用 UDP,除非是 AXFR 或 IXFR 请求,才使用 TCP 连接。
- +[no]vc
- 查询名称服务器时使用或不使用 TCP。
+[no]tcp的备用语法提供了向下兼容。 vc 代表虚电路。 - +[no]ignore
- 忽略 UDP 响应的中断,而不是用 TCP 重试。 缺省情况运行 TCP 重试。
- +domain=somename
- 将搜索列表设置为包含单个域somename,就像在/etc/resolv.conf文件的域指令中指定的那样,并启用搜索列表处理,就像给出 "
+search选项那样。 - +[no]search
- 使用或不使用 /etc/resolv.conf 文件(如果存在)中的搜索列表或域伪指令定义的搜索列表。 缺省情况不使用搜索列表。
- +[no]defname
- 不推荐使用,视作
+[no]search的同义词。 - +[no]aaonly 或 +[no]aaflag
- 在查询中设置“aa”标志。
- +[no]adflag
- 在查询中设置或不设置 AD(真实数据)位。 根据服务器的安全策略,该查询请求服务器返回是否所有答案和授权部分都已验证为安全。
AD=1表示所有记录都已通过安全验证,且答案不在 OPT-OUT 范围内。AD=0表示答案的某些部分不安全或未经验证。 该位默认为设置。 - +[no]cdflag
- 在查询中设置或不设置 CD(禁用检查)位。 它请求服务器不对响应执行 DNSSEC 验证。
- +[无]类
- 显示记录时显示或不显示 CLASS。
- +[no]ttlid
- 显示记录时显示或不显示 TTL。
- +[no]recursive
- 切换查询中的 RD(要求递归)位设置。 缺省情况下会设置此位,它表示 dig
通常会发送递归查询。 当使用
查询选项
+nssearch或+trace时,递归自动禁用。 - +[no]nssearch
- 设置此选项时,dig 命令会尝试查找区域(该区域包含要查询的名称)的权威域名服务器,并显示每个域名服务器对应该区域的 SOA 记录。 没有响应的服务器地址也会打印出来。
- +[no]trace
- 切换为待查询名称从根名称服务器开始的代理路径跟踪。 缺省情况不使用跟踪。 启用跟踪时,dig
命令会执行迭代查询以解析要查询的名称。 它会遵循根服务器中的引用,显示来自用于解析查询的每个服务器的应答。
如果同时指定@server,则只影响对根区名称服务器的初始查询。当设置了+trace时,也会设置+dnssec以更好地模拟来自名称服务器的默认查询。
- +[no]cmd
- 切换输出中的初始注释的显示,该注释标识 dig 的版本和已应用的查询选项。 该选项始终具有全局效果。 不能在全局范围内设置,然后在每次查询时重写。 缺省情况下会显示此注释。
- +[no]short
- 提供简要应答。 缺省情况是以详细格式显示应答信息。 该选项始终具有全局效果;不能全局设置,然后在每次查询时覆盖。
- +[no]identify
- 启用
+short选项时,显示或不显示提供应答的 IP 地址和端口号。 如果请求简短格式应答,缺省情况不显示提供应答的服务器的源地址和端口号。 - +[no]comments
- 切换输出中注释行的显示,这些注释行包含数据包头和选项伪部分的信息,以及响应部分的名称。 默认情况下会显示注释。 输出中的其他注释类型不受此选项影响,但可以使用其他命令行开关进行控制,如 +[no]cmd、"
+[no]question、"+[no]stats"和 "+[no]rrcomments。 - +[no]stats
- 切换统计信息的显示:执行查询的时间、应答的大小等等。 缺省显示查询统计信息。
- +[no]qr
- 发送查询时显示或不显示查询。 缺省情况下不显示该查询。
- +[no]question
- 返回答应时,显示或不显示查询的问题部分。 缺省作为注释显示问题部分。
- +[no]answer
- 显示或不显示应答的回答部分。 缺省情况下会显示此项。
- +[no]authority
- 显示或不显示应答的权限部分。 缺省情况下会显示此项。
- +[no]additional
- 显示或不显示应答的附加部分。 缺省情况下会显示此项。
- +[no]all
- 设置或清除所有显示标志。
- +[no]badcookie
- 如果收到 BADCOOKIE 响应,则使用新的服务器 cookie 重试查找操作。
- +[no]cookie=####
- 设置或不设置 COOKIE EDNS 选项,带可选值。 重放以前响应中的 COOKIE 可让服务器识别以前的客户。 默认值为 "
+cookie。+cookieis also set when+traceis set to better emulate the default queries from a name server. - +bufsize[=B]
- 将使用EDNS0发送的 UDP 报文的缓冲区大小设置为B字节。 该缓冲区的最大和最小值分别为 65535 和 0。
+bufsize=0查询会禁用 DNS 的扩展机制(EDNS)。 使用 "+bufsize=0 +edns发送广告大小为 0 字节的 EDNS 报文。+bufsize查询恢复了默认缓冲区大小。 - +time=T
- 将查询的超时设置为 T 秒。 缺省超时值为 5 秒。 尝试将 T 参数值设置为小于 1 会导致应用设置为 1 秒的查询超时。
- +tries=A
- 将尝试 UDP 查询服务器的次数设置为A参数值,而不是默认值 3。 如果参数A的值小于或等于零,重试次数将被四舍五入为 1。
- +retry=T
- 将重试服务器 UDP 查询的次数设置为T参数值,而不是默认的 2。 与+tries 不同,它不包括初始查询。
- +ndots=D
- 将必须出现在名称中的点的数目设置为 D 参数值,因为它被视为绝对参数。 缺省值为在 /etc/resolv.conf 文件中使用 ndots 语句定义的值,如果没有 ndots 语句,那么缺省值为 1。 点的数目较少的名称被解释为相对名称,并且会在 /etc/resolv.conf 文件的搜索或域伪指令中列示的域中搜索这些名称。
- +bufsize=B
- 设置使用 EDNS0 的 UDP 消息缓冲区大小为 B 字节。 此缓冲区的最大大小和最小大小分别为 65535 和 0。 超出此范围的值会相应地向上或向下舍入。 非零值会导致发送 EDNS 查询。
- +edns=#
- 指定要用于查询的 EDNS 版本。 有效值为 0 到 255。 设置 EDNS 版本会导致发送 EDNS 查询。+noedns会清除记忆的 EDNS 版本。
- +[no]multiline
- 以详细的多行格式显示类似 SOA 的记录,并附带可读注释。 缺省值为在单行上显示一条记录,以便机器解析 dig 输出。
- +[no]fail
- 接收到 SERVFAIL 时不要尝试下一个服务器。 缺省情况是不尝试下一个服务器,这与正常的存根解析器行为相反。
- +[no]besteffort
- 尝试显示格式错误的消息的内容。 缺省情况是不显示格式不正确的应答。
- +[no]dnssec
- 通过在查询的附加部分的 OPT 记录中设置 DNSSEC OK 位 (DO) 来请求要发送的 DNSSEC 记录。
- +[no]sigchase
- 跟踪 DNSSEC 签名链。 要求使用 -DDIG SIGCHASE 来编译 dig 命令。
- +trusted-key=####
- 指定包含要与 +sigchase 一起使用的可信密钥的文件。 每个 DNSKEY 记录必须为单独的一行。 如果未指定,那么 dig 命令会查找 /etc/trusted-key.key 文件,然后会在当前目录中查找 trusted-key.key 文件。 要求使用 -DDIG SIGCHASE 来编译 dig 命令。
- +[no]topdown
- 跟踪 DNSSEC 签名链时,执行自顶向下验证。 要求使用 -DDIG SIGCHASE 来编译 dig 命令。
- +[no]crypto
- 切换 DNSSEC 记录中加密字段的显示。 调试大多数 DNSSEC 验证故障时,不需要这些字段的内容。 如果删除加密字段,就可以轻松查看常见故障。 默认显示加密字段。 如果省略这些加密字段,则用字符串 [
omitted] 代替,如果是 DNSKEY,则显示密钥 ID。 例如[key id = value]. - +dscp=value
- 设置发送查询时必须使用的 DSCP 代码点。 有效的 DSCP 代码点范围为 0 - 63。 默认情况下,不明确设置码位。
- +[no]edns[=#]
- 指定要查询的 EDNS 版本。 有效值范围为 0 - 255。 设置 EDNS 版本会导致发送 EDNS 查询。
+noedns清除存储的 EDNS 版本信息。 EDNS 默认设置为 0。 - +[no]ednsflags[=#]
- 将必须为零的 EDNS 标志位(Z 位)设置为指定值。 接受十进制、十六进制和八进制编码。 设置指定标志(例如 DO)将被忽略。 默认情况下,不设置 Z 位。
- +[no]ednsnegotiation
- 启用或禁用 EDNS 版本协商。 默认情况下,EDNS 版本协商已启用。
- +[no]ednsopt[=code[:value]]
- 指定 EDNS 选项的码位和可选有效载荷,有效载荷的值为十六进制字符串。 代码可以是 EDNS 选项名称(例如 NSID 或 ECS)或任意数值。+noednsopt清除 EDNS 选项。
- +[无]过期
- 发送 EDNS 过期选项。
- +[no]header-only
- 发送带有 DNS 标头但不含问题部分的查询。 默认情况下会添加问题部分。 设置该选项时,查询类型和查询名称将被忽略。
- +[no]idnin
- 根据输入处理或不处理 IDN 域名。 该选项要求在编译时启用 IDN 支持。 默认情况下,当标准输出为 tty 时,将处理 IDN 输入。 当 "dig命令的输出被重定向到文件、管道和其他非 tty 文件描述符时,基于输入的 IDN 处理将被禁用。
- +[no]keepalive
- 发送或不发送 EDNS keepalive 选项。
- +[no]keepopen
- 在两次查询之间保持或不保持 TCP 套接字打开,并重复使用它,而不是为每次查询操作创建一个新的 TCP 套接字。 默认值为 "
+nokeepopen。 - +[无]映射
- 允许或不允许使用映射IPv4-over-IPv6地址进行 DNS 查询。 默认值为 "
+mapped。 - +[no]nsid
- 启用后,在发送查询时包含 EDNS 名称服务器 ID 请求。
- +[no]onesoa
- 启用后,在执行 AXFR 查询时只打印一条(起始)SOA 记录。 默认情况下,开始和结束的 SOA 记录都会打印。
- +[no]opcode=value
- 启用后,将 DNS 消息操作码设置或恢复为指定值。 默认值为 QUERY (0)。
- +padding=value
- 使用 EDNS 填充选项将查询数据包的大小填充为以值字节为单位的块。 例如,"
+padding=32会将 48 字节的查询填充为 64 字节。 默认块大小为 0,禁用填充;最大值为 512。 数值通常应为 2 的幂,如 128;但这并不是强制性的。 对填充查询的回复也可能被填充,但只有在查询使用 TCP 或 DNS COOKIE 时才会这样。 - +[no]raflag
- 设置或不设置查询中的 RA(递归可用)位。 默认值为 "
+noraflag。 对于 QUERY,服务器将忽略该位。 - +[no]rdflag
- 与 "
+[no]recurse相似。 - +[no]recurse
- 切换查询中 RD(所需递归)位的设置。 该位默认为设置,这意味着 "dig命令通常会发送递归查询。 使用 "
+nssearch或 "+trace查询选项时,递归将自动禁用。 - +[no]rrcomments
- 切换在输出中显示每条记录的注释(例如,关于 DNSKEY 记录的人可读关键信息)。 默认情况下,除非激活多行模式,否则将打印记录注释。
- +[no]showsearch
- 执行或不执行显示中间结果的搜索。
- +split=W
- 将资源记录中长的十六进制或base64-formatted字段分割成 W 个字符(W 为最接近的 4 的整数倍)。+nosplit或+split=0会导致字段不被分割。 默认值为 56 个字符,多行模式激活时为 44 个字符。
- +[no]子网=地址[/前缀长度]
使用指定的 IP 地址或网络前缀发送或不发送 EDNS CLIENT-SUBNET 选项。
ig +subnet=0.0.0.0/0(或简称 "dig +subnet=0)会发送一个带有空地址和零源前缀长度的 EDNS CLIENT-SUBNET 选项,向解析器发出信号,表示在解析此查询时不得使用客户机的地址信息。- +[no]tcflag
- 设置或不设置查询中的 TCTrunCation)位。 默认值为 "
+notcflag。 对于 QUERY,服务器将忽略该位。 - +timeout=T
- 将查询的超时值设置为 T 秒。 默认超时值为 5 秒。 将 T 设置为小于 1 的尝试会被静默设置为 1。
- +tries=T
- 将服务器上 UDP 和 TCP 查询的尝试次数设为 T,而不是默认的 3。 如果 T 小于或等于 0,则尝试次数默默向上舍入为 1。
- +[no]ttlunits
- 显示或不显示 TTL,时间单位为 s、m、h、d 和 w,分别代表秒、分、小时、天和周。 这意味着 "
+ttlid。 - +[no]unexpected
- 接受或不接受意外来源的答案。 默认情况下,"dig命令不接受来自它发送查询的来源以外的其他来源的回复。
- +[no]unknownformat
- 以未知 RR 类型呈现格式(RFC 3597)打印所有 RDATA。 默认情况下,已知类型的 RDATA 会以该类型的显示格式打印。
- +[no]yaml
- 启用后,该选项将以详细的 YAML 格式打印响应(如果使用 +qr,还将打印出站查询)。
- +[no]zflag
- 设置或不设置 DNS 查询中最后一个未指定 DNS 标头标志。 该标志默认设置为 "
off。
多重查询
dig 的 BIND9 支持在命令行上指定多重查询(支持 -f 批处理文件选项的附加功能)。 每条查询可以使用自己的标志位、选项和查询选项。
在此情况下,每个查询参数在命令行语法是表示个别查询。 每个查询由任意标准选项和标志、要查询的名称、可选查询类型、类以及必须应用于该查询的所有查询选项组成。
dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr此 dig
命令字符串显示如何在命令行中使用 dig
命令来执行以下 3 个查询:针对 www.isc.org
的 ANY 查询、127.0.0.1 的反向查询和针对 isc.org 的 NS 记录的查询。 将应用全局查询选项
+qr,以便 dig
命令显示它对每个查询所做的初始查询。 最终查询具有局部查询选项 +noqr,它表示
dig 命令在查询 isc.org
的 NS 记录时不会显示初始查询。IDN 支持
如果 dig 命令是使用国际化域名 (IDN) 支持构建的,那么它会接受并显示非 ASCII 域名。 在向 DNS 服务器发送请求或显示来自服务器的应答之前,dig 命令会适当地转换域名的字符编码。 如果因为某些原因要关闭 IDN 支持,请定义 IDN DISABLE 环境变量;如果运行 dig 命令时设置了该变量,那么会禁用以下 IDN 支持。
示例
dig @server name type其中:- 服务器
- 待查询名称服务器的名称或 IP 地址。 可以是用点分隔的 IPv4 地址或用冒号分隔的 IPv6 地址。 提供的服务器参数为主机名时,dig 命令会在查询该域名服务器前先解析该名称。 如果未提供服务器参数,那么 dig 命令会参考 /etc/resolv.conf 文件并查询该处列示的名称服务器。 显示来自域名服务器的应答。
- 名称
- 将要查询的资源记录的名称。
- TYPE
- 表示所需的查询类型:ANY、A、MX、SIG 等。 type 参数值可以是任意有效查询类型。 如果未提供 type 参数,那么 dig 命令会执行查询以查找 A 记录。
文件
/etc/resolv.conf
${HOME}/.digrc