dig:详细,推荐

dig example.com                        # 默认 A 记录
dig example.com +short                 # 只看结果 IP
dig example.com A                      # IPv4
dig example.com AAAA                   # IPv6
dig example.com MX                     # 邮件服务器
dig example.com TXT                    # TXT 记录(SPF / 验证用)
dig example.com NS                     # 域名服务器
dig example.com CNAME                  # 别名
dig example.com ANY                    # 所有(多数 DNS 现在拒绝)
dig +trace example.com                 # 递归追踪(看哪个 DNS 解的)
dig @8.8.8.8 example.com               # 指定 DNS server
dig -x 8.8.8.8                          # 反向解析(IP → 域名)

实战

# 看 DNS 是否生效
dig my-new-site.com +short
# 1.2.3.4

# 看 MX 记录(邮件服务器)
dig example.com MX +short
# 10 mx1.example.com.
# 20 mx2.example.com.

# 看 CNAME 链
dig www.example.com
# www.example.com.    CNAME   example.com.

# 看某 DNS 服务器是否正确解析
dig @114.114.114.114 example.com +short

# 验证 DNSSEC
dig +dnssec example.com

nslookup:简单

nslookup example.com
nslookup example.com 8.8.8.8           # 指定 DNS
nslookup -type=MX example.com

nslookup 更简单但信息少——dig 是真正的工具

host:第三种

host example.com
host -t MX example.com
host -a example.com                    # 所有类型

host 介于两者之间,输出简洁。

实战:排查 DNS 问题

# 1. 本地能解析吗
dig example.com

# 2. 换 DNS 试
dig @8.8.8.8 example.com

# 3. 看本机 DNS 配置
cat /etc/resolv.conf
resolvectl status

# 4. 看是否走 hosts
grep example.com /etc/hosts

# 5. 清缓存
sudo resolvectl flush-caches            # systemd-resolved
sudo systemd-resolve --flush-caches     # 老版本

看每条 DNS 记录的 TTL

dig example.com
# ;; ANSWER SECTION:
# example.com.    300    IN    A    1.2.3.4
#                  ↑
#                  TTL 秒数:300 秒 = 5 分钟缓存

TTL 影响改记录后多久全网生效——改之前先把 TTL 降到 60,等老记录过期再切。

  • DNS 是递归的——你的 DNS server / 上游 DNS / 浏览器 各自有缓存
  • 改 DNS 后等几分钟到几小时才看到——别马上断定是 DNS 没生效
  • 一些公共 DNS(特别是国内)解析慢或不准——多 DNS 试