Linux 中的 dig 命令及有用示例

2023-10-27

dig 代表 Domain Information Groper,是一个用于收集域名服务器信息的命令行网络工具。 dig 命令是另一个强大的工具,类似于nslookup用于诊断 dns 相关问题。

我们可以使用 dig 命令查询各种 dns 服务器来获取地址记录、CNAME、TXT、邮件交换记录等记录……我还发现了一个有用的网站showmydns.net从全球多个地点搜索 DNS 记录。

本指南向您介绍如何使用 Linuxdig带有实际示例的命令行实用程序。

Linux 中的 dig 命令

在大多数 Unix/Linux 操作系统的默认存储库中都可以使用 dig 实用程序。在基于 Debian 的系统上,可以使用 dig 命令dnsutils包裹。基于 Redhat 的系统 dig 命令可在bind-utilsrpm 包。

Syntax:

基本且常用的 dig 命令语法如下所示:


dig [@server] name [type]
  

挖掘版本:

将 -v 选项与 dig 命令一起使用可显示系统上的 dig 版本。

dig -v 

DiG 9.11.3-1ubuntu1.13-Ubuntu

Dig 命令行选项和示例

以下是常用的命令行选项和 dig 命令的示例。

1. 基本挖掘命令

基本的 dig 命令接受域名作为命令行参数并打印地址记录。

dig tecadmin.net 

Output:


; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> tecadmin.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22998
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;tecadmin.net.                  IN      A

;; ANSWER SECTION:
tecadmin.net.           257     IN      A       172.67.134.5
tecadmin.net.           257     IN      A       104.28.16.96
tecadmin.net.           257     IN      A       104.28.17.96

;; Query time: 35 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Dec 24 11:36:06 IST 2020
;; MSG SIZE  rcvd: 89
  

结果中答案部分:包含您所请求的主要信息。您可以忽略输出的其他部分,其中包含有关您所做查询的其他详细信息。

2. 查询特定DNS服务器

默认 dig 命令查询系统上配置的 dns 服务器。例如,Linux 系统在 /etc/resolv.conf 中保留默认的 DNS 条目。

您可以通过将 DNS 服务器作为命令行参数传递来覆盖要查询的默认 DNS。 DNS IP 必须以 @ 符号开头。

dig @8.8.8.8 tecadmin.net 

3. 打印简答

Use +short 以简短形式打印结果的命令行选项。这对于 shell 脚本和其他自动化任务基本上很有用。

dig tecadmin.net +short 

Output:
172.67.134.5
104.28.16.96
104.28.17.96

4. 打印详细但具体的结果

Use +noall with +answer 打印详细但具体的信息。这将仅打印答案部分,其中包括更多详细信息。

dig tecadmin.net +noall +answer

Output:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> tecadmin.net +noall +answer
;; global options: +cmd
tecadmin.net.           51      IN      A       172.67.134.5
tecadmin.net.           51      IN      A       104.28.17.96
tecadmin.net.           51      IN      A       104.28.16.96

您还可以指定+nocmddig 命令后的选项仅打印更具体的答案部分。

dig +nocmd tecadmin.net  +noall +answer

Output:
tecadmin.net.           284     IN      A       104.28.16.96
tecadmin.net.           284     IN      A       104.28.17.96
tecadmin.net.           284     IN      A       172.67.134.5

如何使用 dig 命令搜索特定记录

接下来,使用 dig 命令查询具体的 DNS 记录。

  1. Query Address (A) Record - A DNS Address (A) records is used to bind a domain name to an IP address. In simple worlds, when a user access a website, this records tells system the IP address of server hosting that website.
    dig +nocmd tecadmin.net A +noall +answer
    
    Output:
    tecadmin.net.           129     IN      A       104.28.16.96
    tecadmin.net.           129     IN      A       104.28.17.96
    tecadmin.net.           129     IN      A       172.67.134.5
    
  2. Query NS Record - Use the NS option to get a list of authoritative DNS servers for a domain name.
    dig +nocmd tecadmin.net NS +noall +answer 
    
    Output:
    tecadmin.net.       21599   IN      NS      alec.ns.cloudflare.com.
    tecadmin.net.       21599   IN      NS      athena.ns.cloudflare.com.
    
  3. Query MX Record - A MX record (mail exchanger) is used to specify the mail server responsible for accepting email messages on behalf of a domain name.
    dig +nocmd tecadmin.net MX +noall +answer 
    
    Output:
    tecadmin.net.      299     IN  MX  0 dc-75c7d428c907.tecadmin.net.
    
  4. Query TXT Record - A TXT record is multi purpose record used for associating arbitary text information with a domain name. Generally, we use this record for domain ownership verification, email security records like SPF, DKIM, and DMARC etc.
    dig +nocmd tecadmin.net TXT +noall +answer 
    
    Output:
    tecadmin.net.     299     IN      TXT     "google-site-verification="
    tecadmin.net.     299     IN      TXT     "v=spf1 include:spf.mandrillapp.com ?all"
    
  5. 查询所有记录

    您还可以使用选项ALL获取某个域的所有 dns 记录。

    dig +nocmd tecadmin.net ALL +noall +answer 
    

将选项设置为默认值

在上面的教程中,您使用了多个命令行选项来自定义结果,例如+nocmd, +noall, +answer等等。但是你每次都必须在命令行上写选项。

您还可以在主目录中创建一个 .digrc 文件,以便在每次进行 dig 查询时自动应用。

cat  ~/.digrc 

+nocmd +noall +answer

下次运行 dig 时将默认使用上面指定的选项。

dig tecadmin.net 

Output:


tecadmin.net.           104     IN      A       104.28.16.96
tecadmin.net.           104     IN      A       172.67.134.5
tecadmin.net.           104     IN      A       104.28.17.96
  

结论

在本教程中,您通过各种选项和示例了解了 dig 命令的用法。您还可以尝试网络应用程序,例如showmydns.net查询全球多个地点的 DNS 记录。这对于在添加或更新 dns 记录时检查 dns 传播很有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的 dig 命令及有用示例 的相关文章

  • node.js -- 同步执行命令并获取结果

    我试图在 node js 中同步执行 child process 是的 我知道这很糟糕 我有充分的理由 并检索 stdout 上的任何输出 但我不太清楚如何 我发现这个帖子 Node js同步执行系统命令 https stackoverfl
  • 通过 Java 执行 ADS 相关的 Powershell 命令不起作用,使用 2 种不同的方式时会出现 2 种不同的错误

    我一直在尝试通过 java 在 powershell 会话中执行一组命令 但还没有成功 我的目标是在 AD 中搜索域为 domain com 的计算机对象 我从一个命令开始 不幸的是 以下命令在我的 powershell 提示符下成功运行
  • 如何在 C 中使用 write() 函数写入整数? [复制]

    这个问题在这里已经有答案了 我是 C 菜鸟 正在尝试使用write 显示整数的函数 这是我的代码 int n 7 write 1 n 4 我想展示7 但是当我设置时程序没有显示任何内容或其他奇怪的字符n到一个大数字 我缺少什么 类似的对象i
  • 如何在网页中动态显示 ping 输出?

    作为诊断页面的一部分 我希望用户能够运行 ping 即一个普通的 shell 命令 将 ICMP ECHO REQUST 发送到某个 IP 并在浏览器的 div 中动态显示结果 后端是 Ruby Rails 我已经在服务器端运行该命令并读取
  • 如何从控制器运行 symfony 2 run 命令

    我想知道我怎样才能跑交响乐2来自浏览器查询或控制器的命令 这是因为我没有任何可能托管来运行它 并且每个 cron 作业都是由管理员设置的 我什至没有启用exec 因此 当我想测试它时 我必须将命令中的所有内容复制到某个测试控制器 这不是最佳
  • PHP shell_exec() 与 exec()

    我正在努力理解之间的区别shell exec and exec 我一直用exec 执行服务器端命令 我什么时候使用shell exec Is shell exec 只是一个简写exec 似乎参数更少 效果是一样的 shell exec以字符
  • mifare 卡身份验证错误“6982:安全状态未满足”

    我有 pc sc 读卡器和非接触式卡 mifare 卡 我可以连接到该卡 并且我也成功执行 getdate 命令 但是当我想进行身份验证时 我看到此错误 6982 安全状态不满足 我已经尝试过这 3 个不同的身份验证命令 但所有这些命令都出
  • IN 语句中的数据上下文 ExecuteCommand 参数

    运行自定义的最佳方式是什么sql声明使用IN从 C LinQ 到 sql 数据上下文 我努力了 db ExecuteCommand UPDATE tblCard SET used 1 WHERE id IN 0 AND customer i
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 使用隧道而不是冒泡的路由命令

    我有一个自定义控件 MyControl 公开自定义命令 我想要家长Window能够调用此命令 以及所有MyControls应该对此做出反应 我已将命令添加到MyControl s CommandBindings集合 它还提供了CanExec
  • 使用搜索词打开 Windows 资源管理器查找窗格

    我正在尝试创建一个应用程序 该应用程序打开 Windows 资源管理器搜索功能并搜索输入了指定术语的文件 文件夹 我已经有了 Windows Vista SP1 使用 Windows 索引服务引入的 search query 命令的代码 这
  • WPF:绑定到 ControlTemplate 中的命令

    我正在尝试向自定义 ListView MyListView 添加一个按钮 该按钮会触发 MyListView 中定义的命令 MyCustomCommand 我通过应用 ControlTemplate 添加了按钮 和标题文本 问题是我还没有找
  • 命令绑定到 ContextMenu(在 ListBox 中的 ListBoxItem 上)不起作用[重复]

    这个问题在这里已经有答案了 在 WPF 中 借助 MVVM 光 有一个Class 由一些学生组成 以及Class持有一些Students 右键单击一个学生的名字 然后会显示一个MessageBox 这样就可以了 类详细信息视图 xaml
  • Excel 2007 问题:预编程按钮突然不起作用[重复]

    这个问题在这里已经有答案了 今天 出乎意料的是 我工作的公司使用的表格的按钮突然出现了问题 奇怪的是 它只影响我确信是 ActiveX 命令按钮的部分 而不会导致其他形状或下拉菜单出现问题 问题 按钮没有反应 当您单击时 他们不会访问代码
  • 从批处理文件中获取java版本

    如何获取java版本并希望从批处理文件中获取java版本中的 6 我尝试了下面的脚本 但没有成功 REM check java exists using JAVA HOME system variable if JAVA HOME ECHO
  • 从命令行创建 Excel 文件

    有什么方法可以从命令行创建新的 Excel 文件吗 如果您需要创建的 Excel 文件始终相同 您可以手动创建模板 然后随意创建新文件 例如 copy template xlsx myNewSpreadsheet xlsx 如果您需要创建内
  • SqlCommand 参数与 String.Format [重复]

    这个问题在这里已经有答案了 我一直在互联网上搜索 但似乎找不到任何可以解释我的问题的内容 可能是我没有使用正确的搜索字符串 所以我在这里发帖希望有人可以帮助我有了这个 我的程序是使用Visual Studio 2010用C 编写的 我注意到
  • Android 对 Runtime.getRuntime().exec() 的权限

    我有一个应用程序在清单上具有以下权限 我的应用程序在 Android JB 4 1 2 上运行 UPDATE 我尝试在 JB 上运行该应用程序 但它不起作用 它适用于早期的 API 版本

随机推荐

  • Spark集群运行问题

    spark输出太多warning messages WARN Executor 2 block locks were not released by TID Lock release errors occur frequently in e
  • 阿里云对象存储oss费用明细

    https www aliyun com price product spm a311a 7996332 0 0 137630803P2qTh oss detail 最终决定 阿里云割韭菜 弃用选择业界其他便宜的 第二年阿里云只给你个续费
  • java操作svn--部分方法

    package com svnutil import java io File import java text DateFormat import java util ArrayList import java util Collecti
  • Fedora12 编译s3c2416 U-Boot1.3.4的Makefile和头文件

    复制Makefile到 和smdk2416 h到include configs 执行 make distclean make smdk2416 config make C Copyright 2007 2008 Jong pill Lee
  • matlab练习程序(Canny边缘检测)

    我可没直接调用系统函数 要是那样就太水了 其实我的matlab代码很容易就能翻译成c c 的 canny边缘检测一共四个部分 1 对原图像高斯平滑 2 对高斯平滑后的图像进行sobel边缘检测 这里需要求横的和竖的还有联合的 所以一共三个需
  • C语言链表——增删改查

    目录 一 链表的概念 1 1 什么是链表 二 链表和数组的区别 2 1 链表和数组的优缺点 2 1 1 数组的优缺点 2 1 2 链表的优缺点 三 链表的静态添加和动态遍历 四 统计链表节点个数及链表查找 五 链表插入 5 1 链表从指定节
  • 【程序设计训练】2-12 绩点计算

    问题描述 学校对本科生的成绩施行绩点制 GPA 将学生的实际考分根据不同学科的不同学分按一定的公式进行计算 规定如下 实际成绩 绩点 90 100 4 0 85 89 3 7 82 84 3 3 78 81 3 0 75 77 2 7 72
  • MIT教授Tegmark:GPT-4敲响警钟,百年后人类何去何从丨智源大会嘉宾风采

    导读 一封呼吁暂停大模型研究6个月的公开信让一家名为未来生命研究所 Future of Life Institute 简称 FLI 站上了风口浪尖 这家研究所的联合创始人Max Tegmark是来自麻省理工学院的物理学家和人工智能研究员 生
  • 对象存储OSS-iOS

    文章目录 对象存储OSS iOS 一 基础解读 1 相关名词 2 OSS的上传和下载 3 基于SDK快速开始 4 基于OSS的移动开发 4 1 整体流程 4 1 1 客户端申请STS凭证 4 1 2 AppServer请求AssumeRol
  • 2022华数杯B题论文思路分析+完整代码(水下机器人组装计划)(一二问答案接出来和标准答案一样)(问题三四逼近正确答案)(完整论文,代码可直接跑)

    写在前面 学校最近搞数学建模竞赛培训 以2022华数杯B题作为训练题目 在查资料过程中发现网上没有哪一篇论文解出了正确答案 而我们组利用Lingo软件准确的解出了正确答案 但是在第三问时 由于决策的变量激增 基于Lingo的模型已经无法解出
  • 五大板块(2)—— 指针

    参考 五大板块 2 指针 作者 丶PURSUING 发布时间 2021 03 18 16 01 22 网址 https blog csdn net weixin 44742824 article details 114981482 本文为学
  • TypeError: parse() got an unexpected keyword argument 'transport_encoding'

    pip install XXX 出现问题 TypeError parse got an unexpected keyword argument transport encoding 解决方法 conda install pip
  • 如何在 Git 中创建空分支(无父分支)

    Git 是一个强大的版本控制系统 使开发人员能够跟踪其代码库中的更改并有效地管理其项目 Git 的关键功能之一是分支 它允许开发人员创建代码库的单独版本并同时处理它们 在本文中 我们将了解如何使用 Git 创建空分支 orphan opti
  • 如何在 Ubuntu 18.04 上安装和配置 VNC 服务器

    VNC 代表 虚拟网络计算 是一组用于远程共享桌面系统的协议 有许多软件可用于远程访问基于 Linux 的桌面 包括 TigerVNC TightVNC Vino vnc4server 等等 TigerVNC 是一款免费 开源 高性能的 V
  • 如何在 Shell 脚本中为用户分配密码

    Command 回声 passwd stdin 例子 使用以下命令在 shell 脚本中更改用户 jack 的密码 例如我们使用字符串密码作为密码 echo password passwd stdin jack 分配用户输入密码 使用以下命
  • 如何在 Ubuntu 20.04 上安装 Google Cloud SDK

    谷歌云SDK 软件开发套件 提供了一组用于管理 Google Cloud Platform GCP 上托管的资源的工具 SDK 提供 gcloud gsutil 和 nd bq 命令 能够通过终端访问 Google Cloud Cloud
  • 如何在 Fedora 上安装 Apache Solr

    Apache Solr 是一个基于名为 Lucene 的 Java 库构建的开源搜索平台 Solr 是一个流行的网站搜索平台 因为它可以索引和搜索多个网站 并根据搜索查询的分类返回相关内容的推荐 本指南将引导您完成在 Fedora 系统上安
  • 如何在Linux中使用zip命令

    The zipLinux 中的命令是一个实用程序 用于将一组文件打包到 zip 存档中 zip 命令还可以用于压缩文件 从而减少它们在计算机硬盘上占用的空间 此外 zip命令可用于加密文件 使未经授权的用户更难以访问zip存档的内容 要解压
  • 如何在 Django 中设置环境变量

    Django 是基于 Python 构建的强大 Web 框架 提供开箱即用的强大功能 它最重要但有时被忽视的功能之一是它能够使用环境变量处理配置 环境变量提供了一种在代码库之外设置配置的方法 从而提供更好的安全性和灵活性 本文旨在简化 Dj
  • Linux 中的 dig 命令及有用示例

    dig 代表 Domain Information Groper 是一个用于收集域名服务器信息的命令行网络工具 dig 命令是另一个强大的工具 类似于nslookup用于诊断 dns 相关问题 我们可以使用 dig 命令查询各种 dns 服