dig简单使用

前言

域名信息搜素器(Dig)是一个类似于nslookup的强大工具,它不仅支持运行命令行选项,而且还支持在查询多个域名时将文件通过管道直接导入,本文将大致介绍dig的一般使用方法;

语法

1
2
3
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} [...]]
  1. domain

    域名

  2. q-type

    (in,hs,ch,…) 之一[默认值: in]

  3. q-class

    (a,any,mx,ns,soa,hinfo,axfr,txt,…) 之一[默认值:a]

    (Use ixfr=version for type ixfr)

  4. q-opt

    keyword 解释
    -4 仅使用IPv4查询传输
    -6 仅使用IPv6查询传输
    -b address[#port] 绑定到源地址/端口
    -c class 缺省查询类(IN for internet)由选项-c重设。class 可以是任何合法类,比如查询 Hesiod 记录的 HS 类或查询 CHAOSNET 记录的 CH 类。
    -f filename 使dig在批处理模式下运行,通过从文件filename读取一系列搜索请求加以处理。文件包含许多查询;每行一个。文件中的每一项都应该以和使用命令行接口对dig的查询相同的方法来组织。
    -i 使用IP6.INT进行IPv6反向查找
    -k keyfile 签署由dig发送的DNS查询以及对它们使用事务签名(TSIG)的响应时,指定TSIG密钥文件
    -m 启用内存使用调试
    -p port 查询一个非标准的端口号,port是dig将发送其查询的端口号,而不是标准的 DNS 端口号 53。该选项可用于测试已在非标准端口号上配置成侦听查询的域名服务器。
    -q name 指定查询名称
    -t type 设置查询类型为 type。可以是BIND9支持的任意有效查询类型。缺省查询类型是 A,除非提供-x选项来指示一个逆向查询。通过指定 AXFR的type可以请求一个区域传输。当需要增量区域传输(IXFR)时,type 设置为 ixfr=N。增量区域传输将包含自从区域的SOA记录中的序列号改为 N 之后对区域所做的更改。
    -u 以usec代替msec显示时间
    -x dot-notation 反 向查找的快捷方式
    -y[hmac:]name:key 指定 TSIG 密钥;name是TSIG密码的名称,key是实际的密码。密码是64位加密字符串,通常由dnssec-keygen(8)生成。
  5. d-opt全局查询选项

    形式是+keyword[=value],其中keyword如下

    keyword 解释
    +[no]aaflag 在查询中[不]设置AA标志
    +[no]aaonly 在查询中[不]只设置AA标志
    +[no]additional 显示 [不显示] 应答的附加部分。缺省显示。
    +[no]adflag 在查询中设置 [不设置] AD(真实数据)位。目前 AD 位只在响应中有标准含义,而查询中没有,但是出于完整性考虑在查询中这种性能可以设置。
    +[no]all 设置或清除所有显示标志。
    +[no]answer 显示 [不显示] 应答的回答部分。缺省显示。
    +[no]authority 显示 [不显示] 应答的权限部分。缺省显示。
    +[no]badcookie [不]重试badcookie响应
    +[no]besteffort 是否 尝试解析非法消息
    +buffsize=### 设置使用 EDNS0 的 UDP 消息缓冲区大小为###字节。缓冲区的最大值和最小值分别为 65535 和 0。超出这个范围的值自动舍入到最近的有效值。
    +[no]cdflag 在查询中设置 [不设置] CD(检查禁用)位。它请求服务器不运行响应信息的 DNSSEC 合法性。
    +[no]class 控制记录中class是否显示。
    +[no]cmd 设定在输出中显示指出 dig 版本及其所用的查询选项的初始注释。缺省情况下显示注释。
    +[no]comments 切换输出中的注释行显示。缺省值是显示注释。
    +[no]cookie 是否向请求添加cookie选项。
    +[no]crypto 控制记录中加密字段是否显示。
    +[no]defname 是否使用搜索列表。
    +[no]dnssec 是否请求dnssec记录。
    +domain=### 设置默认域名为###。
    +[no]dscp[=###] 是否设置dscp值为###。
    +[no]edns[=###] 是否设置edns版本。
    +ednsflags=### 设置EDNS标志位为###。
    +[no]ednsnegotiation 是否设置EDNS版本协商。
    +ednsopt=###[:value] 发送指定的EDNS选项。
    +noednsopt 清除+ednsopt选项列表。
    +[no]expire 是否请求过期时间。
    +[no]fail 是否在SERVFAIL上尝试下一个服务器。
    +[no]identify 当启用 +short 选项时,显示 [或不显示] 提供应答的 IP 地址和端口号。如果请求简短格式应答,缺省情况不显示提供应答的服务器的源地址和端口号。
    +[no]idnin 是否解析IDN名称。
    +[no]idnout 是否转换IDN响应。
    +[no]ignore 忽略 UDP 响应的中断,而不是用 TCP 重试。缺省情况运行 TCP 重试。
    +[no]keepopen 是否在查询之间保持TCP套接字打开。
    +[no]mapped 是否允许通过IPv6映射IPv4。
    +[no]multiline 以详细的多行格式显示类似 SOA 的记录,并附带可读注释。缺省值是每单个行上显示一条记录,以便于计算机解析 dig 的输出。
    +ndots=### 出于完全考虑,设置必须出现在名称###的点数。缺省值是使用在 /etc/resolv.conf 中的 ndots 语句定义的,或者是 1,如果没有 ndots 语句的话。带更少点数的名称被解释为相对名称,并通过搜索列表中的域或文件 /etc/resolv.conf 中的域伪指令进行搜索。
    +[no]nsid 是否请求名称服务器(NS)ID。
    +[no]nssearch 这个选项被设置时,dig 试图寻找包含待搜名称的网段的权威域名服务器,并显示网段中每台域名服务器的 SOA 记录。
    +[no]onesoa AXFR是否只打印一个soa记录。
    +[no]opcode=### 设置请求的操作码为###。
    +[no]qr 该查询选项设定显示统计信息:查询进行时,应答的大小等等。缺省显示查询统计信息。
    +[no]question 当返回应答时,显示 [不显示] 查询请求的问题部分。缺省作为注释显示问题部分。
    +[no]rdflag 是否设置递归模式。
    +[no]recurse 切换查询中的 RD(要求递归)位设置。在缺省情况下设置该位,也就是说 dig 正常情形下发送递归查询。当使用查询选项 +nssearch 或 +trace 时,递归自动禁用。
    +retry=### 设置UDP重试次数为###。
    +[no]rrcomments 是否控制每条记录注释的显示。
    +[no]search 使用 [不使用] 搜索列表或 resolv.conf 中的域伪指令(如果有的话)定义的搜索列表。缺省情况不使用搜索列表。
    +[no]short 提供简要答复。缺省值是以冗长格式显示答复信息。
    +[no]showsearch 是否使用中间结果搜索。
    +[no]sigchase 是否使用DNSSEC签名。
    +[no]split=## 是否将十六进制/base64字段拆分为块
    +[no]stats 该查询选项设定显示统计信息:查询进行时,应答的大小等等。缺省显示查询统计信息。
    +subent=addr 设置edns客户端子网选项。
    +[no]tcp 查询域名服务器时使用 [不使用] TCP。缺省行为是使用 UDP,除非是 AXFR 或 IXFR 请求,才使用 TCP 连接。
    +timeout=### 设置查询超时时间为###。
    +[no]topdown 是否设置自上而下的sigchase查询模式
    +[no]trace 切换为待查询名称从根名称服务器开始的代理路径跟踪。缺省情况不使用跟踪。一旦启用跟踪,dig 使用迭代查询解析待查询名称。它将按照从根服务器的参照,显示来自每台使用解析查询的服务器的应答。
    +trusted-key=#### 设置与+sigchase一起使用的可信密钥为####。
    +tries=### 设置UDP尝试次数为###。
    +[no]ttlid 是否设置记录中ttls的控制显示。
    +[no]ttlunits 是否设置以可读单位显示TTLs。
    +[no]unknownformat 以RFC 3597“unknown”格式打印RDATA。
    +[no]vc 查询名称服务器时使用 [不使用] TCP。+[no]tcp 的备用语法提供了向下兼容。 vc 代表虚电路。
    +[no]zflag 是否在查询中设置Z标志。

    全局d-opts和服务器(在主机名之前)影响所有查询;

    本地d-opts和服务器(在主机名之后)仅影响该查找;

dig常用命令举例

  1. 查询A/MX/NS记录

    1
    2
    3
    dig www.baidu.com A/MX/NS +noall +answer
    #查询所有记录
    dig www.baidu.com ANY +noall +answer
  2. 使用AAAA的选项查询主机的IPv6的AAAA记录,并使用精简答案

    1
    dig www.baidu.com AAAA +short
  3. 跟踪dig的查询路径

    1
    dig www.baidu.com +trace
  4. 用dig查看zone数据传输

    1
    dig @server www.baidu.com AXFR
  5. 用dig查看zone数据的增量传输

    1
    dig @server www.baidu.com AXFR=N
  6. 反向解析

    1
    dig -x ip @server
  7. 查看使用的是哪个 F root dns server

    1
    dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT

参考

  1. Dig HOWTO 中文手册
  2. dig