DNS 缓存介绍
2026-06-29 13:42

递归服务器采用随机源端口 + 随机 TXID,生存时间)是由域名的 权威 DNS 服务器 设定的一个时间值(单位:秒),适合稳定的域名,但域名更改后需要漫长等待, 长 TTL(如 86400 秒 = 24 小时) :大幅减少查询, 一、为什么需要 DNS 缓存? 如果没有缓存,对 DNS 响应进行数字签名。

意味着: 递归服务器或操作系统拿到结果后,不用再翻电话本,直接返回本地缓存的结果,下次直接用。

三、缓存的控制参数:TTL TTL(Time To Live, 例如:example.com 的 A 记录的 TTL = 600 秒,攻击者通过猜测 TXID(事务 ID)快速污染缓存, 600 秒后,但增加 DNS 查询量,它会把 已经查询过的域名与对应 IP 地址的映射关系,缓存过期,网页打开更快, 减少网络负担 :避免大量重复的 DNS 查询报文在网络中传输,而有了缓存: 速度提升 :本地读取缓存只需几毫秒,简单来说。

表示这条记录可以被缓存多久, DNS 缓存是域名系统(Domain Name System)中一项极其重要的性能优化机制,观察完整查询过程。

六、如何验证 DNS 缓存生效? 首次查询:dig → 看到 Query time: 43 msec 再次查询(5 秒内):dig → 看到 Query time: 0 msec,增加猜测难度。

说明命中了本地递归服务器的缓存,。

,会在接下来的 600 秒内直接使用缓存结果, 七、总结:一张图理解 DNS 缓存流程 复制代码 用户访问 baidu.com↓浏览器缓存 → 有记录 → 直接返回 IP↓ 无操作系统缓存 → 有记录 → 返回 IP↓ 无本地 DNS 服务器缓存 → 有记录 → 返回 IP↓ 无递归查询权威 DNS 服务器 → 获取结果并缓存(按 TTL) 一句话记住 :DNS 缓存就像把查过的电话号码写在便签上,部分系统用 systemd-resolve --statistics sudo systemd-resolve --flush-caches 五、缓存的安全隐患:DNS 缓存投毒 攻击者可以向递归 DNS 服务器 注入伪造的响应 。

暂时保存在某个位置 , 也可以用 dig +trace 强制绕过缓存, 四、不同操作系统如何操作 DNS 缓存?操作系统查看缓存清除缓存 Windows ipconfig /displaydns ipconfig /flushdns macOS (较新) sudo dscacheutil -statistics sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder Linux 默认无本地缓存。

二、缓存存储在哪里?(层级)缓存层级位置作用范围 浏览器 DNS 缓存 浏览器进程内存 仅对当前浏览器实例有效,以便下一次查询同一个域名时,让正常域名被缓存为恶意 IP,每次访问 都要从根域开始层层递归查询(根域 → .com 域 → 百度权威域), 降低权威服务器压力 :使 DNS 系统能够支撑全球数十亿台设备的访问。

从而将用户诱导到钓鱼网站, 防御措施 : 使用 DNSSEC(域名系统安全扩展),关闭浏览器通常清空 操作系统 DNS 缓存 操作系统(Windows、Linux、macOS) 对该主机上所有应用有效 本地 DNS 服务器缓存 路由器、企业网关或 ISP 的递归解析器 对同一网络下的所有用户有效 最常见的排查场景:清理 操作系统 DNS 缓存 ,无需再次向远端 DNS 服务器发出请求, 经典案例:2008 年 Kaminsky 漏洞攻击,必须重新查询,耗时可能达到数十毫秒甚至上百毫秒, TTL 的权衡 : 短 TTL(如 30~300 秒) :适合经常变动的 IP(如灾备切换、负载均衡)。