禁用 DNS 缓存 PHP

禁用 DNS 缓存 PHP

我需要在脚本中获取 DNS 的最新 A 记录。该脚本正在执行一些监控操作。DNS 记录的默认 TTL 为 5 分钟,但监控脚本每分钟运行一次。我正在使用 PHP 的函数 dns_get_record 来获取 A 记录,但我想知道是否有办法可以忽略 TTL 缓存并从 DNS 服务器中获取记录而不进行缓存。

当然,有什么方法可以强制这样做,使得没有网络级缓存适用,并且每次我运行脚本时,它实际上都会到达 DNS 服务器?

感谢 Sparsh Gupta

答案1

不。普通客户端无法要求缓存 DNS 服务器刷新缓存并重新查询权威服务器。这是设计使然——我将您可能遭受的 DDoS 破坏程度留给读者作为练习。

如果您绝对肯定必须拥有未缓存的记录,请在常规名称服务器中查询目标域的 NS 记录,然后直接查询权威服务器。

笔记:这通常被认为是一种粗鲁的行为,除非作为最后的手段,否则不应该使用——究竟是什么如此重要,以至于你需要每分钟进行一次完美的重新检查,以防记录在你没有注意到的情况下发生变化?

... 就此而言,为什么您的 TTL 默认为五分钟?

预计到达时间:大多数 DNS 服务器,尤其是转发服务器,都会断然拒绝接受小于 3600 秒的任何 TTL。如果您很幸运,它们会默认至少为 1 小时;如果您运气不好,它们会默认为普遍接受的默认值 86400 秒(24 小时)...

相关内容