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 状态监控。

相关推荐
安科士andxe7 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
小白同学_C10 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖10 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
2601_9491465310 小时前
Shell语音通知接口使用指南:运维自动化中的语音告警集成方案
运维·自动化
儒雅的晴天10 小时前
大模型幻觉问题
运维·服务器
Gofarlic_OMS11 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
通信大师11 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
dixiuapp11 小时前
智能工单系统如何选,实现自动化与预测性维护
运维·自动化
不做无法实现的梦~11 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
Elastic 中国社区官方博客11 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索