查不到记录时应先检查status字段和server行;status为noerror且answer为空表示记录不存在,nxdomain表示域名未注册,servfail表示上游dns故障;server显示实际请求的dns服务器地址。

查不到记录?先看 status 字段和 SERVER 行
空 ANSWER SECTION 不代表失败,关键在 status 和 SERVER。常见三种情况:
— status: NOERROR + 空 ANSWER:记录确实不存在(比如查了未配置的子域名)
— status: NXDOMAIN:域名本身没注册或上级 DNS 明确否认
— status: SERVFAIL:上游 DNS 出问题,换服务器重试,例如加 @8.8.8.8SERVER: 后面显示的是你实际发请求的 DNS 地址,不是 /etc/resolv.conf 里写的第一个,而是最终被选中的那个
指定查询类型和目标 DNS 服务器的写法必须严格
dig 默认只查 A 记录,且走系统默认 DNS;不加参数查 www.example.com 等价于 dig www.example.com A,不会 fallback 到其他类型。
正确写法示例:
— 查 MX:用 dig example.com MX,不是 mail 或 email
— 直连指定 DNS:用 dig example.com @8.8.8.8,@ 必须紧挨 IP,中间不能有空格
— 错误顺序:dig example.com A @8.8.8.8 会被忽略后半部分,只生效第一个 @ 后的内容
— 小写 a 会报错或返回空,类型必须大写:A、MX、NS、TXT 等
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
+short 不等于“稳定取值”,脚本里慎用
+short 输出简洁,但有两个硬伤:
— 它会展开 CNAME 链,可能只返回别名而非最终 IP(例如查 www.github.com 可能只输出 github.com)
— 输出无序,多条结果顺序不保证,不适合直接管道进 head -1 或赋值给变量
真正适合自动化的方式是组合开关:
— dig example.com +noall +answer:只保留 ANSWER SECTION,结构清晰可 parse
— dig example.com +noall +answer +short:更简,但依然受 CNAME 展开影响
— 若需强制递归解析到 IP,得配合 +norecurse 自行处理 referral,一般调试才用
想验证最新配置?必须绕过递归链
本地没缓存,dig 是无状态命令;所谓“查不到新记录”,通常卡在中间某层 resolver(如 systemd-resolved、dnsmasq)或 ISP 缓存。
要验真实权威数据,两个可靠办法:
— 先查 NS:dig example.com NS,再挑一个权威服务器直查:dig @ns1.example.com www.example.com A
— 加 +norecurse 禁用递归(注意:不是所有 DNS 服务器都支持该 flag)
别信 systemctl restart systemd-resolved 能清掉所有缓存——它只清本地 resolver,不影响上游;真要快,就直连 NS










