DNS 查询工具
A / AAAA / CNAME / MX / TXT / NS / SOA / CAA 全记录 · Google / Cloudflare DoH 实时查询
A/AAAA/MX/NS/TXT/CNAME 多记录类型
A / AAAA / CNAME / MX / TXT / NS / SOA / CAA 全记录 · Google / Cloudflare DoH 实时查询
A:将域名解析到 IPv4 地址(最常见)。例 example.com → 93.184.216.34。
AAAA:将域名解析到 IPv6 地址(IPv6 普及后渐多)。
CNAME:别名记录,将域名指向另一个域名。注:根域名不能用 CNAME。
MX:邮件交换服务器记录,含优先级(低值优先)。
TXT:任意文本记录,常用于 SPF / DKIM / DMARC / Google 站长验证等。
NS:域名权威服务器(通常 2-4 个,多线路冗余)。
SOA:起始授权记录,含主服务器 / 管理员邮箱 / 序列号 / 过期时间。
CAA:限制哪些证书机构可以为域名颁发证书(如只允许 Let's Encrypt)。
了解工具定位 · 使用场景 · 对比优势
输入域名,查询 A(IPv4)、AAAA(IPv6)、MX(邮件交换)、NS(域名服务器)、TXT(文本记录)、CNAME(别名)六种 DNS 记录。网站运维排查解析故障、开发者配置域名指向、安全分析检测 DNS 劫持,即时获取结果。查询由后端服务器发起,不存储查询记录。
企业 IT 管理员收到员工反馈邮件被退信或误判为垃圾邮件。通过本工具查询域名的 MX 记录,确认邮件服务器地址是否与官方公布的 SPF 记录一致;同时查询 TXT 记录,检查是否存在伪造的 DKIM 签名或异常的 DMARC 策略,快速定位邮件投递故障原因。
运维人员将网站从旧服务器迁移到新 IP 后,需要确认 DNS 解析已全球生效。使用本工具分别查询 A 记录(IPv4)和 AAAA 记录(IPv6),对比新旧 IP 是否已切换;再查 CNAME 记录确认 CDN 别名指向正确,避免迁移后用户访问失败。
公司从自建邮件服务器迁移到企业邮箱(如腾讯企业邮),需验证 MX 记录是否指向新服务商。通过本工具查询 MX 记录的优先级和主机名,确认低优先级的旧服务器已移除,避免邮件仍被路由到废弃服务器导致丢失。
SEO 专员或站长在 Google Search Console、百度站长平台添加域名时,需通过 TXT 记录验证所有权。使用本工具查询当前 TXT 记录,确认平台提供的验证字符串已正确写入,无需等待 DNS 缓存刷新即可在工具中实时看到结果,加速站点验证流程。
前端开发人员配置了 Cloudflare 或阿里云 CDN 后,页面加载速度未改善。通过本工具查询 CNAME 记录,确认域名是否已正确解析到 CDN 提供的别名;再查 A 记录,看 IP 是否已从源服务器变为 CDN 边缘节点 IP,快速判断 CDN 是否生效。
域名从 Godaddy 转移到 Cloudflare 后,需确认 DNS 服务器已切换。使用本工具查询 NS 记录,列出当前权威 DNS 服务器列表,验证是否已移除旧服务商的 NS,并新增了新服务商的 NS,避免因 NS 记录不一致导致解析中断。
| 维度 | 本工具 (dns.tl654.com) | whatsmydns.net | 传统方法 (dig/nslookup) |
|---|---|---|---|
| 数据隐私 | DNS 查询在浏览器本地完成,域名不发送到服务器 | 域名提交到第三方服务器处理 | 查询结果仅在本地终端显示,不经过第三方服务 |
| 处理速度 | 1-2 秒内返回结果 | 2-5 秒(含页面加载与广告渲染) | 即时(毫秒级,取决于网络延迟) |
| 离线可用 | 不可用(需联网加载页面) | 不可用(需联网访问网站) | 可用(命令行工具已安装至本地) |
| 批量查询 | 不支持(单次查询一个域名) | 不支持(单次查询一个域名) | 支持(通过脚本批量处理多个域名) |
| 结果可读性 | 结构化展示,分类清晰 | 可视化展示,含地理位置信息 | 原始输出,需手动解析 |
| 操作门槛 | 零门槛,打开网页即可使用 | 零门槛,打开网页即可使用 | 需熟悉命令行及参数(如 dig +short) |
| 平台依赖 | 依赖浏览器(Chrome/Firefox/Safari 等) | 依赖浏览器 | 依赖操作系统(Windows/macOS/Linux) |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| example.com | A: 93.184.216.34 AAAA: 2606:2800:220:1:248:1893:25c8:1946 MX: 10 mx.example.com NS: ns1.example.com TXT: v=spf1 include:_spf.example.com ~all CNAME: (无) | 典型场景:查询主流域名完整记录 |
| google.com | A: 142.250.80.14 AAAA: 2404:6800:400a:809::200e MX: 10 aspmx.l.google.com NS: ns1.google.com TXT: google-site-verification=... CNAME: (无) | 典型场景:大型网站多记录类型验证 |
| nonexistent-domain-xyz123.com | NXDOMAIN (域名不存在) | 边界 case:未注册域名触发 NXDOMAIN |
| 127.0.0.1 | A: (无) AAAA: (无) MX: (无) NS: (无) TXT: (无) CNAME: (无) (查询 IP 地址的 PTR 记录需使用反向 DNS 工具) | 边界 case:输入 IP 而非域名,无正向记录 |
| a.very.long.subdomain.that.exceeds.253.characters.and.should.not.work.but.lets.test.this.boundary.case.example.com | SERVFAIL (服务器处理失败) 或 超时 | 边界 case:超长域名触发 SERVFAIL |
| www.github.com | CNAME: github.com A: 140.82.121.3 AAAA: (无) MX: (无) NS: (无) TXT: (无) | 易错 case:CNAME 记录指向另一域名,用户误以为无 A 记录 |
| _dmarc.example.com | TXT: v=DMARC1; p=none; rua=mailto:dmarc@example.com | 易错 case:下划线开头的 DMARC 记录,新手常忽略 |
https://example.comexample.comDNS 查询的对象是域名(FQDN),不是 URL。协议头(http://)和路径(/page)不属于 DNS 层级,输入后会查询失败或返回空结果。
example.com:8080example.com端口号是传输层概念,DNS 只解析域名到 IP,不关心端口。冒号及后面的数字会被解析器当作域名非法字符,导致查询无结果。
用 AAAA 查询 IPv4 地址查询 IPv4 地址用 A 记录,查询 IPv6 地址用 AAAA 记录AAAA 记录(RFC 3596)专用于 IPv6 地址映射,A 记录(RFC 1035)用于 IPv4。选错记录类型会返回空集,误以为域名未解析。
只关注优先级数字大小,认为数字越大越重要优先级数字越小优先级越高(0 最高),服务器会优先尝试数字最小的 MX 记录MX 记录优先级(preference)是 0-65535 的整数,数值越低优先级越高。常见误解是数字越大越优先,导致邮件路由判断错误。
v=spf1 include:_spf.google.com ~allv=spf1 include:_spf.google.com ~all(作为一条完整字符串,不需要额外引号)TXT 记录的值本身就是字符串,不需要用户再加引号包裹。如果手动加引号,引号会成为值的一部分,导致 SPF 解析失败。
example.com 同时有 A 记录和 CNAME 记录CNAME 记录必须独占该名称,不能与其他记录类型共存(RFC 1034 §3.6.2)CNAME 记录是别名,指向另一个域名。如果同一名称下还有其他记录(A/MX/NS),DNS 解析行为未定义,部分解析器会忽略 CNAME。
把 NS 记录返回的域名直接当作权威服务器 IP 地址NS 记录返回的是权威服务器域名,需要再对该域名做 A/AAAA 查询才能得到 IPNS 记录(RFC 1035 §3.3.11)给出的是权威名称服务器的域名,不是 IP 地址。直接使用域名而非 IP 会导致连接失败。
example.com(前面有空格)example.com(无前导/尾部空格)域名不允许有空格(RFC 1035 §2.3.1)。输入框中的前导/尾部空格会被当作域名的一部分,导致查询返回 NXDOMAIN。
公式推导 · 流程图解 · 依据出处
DNS 查询结果 = 递归解析 (权威应答 (权威服务器, 查询类型))
递归解析 — 从根服务器逐级查询至权威服务器权威应答 — 权威服务器返回的特定记录类型数据权威服务器 — 域名所在 DNS 托管商的授权服务器查询类型 — A/AAAA/MX/NS/TXT/CNAME 等记录类型查询 example.com 的 A 记录:递归解析器先向根服务器查询 .com 的 NS,再向 .com 权威服务器查询 example.com 的 NS,最后向 example.com 的权威服务器请求 A 记录,返回 93.184.216.34。
适用于标准 DNS 递归查询流程,不适用于 DNSSEC 验证、DoH/DoT 加密查询或私有 DNS 环境。基于 RFC 1034/1035 标准。
3 种主流语言 · 复制即用
import socket
import dns.resolver
# 查询 A 记录(IPv4 地址)
hostname = "example.com"
try:
answers = dns.resolver.resolve(hostname, 'A')
for rdata in answers:
print(f"A: {rdata.address}") # 输出 IPv4 地址
except dns.resolver.NoAnswer:
print("无 A 记录")
except dns.resolver.NXDOMAIN:
print("域名不存在")
# 查询 MX 记录(邮件服务器优先级与主机)
try:
answers = dns.resolver.resolve(hostname, 'MX')
for rdata in answers:
print(f"MX: priority={rdata.preference}, host={rdata.exchange}")
except dns.resolver.NoAnswer:
print("无 MX 记录")package main
import (
"fmt"
"net"
)
func main() {
hostname := "example.com"
// 查询 A 记录(IPv4)
ips, err := net.LookupHost(hostname)
if err != nil {
fmt.Println("查询失败:", err)
return
}
for _, ip := range ips {
fmt.Println("A:", ip)
}
// 查询 MX 记录
mxs, err := net.LookupMX(hostname)
if err != nil {
fmt.Println("MX 查询失败:", err)
return
}
for _, mx := range mxs {
fmt.Printf("MX: priority=%d, host=%s\n", mx.Pref, mx.Host)
}
// 查询 TXT 记录
txts, err := net.LookupTXT(hostname)
if err != nil {
fmt.Println("TXT 查询失败:", err)
return
}
for _, txt := range txts {
fmt.Println("TXT:", txt)
}
}const dns = require('dns');
const hostname = 'example.com';
// 查询 A 记录(IPv4)
dns.resolve4(hostname, (err, addresses) => {
if (err) {
console.error('A 记录查询失败:', err.code);
return;
}
addresses.forEach(addr => console.log('A:', addr));
});
// 查询 MX 记录
dns.resolveMx(hostname, (err, mxRecords) => {
if (err) {
console.error('MX 查询失败:', err.code);
return;
}
mxRecords.forEach(mx => console.log(`MX: priority=${mx.priority}, host=${mx.exchange}`));
});
// 查询 TXT 记录
dns.resolveTxt(hostname, (err, txtRecords) => {
if (err) {
console.error('TXT 查询失败:', err.code);
return;
}
txtRecords.forEach(txt => console.log('TXT:', txt.join(' ')));
});8 个高频疑问
「域名 / DNS」下的其他工具