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

相关推荐
Mr-Apple6 小时前
系统找不到指定的文件-CreateInstance/CreateVm/HCS/ERROR_FILE_NOT_FOUND
linux·windows·ubuntu·wsl
yindeshuiketang6 小时前
企业FDE架构方法论到实战指南从想法到商业变现:需求·设计·技术·测试·运维·交付·变现-小红书&抖音 AI马教授 职场启航宝
运维·人工智能·架构
网硕互联的小客服6 小时前
没有公网IP,如何让外网访问内网服务器?
运维·服务器
布裘6 小时前
【银河麒麟】服务器系统开机黑屏故障排查与修复
linux·运维·服务器·银河麒麟·无法启动
凌风的跨境分享6 小时前
Temu店群运维提效:定时策略自动化任务全场景实操指南
大数据·运维·前端·人工智能·架构·自动化
Zenova EdgeOS6 小时前
Linux iotop:工业边缘 I/O 高级分析实战
linux·运维·服务器
Black蜡笔小新6 小时前
运维提效!视频汇聚平台EasyCVR视频质量诊断,掉线花屏自动预警
运维·安全·音视频
又見山6 小时前
Codex 实战:用 AI 写运维脚本
运维·人工智能
Elastic 中国社区官方博客6 小时前
Elasticsearch 向量数据库:几分钟内完成部署,以经济高效的方式扩展至数千亿规模
大数据·运维·数据库·elasticsearch·搜索引擎·ai·全文检索
新兴AI民工7 小时前
【Linux内核三十九】进程管理模块:CFS负载均衡(四):find_busiest_group决策矩阵与calculate_imbalance
linux