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