dig 命令洞察 DNS 解析过程

上一篇文章,我们介绍了域名解析的过程,本章我们将介绍一个实用的工具---dig命令,通过dig命令我们可以查看 DNS 解析的过程,以便我们更好的理解 DNS 解析过程。

dig 命令全称域信息搜索器,是一个用于查询 DNS 域名服务器信息的命令行工具。因为dig命令灵活,容易使用,多数DNS管理员使用dig命令来诊断 DNS 问题。

dig 常用命令格式

dig [@server] [-p port] [-t type] [-4] [-6] [+trace] name

  • @ 指定 DNS 查询使用的服务器名称或 IP ,IP 地址可以是用点分隔的 IPv4 地址也可以是冒号分隔的 IPv6 地址。当参数指定的值是服务器的主机名时,dig 命令会在查询该域名服务器前先解析该主机名;
  • -p 指定 DNS 查询使用的端口号,默认情况下 DNS 查询使用标准的53端口,若使用非端口则需要通过 -p 参数指定,可使用此选项来测试已配置为侦听非标准端口号上的 DNS 服务器;
  • -t 指定 DNS 查询的记录类型,常用的类型包括:A/AAAA/NS/MX/CNAME 等,缺省查询类型是 A ;
  • -4 指定 dig 命令仅使用 IPv4 查询传输;
  • -6 指定 dig 命令仅使用 IPv6 查询传输;
  • +trace 跟踪从根名称服务器开始的迭代查询过程,缺省情况不使用跟踪。启用跟踪时,dig 命令会执行迭代查询以解析要查询的名称,显示来自用于解析查询的每个服务器的应答。

dig 命令的输出格式

以 dig www.qq.com 命令返回内容为例各字段说明如下:

  • status 表示查询状态,取值为 NOERROR 表示查询没什么错误;
  • opcode 表示操作码,取值为 QUERY 表示操作为查询操作;
  • id 表示查询事务 id;
  • QUERY 表示查询内容的条数,ANSEWER 表示回答内容条数,AUTHORITY 表示权威应答内容的条数,ADDITIONAL 表示附加内容的条数;
  • QUESTION SECTION:表示需要查询的内容,这里的返回内容表示需要查询域名的 A 记录;
  • ANSWER SECTION 表示查询结果,包含了两条记录,一条记录表示 www.qq.com 是 https.qq.com 的别名,第二条返回了 A 记录,表明 https.qq.com 的 IP 地址,其中33和1006分别表示本次查询的缓存时间,分别在这些秒数内容本地 DNS 服务器可以直接从缓存返回结果。

dig 命令查询资源记录

各类型解析资源记录介绍:

  • NS 记录:用来指定域名由哪个 DNS 服务器进行解析;
  • CNAME 记录:用来定义域名的别名,方便实现将多个域名解析到同一个 IP 地址;
  • A 记录:用来指定主机名对应的 IPv4 地址;
  • AAAA 记录:用来指定主机名对应的 IPv4 地址;
  • MX 记录:用来指定收件人域名的邮件服务器,SMTP 协议会根据 MX 记录的值来决定邮件的路由过程;
  • PTR 记录:常用于反向地址解析,将 IP 地址解析到对应的名称;
  • SOA 记录:称为起始授权机构记录,不同于 NS 记录用于标识多台域名解析服务器,SOA 记录用于在多台 NS 记录中哪一台是主 DNS 服务器。

DNS 服务器的主从架构

DNS 服务器通常以集群的方式提供服务,一台主服务器和多台从服务器,从服务器启动时从主服务器进行解析库的完全同步,运行时以一定的时间间隔进行增量刷新同步,继而记录的保证一致性,若从服务器超过一定的时间无法与主服务器同步刷新则从服务器记录会过期失效,无法提供解析服务。SOA 记录保存于主服务器,记录字段包括主 DNS 服务器名称,DNS 服务器管理员,序列号,从 DNS 服务器刷新间隔,从 DNS 服务器与主服务器断线后重连的时间间隔,从 DNS 服务器与 主 DNS 服务器断线后的过期时间间隔,记录的缓存生存周期。

到目前为止,我们对 DNS 解析的过程以及 DNS 服务器的架构已经有所了解,下一篇文章我们将讨论一个有趣的问题,为什么全球只有13台 DNS 服务器

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏偏前端工程师的驿站

Chrome Extension in CLJS —— 搭建开发环境

前言  磨刀不误砍柴工,本篇将介绍如何搭建Chrome插件的ClojureScript开发环境。 具体工具栈:vim(paredit,tslime,vim-c...

2796
来自专栏菩提树下的杨过

redis 学习笔记(6)-cluster集群搭建

上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,...

2165
来自专栏菩提树下的杨过

redis 学习笔记(6)-cluster集群搭建

上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,...

1995
来自专栏不止是前端

Vue:前后端数据联调

3989
来自专栏刺客博客

Cloud Torrent 使用教程(老司机专用软件)

4.3K5
来自专栏偏前端工程师的驿站

Chrome Extension in CLJS —— 搭建开发环境

1162
来自专栏张伟博客

windows7 下,在CMD命令模式下,如何添加永久路由?

双网卡之间互相访问原理其实很简单,互相设置对方的IP为自己的这张网卡的网关就足够了。为了让机器重启动后依然有效,在使用route 命令添加路由的时候加上 -p ...

7201
来自专栏喵了个咪的博客空间

Otter-入门篇2(Manager安装配置)

Otter-入门篇2(Manager安装配置) ? 前言 上一节已经简单介绍了Otter的基本信息,本节我们就来开准备搭建一个我们自己的Otter环境,因为一个...

35011
来自专栏小俊博客

DNSmasq详细解析及详细配置

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。...

7.4K2
来自专栏大魏分享(微信公众号:david-share)

对,俺差的是安全! | 从开发角度看应用架构18

在Gartner定义的“第三平台”盛行的年代,html5大行其道。所以http方式访问的应用很多。因此,谈到应用的安全,我们先要了解http的几种认证方式。

831

扫码关注云+社区