dig

dig(Domain Information Groper)是一个用于 DNS 查询的命令行工具,广泛用于查看域名系统的相关信息。

基本用法

# 查询域名的 A 记录(IPv4 地址):
dig example.com # 查询指定 DNS 服务器的 A 记录:
dig @dns-server-ip example.com # 指定查询记录类型(例如,查询 MX 记录):
dig example.com MX # 递归查询:
dig +recurse example.com # 反向 DNS 查找,也称为 PTR 记录查询(查询 IP 对应的域名):
dig -x 192.168.1.1

输出控制

# 只显示回答部分(不显示头部和其他信息):
dig +short example.com # 以人类可读的格式显示结果:
dig +noall +answer example.com

其他选项

# 指定端口号:
dig example.com -p 53 # 显示更详细的信息(调试模式):
dig +trace example.com # 显示详细的通信信息:
dig +stats example.com

使用示例

$ dig @114.114.114.114 registry-1.docker.io

; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> @114.114.114.114 registry-1.docker.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17709
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;registry-1.docker.io. IN A ;; ANSWER SECTION:
registry-1.docker.io. 54 IN A 54.242.59.189
registry-1.docker.io. 54 IN A 3.215.51.67
registry-1.docker.io. 54 IN A 54.83.42.45 ;; Query time: 16 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Mon Aug 29 14:20:08 CST 2022
;; MSG SIZE rcvd: 97
  1. 命令头部信息:

    ; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.2 <<>> @114.114.114.114 registry-1.docker.io
    • DiG 9.9.4-RedHat-9.9.4-38.el7_3.2:指明了使用的 dig 版本。
    • @114.114.114.114:指定了查询的 DNS 服务器地址为 114.114.114.114。
    • registry-1.docker.io:指定了查询的域名。
  2. 全局选项和服务器信息:

    ; (1 server found)
    ;; global options: +cmd
    • (1 server found):表示找到了 1 个 DNS 服务器。
    • global options: +cmd:指明使用了全局选项 +cmd,该选项表示显示执行命令的指令。
  3. 回答头部信息:

    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17709
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    • opcode: QUERY:表示查询操作。
    • status: NOERROR:表示查询状态为没有错误。
    • id: 17709:表示查询的唯一标识符。
    • flags: qr rd ra:表示一般查询、递归查询、和响应可用的标志。
    • QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1:表示查询包含 1 个问题、3 个回答,没有权威和附加信息。
  4. OPT PSEUDOSECTION(可选部分):

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    • EDNS: version: 0, flags:; udp: 512:表示使用 EDNS(Extension Mechanisms for DNS),版本为 0,无特殊标志,最大传输单元(udp)为 512 字节。
  5. 问题部分:

    ;; QUESTION SECTION:
    ;registry-1.docker.io. IN A
    • registry-1.docker.io. IN A:表示查询了 registry-1.docker.io 的A记录。
  6. 回答部分:

    ;; ANSWER SECTION:
    registry-1.docker.io. 54 IN A 54.242.59.189
    registry-1.docker.io. 54 IN A 3.215.51.67
    registry-1.docker.io. 54 IN A 54.83.42.45
    • registry-1.docker.io.:表示回答的域名。
    • 54 IN A:表示记录的生存时间(TTL)为 54 秒,记录类型为 A,即 IPv4 地址。
    • 54.242.59.1893.215.51.6754.83.42.45:表示 registry-1.docker.io 的 IPv4 地址。
  7. 其他信息:

    ;; Query time: 16 msec
    ;; SERVER: 114.114.114.114#53(114.114.114.114)
    ;; WHEN: Mon Aug 29 14:20:08 CST 2022
    ;; MSG SIZE rcvd: 97
    • Query time: 16 msec:表示查询耗时 16 毫秒。
    • SERVER: 114.114.114.114#53(114.114.114.114):表示使用的 DNS 服务器及其地址。
    • WHEN: Mon Aug 29 14:20:08 CST 2022:表示查询的时间。
    • MSG SIZE rcvd: 97:表示接收到的消息大小为 97 字节。

什么是 A 记录

A记录(Address Record)是 DNS(Domain Name System)中的一种资源记录类型,用于将主机名映射到 IPv4 地址。每个 A 记录包含一个主机名和对应的 IPv4 地址。当你在浏览器中输入一个域名(比如 www.example.com)时,系统首先会向 DNS 服务器发送一个 A 记录查询,以获取与该域名关联的 IPv4 地址。

例如,以下是一个 A 记录的简单示例:

example.com.    IN    A    192.168.1.1
  • example.com. 是主机名。
  • IN 表示 Internet。
  • A 表示 A 记录类型。
  • 192.168.1.1 是与主机名相关联的 IPv4 地址。

当系统收到类似 www.example.com 的请求时,它会查询 DNS 服务器以获取相应的 A 记录,然后将解析得到的 IPv4 地址用于建立连接。

需要注意的是,A 记录只能映射到 IPv4 地址。对于 IPv6 地址的映射,可以使用 AAAA 记录。


example.com.    IN    A    192.168.1.1
  1. 第二列的内容是IN,表示 Internet。除了IN外,第二列还可能是其他一些区域(Zone)或者特定网络环境的标识,例如:
  • CH:表示 CHAOS 类。
  • HS:表示 Hesiod 类。
  • 其他一些特定用途的标识。

但在实际应用中,IN 是最常见的,也是默认的区域标识,用于指定 Internet。

  1. 第三列的内容是 A,表示 A 记录类型。除了 A 外,DNS 还支持其他类型的记录,每种记录类型都有特定的用途。一些常见的 DNS 记录类型包括:
  • AAAA:IPv6 地址记录,类似于 A 记录,但用于映射主机名到 IPv6 地址。
  • CNAME:规范名称记录,用于创建别名,将一个主机名映射到另一个主机名。
  • MX:邮件交换记录,指定邮件服务器的优先级和域名。
  • NS:域名服务器记录,指定域名的权威 DNS 服务器。
  • PTR:指针记录,用于反向 DNS 查找,将 IP 地址映射到主机名。
  • SOA:起始授权机构记录,包含有关域的重要信息,如域的管理者、域的刷新时间等。

在查询结果中,A记录指定了主机名与 IPv4 地址之间的映射关系。不同的记录类型用于支持不同的网络服务和功能。

kdig

kdig 相比 dig,增加了 DoH、DoT、DoQ 等功能。

安装:

brew install knot

add-apt-repository ppa:cz.nic-labs/knot-dns-latest
apt update
apt install knot-dnsutils

例:

kdig @dns.google example.com +tls
kdig @dns.google example.com +https
kdig @dns.google example.com +quic

man kdig

dig 使用的更多相关文章

  1. 使用dig查询dns解析

    原文地址:使用dig查询dns解析 作者:chenwenming 一般来说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手. 如果是在debian下的 ...

  2. dig 常用的域名查询工具

    dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法: dig (选项) (参数) 选项: @<服务器地址>: 指定进行域名解析的域名服务器: -b: 当主机具有多个 ...

  3. dig的用法

    Dig是linux中的域名解析工具,功能比nslookup强很多,使用也很方便,不用象nslookup总是set不停. Dig是domain information groper的缩写,知道了来源想必 ...

  4. host,nslookup,dig 命令安装

    host,nslookup,dig依赖bind包,所以先看一下系统有没有bind包 命令如下:rpm -qa |grep bind 如果没有或者版本太低请升级安装 命令是:yum install bi ...

  5. linux命令--dig

    dig,和nslookup作用有些类似,都是DNS查询工具,但是却比nslookup强大 dig,其实是一个缩写,即Domain Information Groper. [我想用google-DNS来 ...

  6. Dig out deleted chat messages of App Skype

    Last month Candy was arrested on suspicion of having doing online porn webcam shows, but Candy refus ...

  7. aix DNS 配置以及网络命令traceroute和nslookup 和 dig 命令

    DNS 域名系统 (DNS) 服务器将 IP 地址解释为其他计算机或网站的域名和地址.如果没有 DNS,您需要在 Web 浏览器中输入 IP 地址.例如,如果您未访问 DNS 并希望查看 IBM 的网 ...

  8. dig与dns基本理论——解析和缓存

    DNS(Domain Name System,域名系统)也许是我们在网络中最常用到的服务,它把容易记住的域名,如 www.google.com 翻译成人类不易记住的IP地址,如 173.194.127 ...

  9. dig理解DNS的解析过程 - 阿权的书房

    关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...

  10. dig 命令详解(转载) - 阿权的书房

    在 unix 和 linux 下,建议大家使用 dig 命令来代替 nslookup. dig 命令的功能比 nslookup 强大很多,不像 nslookkup 还得 set 来 set 去的,怪麻 ...

随机推荐

  1. 【论文阅读】IROS2021: PILOT: Efficient Planning by Imitation Learning and Optimisation for Safe Autonomous Driving

    参考与前言 完整题目:PILOT: Efficient Planning by Imitation Learning and Optimisation for Safe Autonomous Driv ...

  2. 2.上传hdfs系统:将logs目录下的日志文件每隔十分钟上传一次 要求:上传后的文件名修为:2017111513xx.log_copy

    先在hdfs系统创建文件夹logshadoop fs -mkdir /logs 编辑shell脚本 filemv.sh #!/bin/bashPATH=/usr/local/bin:/bin:/usr ...

  3. 为什么js中要用new?

    你new的不是对象,是构造函数,new + 构造函数生成对象.如果单就调用方法而言,确实不必用new.new一般用在"js使用原型和this关键字实现面向对象"的过程中. 大多数情 ...

  4. yb课堂 实战之路由拦截和订单模块 《四十二》

    前置守护 路由拦截功能开发 文档:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html router里面配置需要登陆的路由 ...

  5. mac 安装mysql5.7.28附安装包

    mac 安装mysql教程 下载mysql安装包 百度云盘地址: https://pan.baidu.com/s/1qbF8vtON2sLzNetXCITnSQ 运行安装包 一直下一步即可 配置环境变 ...

  6. Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/channel/EventLoopGroup

    最近在学习dubbo,跟着教程做,但是运行时报错,需要添加netty依赖 <dependency> <groupId>io.netty</groupId> < ...

  7. springboot项目分层

    springboot项目分层 一般的项目模块中都有DAO.Entity.Service.Controller层. Entity层:实体层 数据库在项目中的类 Entity层是实体层,也就是所谓的mod ...

  8. Swift开发基础06-闭包

    Swift的闭包(Closures)是一种将功能块和上下文整合并演示在代码中的一种手段.闭包可以捕获并存储其上下文中的变量和常量.与普遍存在于其他语言的匿名函数(如Python的lambda.Java ...

  9. SELECT *问题

    1.mysql拿到一条命令,会去解析命令.优化查询,然后去存储引擎执行查找.SELECT * 语句取出表中的所有字段,会解析更多的 对象,字段,权限,属性相关,不论该字段的数据对调用的应用程序是否有用 ...

  10. webpack4.15.1 学习笔记(二) — 配置及开发环境构建

    目录 基本安装 配置文件 管理资源 管理输出 构建一个开发环境 使用 source map 选择一个开发工具 观察模式 webpack-dev-server webpack-dev-middlewar ...