我需要在脚本中获取DNS的最新A记录.该脚本正在执行一些监视操作. DNS记录的默认TTL为5分钟,但监控脚本每分钟运行一次.我正在使用
PHP的函数dns_get_record来获取A记录,但我想知道是否有一种方法可以忽略TTL缓存并从DNS服务器获取记录而不是缓存.
当然,任何方式强制这样做,以便没有网络级缓存适用,每次我运行脚本,它实际上命中DNS服务器?
谢谢@H_502_5@Sparsh Gupta
解决方法
不可以.常规客户端无法要求缓存DNS服务器刷新其缓存并重新查询权威服务器.这是设计 – 我将留下你可以做的DDoS破坏的数量作为读者的练习.
如果您绝对肯定必须拥有未缓存的记录,请在常规名称服务器中查询目标域的NS记录,然后直接查询权威服务器.
注意:这通常被认为是粗鲁的行为,除了作为最后的手段之外真的不应该使用 – 确切地说,非常关键的是你绝对需要每分钟完美的重新检查,以防万一记录改变而你没有注意到?
…就此而言,为什么你的TTL默认为五分钟?
ETA:大多数DNS服务器,特别是转发服务器,将拒绝承认任何小于3600秒的TTL.如果你很幸运,他们默认至少1小时;如果你不是,他们将默认为普遍接受的默认值86400秒(24小时)……