dnsmasq 缓存 dns 多长时间?

per*_*wle 10 dnsmasq

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

我遇到一个问题,请求发送到外部服务有时需要 5 或 10 秒以上的时间进行名称查找。我可以将外部服务 ip 保存到 /etc/hosts 但我害怕 ip 更改。安装 Dnsmasq 改进了名称查找,但缓慢的名称查找仍然发生频率较低。

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

谢谢。

更新

添加挖掘输出

; <<>> 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
Run Code Online (Sandbox Code Playgroud)

更新 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
Run Code Online (Sandbox Code Playgroud)

Ter*_*nen 10

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


小智 5

您需要为 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邮件列表消息