dnsmasq 缓存 dns 多长时间?

dnsmasq 缓存 dns 多长时间?

我查看了手册页,但找不到 dnsmasq 缓存 DNS 的时间。缓存和过期的规则是什么?

我遇到一个问题,发送到外部服务的请求有时需要 5 到 10 秒才能进行名称查找。我可以将外部服务 ip 保存到 /etc/hosts,但我担心 ip 会发生变化。安装 Dnsmasq 可以改善名称查找,但名称查找缓慢的情况仍然会以较少的频率发生。

一个解决方案是在 cron 作业中设置一个简单的 ping,但我需要先找出到期时间。

谢谢。

更新

添加 dig 输出

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45012
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      0       IN      A       140.207.69.102

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 17 19:24:36 2015
;; MSG SIZE  rcvd: 55

更新2

之前的 dig 输出包含 TTL 为 0,这具有误导性。我已发布另一个 dig 输出。

; <<>> DiG 9.8.1-P1 <<>> api.mch.weixin.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60900
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.mch.weixin.qq.com.             IN      A

;; ANSWER SECTION:
api.mch.weixin.qq.com.      181     IN      CNAME   forward.qq.com.
forward.qq.com.             181     IN      A       101.226.90.149
forward.qq.com.             181     IN      A       101.226.129.200

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jul 21 12:01:54 2015
;; MSG SIZE  rcvd: 99

答案1

DNSmasq 使用 DNS TTL 值来确定缓存期限。您可以使用该dig命令查询该域的 DNS 服务器的当前 TTL。

答案2

您需要为 dnsmasq 设置的选项是--min-cache-ttl,该值以秒为单位。

根据 dig 的输出,TTL 为 0,如果你将其设置为,--min-cache-ttl=600那么 dig 将返回的 TTL 值将为 600。api.mch.weixin.qq.com我所在位置的 TTL 是 600,因此自己将其设置为 600 秒应该是相当安全的,可以避免错过任何 IP 更改。(我猜你在中国。)

这将导致所有 DNS 记录在 10 分钟内被视为有效。

查看 dnsmasq邮件列表消息详细介绍该功能。

答案3

问:超时是基于客户端的最后一次引用(“命中”)还是最后一次对 DNS 服务器的真正查找?如果客户端经常命中缓存(“命中”),并且这会更新最后一次引用的时间,那么对 DNS 服务器的真正查找将永远不会发生。假设客户端不断进行 getaddinfo() 调用,我们是否可以将 --min-cache-ttl 设置为 30,每 30 秒左右强制对服务器进行一次真正查找?谢谢

相关内容