Linux 实例 | dig DNS 查询工具全攻略:安装、场景、实操详解

域名特惠

引言

dig(Domain Information Groper)是Linux 系统中最强大的 DNS 查询工具,比nslookup更灵活、输出更详细,是运维排查 DNS 问题、验证域名解析的必备利器。本文以火山引擎 ECS 实例(CentOS 7/8、Ubuntu 20/22)为例,从安装→场景→实操全流程讲解,帮你快速掌握 dig 的核心用法。

一、前置准备

火山引擎 ECS 实例:已创建并运行(需 root 或 sudo 权限)

SSH 工具:Putty、Xshell、MobaXterm 等

网络要求:实例能访问公网(用于安装软件 + DNS 查询)

二、安装 dig(火山引擎实例实操)

dig 并非 Linux 默认工具,需安装对应软件包:

CentOS/RHEL:依赖bind-utils包

Ubuntu/Debian:依赖dnsutils包

2.1 CentOS 7/8 安装

1. 登录火山引擎实例(替换为你的实例IP)

ssh root@180.xx.xx.xx

2. 安装bind-utils(包含dig工具)

yum install bind-utils -y

3. 验证安装(查看版本)

dig -v

输出类似:DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5

2.2 Ubuntu 20.04/22.04 安装

1. 登录实例(Ubuntu默认用户为ubuntu)

ssh ubuntu@180.xx.xx.xx

2. 更新源并安装dnsutils

sudo apt update && sudo apt install dnsutils -y

3. 验证

dig -v

输出类似:DiG 9.16.1-Ubuntu

三、核心使用场景

dig 解决运维中DNS 解析验证、故障排查、域名管理的核心需求,常见场景:

场景 用途

域名→IP 解析 验证域名是否能正确解析到目标 IP

反向解析 验证 IP 是否绑定对应域名(如火山引擎实例公网 IP)

查询 DNS 记录类型 查看 A(IP)、MX(邮件服务器)、CNAME(别名)等记录

跟踪 DNS 查询过程 定位解析失败的中间环节(如递归 / 迭代查询)

测试特定 DNS 服务器 验证第三方 DNS(如 8.8.8.8)的解析结果

批量域名查询 脚本化批量验证多个域名的解析状态

四、常用命令 & 实例(火山引擎实例实操)

dig 的核心语法:dig @DNS服务器 域名 记录类型 参数

以下是贴合火山引擎场景的常用命令:

4.1 基础:域名→IP 解析(A 记录)

场景:验证火山引擎官网www.volcengine.com的解析 IP

基础查询(默认用实例的DNS服务器)

dig www.volcengine.com A

简化输出(只显示IP)

dig www.volcengine.com A +short

输出:180.101.50.242

4.2 反向解析(IP→域名)

场景:验证火山引擎实例公网 IP180.xx.xx.xx是否绑定域名

dig -x 180.xx.xx.xx +short

若绑定域名:输出域名;若未绑定:无输出

4.3 查询 MX 记录(邮件服务器)

场景:查看火山引擎域名的邮件服务器配置

dig volcengine.com MX +short

输出:10 mx1.volcengine.com. 20 mx2.volcengine.com.

4.4 跟踪 DNS 查询过程(+trace)

场景:定位域名解析失败的中间环节

dig www.baidu.com +trace

输出会显示:根DNS→顶级域→权威DNS的查询过程

4.5 指定第三方 DNS 服务器

场景:验证火山引擎实例用谷歌 DNS(8.8.8.8)解析的结果

dig @8.8.8.8 www.aliyun.com A +short

对比实例默认DNS的解析结果,排查DNS污染

4.6 批量查询脚本(可选)

场景:批量验证 10 个域名的解析状态

创建批量查询脚本

vim dig_batch.sh

写入内容:

#!/bin/bash

批量域名列表

DOMAINS=("www.volcengine.com" "www.baidu.com" "www.aliyun.com" "www.tencent.com")

for domain in D O M A I N S @ ; d o i p = {DOMAINS@}; do ip= DOMAINS@;doip=(dig d o m a i n A + s h o r t ) e c h o " 域名: domain A +short) echo "域名: domainA+short)echo"域名:domain → IP:$ip"

done

执行脚本:

chmod +x dig_batch.sh && ./dig_batch.sh

五、配置优化(可选)

5.1 设置实例默认 DNS 服务器

火山引擎实例默认 DNS 为10.0.0.1,若需修改(如使用阿里云 DNS):

CentOS编辑resolv.conf

vim /etc/resolv.conf

添加:

nameserver 223.5.5.5 # 阿里云DNS

nameserver 10.0.0.1 # 火山引擎默认DNS

重启网络生效(CentOS 7)

systemctl restart network

5.2 简化常用命令(别名)

在~/.bashrc中添加别名,减少重复输入:

vim ~/.bashrc

添加:

alias diga='dig A +short' # 简化A记录查询

alias digx='dig -x +short' # 简化反向解析

生效配置

source ~/.bashrc

使用别名:diga www.volcengine.com

六、常见问题排查

问题 解决方法

dig 命令不存在 1. 检查是否安装对应包(CentOS:bind-utils;Ubuntu:dnsutils);2. 重新安装

查询超时 1. 实例无公网(火山引擎控制台→实例→网卡→分配公网 IP);2. 防火墙拦截 DNS 端口(53)

反向解析失败 1. IP 未绑定域名(火山引擎→域名服务→解析记录);2. 未配置反向解析

输出乱码 检查 SSH 客户端字符集(如 UTF-8)

七、总结

dig是火山引擎 Linux 实例运维的DNS 必备工具:

灵活支持各种 DNS 记录查询;

详细输出帮助定位解析故障;

脚本化批量查询提升效率。

若需更深入分析,可结合火山引擎的云监控(控制台→云监控→DNS 监控),实现全链路 DNS 状态监控。

相关推荐
苏宸啊5 分钟前
linux网络编程udp服务器和客户端代码编写(echo版本和字典版本)
linux·网络
~|Bernard|19 分钟前
Linux 定时任务(Cron)完整教程
linux·运维·服务器
小周学学学32 分钟前
vmware-horizon第一章:horizon服务器安装
运维·服务器·vmware
小雪崩1 小时前
嵌入式学习 day25:哈希表及排序与查找
linux·c语言·数据结构·学习·排序算法
gsls2008081 小时前
Penpot Docker 部署与 MCP 服务配置文档
运维·docker·容器·原型·penpot
九硕智慧建筑一体化厂家1 小时前
直流智能照明|全场景节能升级!打造安全低碳的智慧建筑光环境
运维·笔记·安全·智慧城市
蓝速科技2 小时前
蓝速科技丨数智人终端选型指南:后台运维如何决定长期运营成本
运维·科技
奇树谦2 小时前
HDD 为什么适合顺序大文件读写:从 RAID 5 到 RAID 50 的原理与性能分析
linux·运维·网络
hi_ro_a2 小时前
Linux基础开发工具详解
linux·运维·服务器
嵌入式阿蔡2 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库