DNS 协议与域名解析

从浏览器访问域名开始,理解 DNS 递归查询、常见记录类型、缓存机制和安全风险,帮助初学者看懂域名解析在网络安全中的位置。

写在前面:合法学习边界

本文讲解 DNS 的工作原理和安全风险,面向网络安全自学者。请不要对他人域名、企业内网 DNS 或公共解析器做恶意枚举、缓存投毒、DNS 隧道或伪造测试。所有 DNS 测试都应在自己可控的域名、自建靶场或明确授权的测试环境中完成。

一、为什么要先懂 DNS

当你访问 www.souljian.cn 时,浏览器并不知道这个域名背后的服务器 IP。DNS 的作用就是帮计算机把域名翻译成 IP。对安全人员来说,DNS 是网络入口的一部分,也是信息收集、攻击链和防御链里非常关键的一环。

理解 DNS 能帮助你回答这些问题:

1
2
3
4
5
域名解析到哪台服务器?
为什么同一域名在不同地区访问结果不同?
为什么 DNS 查询会走递归和迭代?
A、CNAME、MX、TXT、CAA 等记录有什么用?
哪些 DNS 现象可能代表安全风险?

二、DNS 的基本角色

DNS 不是单一服务器,而是一组分布式的命名系统。常见角色有:

1
2
3
4
根域名服务器
顶级域服务器,如 .cn、.com
权威域名服务器
递归解析器,通常是运营商或公共 DNS

一次典型解析可以理解为:

1
2
3
4
5
6
1. 客户端向递归解析器询问 www.example.com
2. 递归解析器没有缓存,就去问根服务器
3. 根服务器告诉它去问顶级域
4. 顶级域告诉它去问 example.com 的权威服务器
5. 权威服务器返回 IP 记录
6. 递归解析器把结果返回客户端

三、常见 DNS 记录类型

1. A 记录

A 记录把域名映射到 IPv4 地址。

1
www.example.com A 198.51.100.20

这是最常见的域名解析记录。

2. AAAA 记录

AAAA 记录把域名映射到 IPv6 地址。

1
www.example.com AAAA 2001:db8::20

随着 IPv6 普及,AAA A 记录也会越来越重要。

3. CNAME 记录

CNAME 把一个域名指向另一个域名,而不是直接指向 IP。

1
shop.example.com CNAME www.example.com

CNAME 适合统一入口、CDN 和负载均衡。

4. MX 记录

MX 记录定义邮件接收服务器。

1
example.com MX mail.example.com

DNS 枚举里,MX 记录常用于发现邮件基础设施。

5. TXT 记录

TXT 记录常用于验证、SPF、DKIM、DMARC 等配置。

1
example.com TXT "v=spf1 include:_spf.example.com ~all"

安全排查时,TXT 记录可以帮助判断邮件认证是否配置。

6. NS 记录

NS 记录声明某个域名的权威 DNS 服务器。

1
example.com NS ns1.example-dns.com

如果你要管理域名解析,首先要确认 NS 指向哪里。

7. CAA 记录

CAA 记录用于限制哪些证书颁发机构可以为你签发证书。

1
example.com CAA "issue letsencrypt.org"

CAA 可以降低错误签发证书的风险。

四、用命令行观察 DNS

1. dig

dig 是 Linux 下最常用、最可控的 DNS 查询工具之一。

1
2
3
4
5
dig example.com
dig example.com A +short
dig example.com MX +short
dig example.com TXT +short
dig @8.8.8.8 example.com

+short 只输出简短结果,适合快速查看。

2. nslookup

nslookup 更简单,但表达能力不如 dig

1
2
nslookup example.com
nslookup -type=MX example.com

3. host

host 适合快速查看解析结果。

1
2
host example.com
host -t MX example.com

4. 查看本机解析配置

1
cat /etc/resolv.conf

这里通常能看到当前系统使用的 DNS 服务器。注意:不要在公开场合随意分享包含内网 DNS 的截图或日志。

五、缓存为什么重要

DNS 缓存能减少重复查询、提高访问速度、减轻 DNS 服务器压力。缓存通常由 TTL 控制。

TTL 的含义是记录允许被缓存的秒数。TTL 越大,更新扩散越慢,但性能更好;TTL 越小,更新更快,但查询压力更大。

从安全角度看,缓存会带来两类问题:

1
2
更新延迟:攻击者可能利用缓存窗口继续访问旧 IP
缓存污染:如果有人能让递归解析器接受伪造答案,就可能把域名解析到恶意 IP

六、DNS 相关安全风险

1. DNS 缓存投毒

攻击者试图向递归解析器注入伪造答案,让某个域名解析到恶意服务器。现代 DNSSEC、随机化事务 ID 和端口随机化已经显著降低风险,但它仍然是理解 DNS 安全时的重要概念。

2. DNS 劫持

这通常发生在本地网络、运营商链路、路由器、Wi-Fi 或系统设置层面,表现为域名被解析到非预期地址。用户可能看到的是钓鱼页面或错误站点。

3. 子域名枚举

攻击者常通过 DNS 查询收集常见子域名,例如:

1
2
3
4
admin.example.com
mail.example.com
dev.example.com
api.example.com

这类枚举本身属于信息收集,但必须限定在授权范围内。对未知企业域名做大规模枚举可能触发安全告警,也可能违反合规要求。

4. DNS 数据泄露

某些应用会把内部主机名、临时域名或敏感路径暴露到 DNS 日志、搜索框、告警系统或错误响应中。安全人员需要结合日志和上下文判断,不能只凭一次解析结果就下结论。

七、DNS 安全防御建议

1
2
3
4
5
6
7
使用 DNSSEC 保护关键域名链路
定期清理过期记录,避免僵尸域名
限制 DNS 记录变更权限,启用审计日志
使用可信递归解析器或自建解析基础设施
对 MX、TXT、CAA 记录做定期审计
监控异常子域名新增
对 DNS 查询日志做告警分析

对于企业内网,还应特别注意:

1
2
3
内部域名是否会泄露到公网解析器
临时调试域名是否未及时删除
DNS 日志是否记录了过多内部资产信息

八、DNS 在安全报告中的写法

好的报告要写出证据和判断,而不是只写“发现 DNS 问题”。

示例:

1
2
3
发现:example.com 的 MX 记录指向 mail.old.example.com,但该域名已停止维护。
风险:邮件路由可能异常,增加投递失败或被劫持风险。
建议:更新 MX 记录并验证邮件投递流程;清理过期记录;增加 DNS 变更审计。

这样写比“DNS 记录异常”更有价值。

九、小结

DNS 是把名字变成地址的基础设施。学习 DNS 时,不要只背记录类型,更要理解递归、缓存、权威、安全和审计。后续做信息收集、Web 安全、应急响应和日志分析时,DNS 都会反复出现。