一个域名下可以挂很多种记录:地址、别名、邮件、委派、文本、服务发现、证书授权……它们在线上各是什么样?这篇对每种常见类型取回原始 RDATA 字节,一字节一字节地对着解读,还看了 ANY 为什么不再可用。每个回答都同时问了 8.8.8.8 来交叉核对。
A —— 问 example.com 的 A(类型号 1):RCODE 0,回答 2 条,报文 61 字节
example.com A TTL 293 RDLENGTH 4 RDATA 字节:ac 42 93 f3
解读:IPv4 172.66.147.243
example.com A TTL 293 RDLENGTH 4 RDATA 字节:68 14 17 9a
解读:IPv4 104.20.23.154
与 8.8.8.8 比较:回答完全一致
AAAA —— 问 example.com 的 AAAA(类型号 28):RCODE 0,回答 2 条,报文 85 字节
example.com AAAA TTL 239 RDLENGTH 16 RDATA 字节:26 06 47 00 00 10 00 00 00 00 00 00 68 14 17 9a
解读:IPv6 2606:4700:10::6814:179a
example.com AAAA TTL 239 RDLENGTH 16 RDATA 字节:26 06 47 00 00 10 00 00 00 00 00 00 ac 42 93 f3
解读:IPv6 2606:4700:10::ac42:93f3
与 8.8.8.8 比较:回答完全一致
CNAME —— 问 www.github.com 的 CNAME(类型号 5):RCODE 0,回答 1 条,报文 46 字节
www.github.com CNAME TTL 3600 RDLENGTH 2 RDATA 字节:c0 10
解读:名字 github.com
与 8.8.8.8 比较:回答完全一致A 是 4 字节,AAAA 是 16 字节,CNAME 是一个域名(可被压缩指针代替)。
MX —— 问 gmail.com 的 MX(类型号 15):RCODE 0,回答 5 条,报文 150 字节
gmail.com MX TTL 461 RDLENGTH 27 RDATA 字节:00 05 0d 67 6d 61 69 6c 2d 73 6d 74 70 2d 69 6e 01 6c 06 67 6f 6f 67 6c 65 c0 12
解读:优先级 5,邮件服务器 gmail-smtp-in.l.google.com
gmail.com MX TTL 461 RDLENGTH 9 RDATA 字节:00 14 04 61 6c 74 32 c0 29
解读:优先级 20,邮件服务器 alt2.gmail-smtp-in.l.google.com
gmail.com MX TTL 461 RDLENGTH 9 RDATA 字节:00 28 04 61 6c 74 34 c0 29
解读:优先级 40,邮件服务器 alt4.gmail-smtp-in.l.google.com
gmail.com MX TTL 461 RDLENGTH 9 RDATA 字节:00 1e 04 61 6c 74 33 c0 29
解读:优先级 30,邮件服务器 alt3.gmail-smtp-in.l.google.com
…共 5 条,只显示前 4 条
与 8.8.8.8 比较:回答不完全一致(条数 5 对 5;不同解析器的负载均衡 / 缓存可能给出不同子集)
NS —— 问 example.com 的 NS(类型号 2):RCODE 0,回答 2 条,报文 84 字节
example.com NS TTL 82536 RDLENGTH 21 RDATA 字节:04 68 65 72 61 02 6e 73 0a 63 6c 6f 75 64 66 6c 61 72 65 c0 14
解读:名字 hera.ns.cloudflare.com
example.com NS TTL 82536 RDLENGTH 10 RDATA 字节:07 65 6c 6c 69 6f 74 74 c0 2e
解读:名字 elliott.ns.cloudflare.com
与 8.8.8.8 比较:回答完全一致
SOA —— 问 example.com 的 SOA(类型号 6):RCODE 0,回答 1 条,报文 91 字节
example.com SOA TTL 1029 RDLENGTH 50 RDATA 字节:07 65 6c 6c 69 6f 74 74 02 6e 73 0a 63 6c 6f 75 64 66 6c 61 72 65 c0 14 03 64 6e 73 c0 34 90 06 f3 98 00 00 27 10 00 00 …
解读:主名字服务器 elliott.ns.cloudflare.com,管理员邮箱 dns.cloudflare.com(第一个点代表 @),序列号 2416374680,刷新 10000,重试 2400,过期 604800,最小 TTL 1800
与 8.8.8.8 比较:回答完全一致MX = 优先级 + 名字;NS = 名字;SOA 含主服务器、管理员邮箱、序列号和一组计时字段,最后一个字段是负缓存时间。
TXT —— 问 gmail.com 的 TXT(类型号 16):RCODE 0,回答 4 条,报文 308 字节
gmail.com TXT TTL 156 RDLENGTH 65 RDATA 字节:40 67 6c 6f 62 61 6c 73 69 67 6e 2d 73 6d 69 6d 65 2d 64 76 3d 43 44 59 58 2b 58 46 48 55 77 32 77 6d 6c 36 2f 47 62 38 …
解读:1 个字符串(各 ≤255 字节,前缀 1 字节长度):globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8=
gmail.com TXT TTL 156 RDLENGTH 68 RDATA 字节:43 79 61 68 6f 6f 2d 76 65 72 69 66 69 63 61 74 69 6f 6e 2d 6b 65 79 3d 2b 65 5a 77 49 50 53 67 52 78 6b 41 55 7a 44 74 …
解读:1 个字符串(各 ≤255 字节,前缀 1 字节长度):yahoo-verification-key=+eZwIPSgRxkAUzDtqT8Qhk+j4A1JF6V/wtGoyGTkELY=
gmail.com TXT TTL 156 RDLENGTH 32 RDATA 字节:1f 76 3d 73 70 66 31 20 72 65 64 69 72 65 63 74 3d 5f 73 70 66 2e 67 6f 6f 67 6c 65 2e 63 6f 6d
解读:1 个字符串(各 ≤255 字节,前缀 1 字节长度):v=spf1 redirect=_spf.google.com
…共 4 条,只显示前 3 条
与 8.8.8.8 比较:回答完全一致
SRV —— 问 _imaps._tcp.gmail.com 的 SRV(类型号 33):RCODE 0,回答 1 条,报文 73 字节
_imaps._tcp.gmail.com SRV TTL 86400 RDLENGTH 22 RDATA 字节:00 05 00 00 03 e1 04 69 6d 61 70 05 67 6d 61 69 6c 03 63 6f 6d 00
解读:优先级 5,权重 0,端口 993,目标 imap.gmail.com
与 8.8.8.8 比较:回答完全一致
CAA —— 问 google.com 的 CAA(类型号 257):RCODE 0,回答 1 条,报文 55 字节
google.com CAA TTL 86400 RDLENGTH 15 RDATA 字节:00 05 69 73 73 75 65 70 6b 69 2e 67 6f 6f 67
解读:flags 0,tag "issue",value "pki.goog"
与 8.8.8.8 比较:回答完全一致TXT 是带长度前缀的字符串(SPF 就是一条 TXT);SRV 给出优先级、权重、端口和目标;CAA 限定哪些 CA 可以签发证书。
反向名字的构造:IPv4 地址 1.1.1.1 的四段倒过来,加后缀 .in-addr.arpa → 1.1.1.1.in-addr.arpa;一个任意地址 a.b.c.d 就是 d.c.b.a.in-addr.arpa;IPv6 要把 32 个十六进制位逐位倒过来加 .ip6.arpa
PTR —— 问 1.1.1.1.in-addr.arpa 的 PTR(类型号 12):RCODE 0,回答 1 条,报文 67 字节
1.1.1.1.in-addr.arpa PTR TTL 32 RDLENGTH 17 RDATA 字节:03 6f 6e 65 03 6f 6e 65 03 6f 6e 65 03 6f 6e 65 00
解读:名字 one.one.one.one
与 8.8.8.8 比较:回答完全一致
HTTPS —— 问 cloudflare.com 的 HTTPS(类型号 65):RCODE 0,回答 1 条,报文 105 字节
cloudflare.com HTTPS TTL 213 RDLENGTH 61 RDATA 字节:00 01 00 00 01 00 06 02 68 33 02 68 32 00 04 00 08 68 10 84 e5 68 10 85 e5 00 06 00 20 26 06 47 00 00 00 00 00 00 00 00 …
解读:SvcPriority 1,TargetName .,SvcParams 58 字节
与 8.8.8.8 比较:回答完全一致PTR 用倒过来的地址加 in-addr.arpa;HTTPS(SVCB)在连接前就给出 alpn 和地址提示。
问 example.com 的 ANY:RCODE 4,回答 0 条:[];报文 29 字节 问 cloudflare.com 的 ANY:RCODE 4,回答 0 条:[];报文 32 字节 类型号表(本篇用到的):A=1,NS=2,CNAME=5,SOA=6,PTR=12,MX=15,TXT=16,AAAA=28,SRV=33,HTTPS=65,CAA=257
被拿来做放大攻击,现在 1.1.1.1 直接回 NOTIMP。