dnsmasq缓存dns多长时间?


9

我抬头看了手册页,找不到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

更新2

先前的挖掘输出包含TTL为0,这会产生误导。我发布了另一个挖掘输出。

; <<>> 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

Answers:


9

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


您是说dnsmasq仅在TTL周期内缓存d​​ns吗?我用挖掘输出更新了我的问题。
2015年

1
是的,仅TTL周期用于缓存。并且您的TTL为0,因此DNSmasq将始终向授权DNS服务器进行查询。
Tero Kilkanen 2015年

但是,如手册中所述,您可以使用--max-cache-ttl强制降低缓存值的TTL(我自己尚未测试过)。
sam_pan_mariusz 2015年

@TeroKilkanen Query time: 0msec表示对dnsmasq的缓存命中。但是dnsmasq将dns记录保留在缓存中多长时间?
perlwle 2015年

@sam_pan_mariusz我认为您的意思是--max_ttl旗帜?我宁愿始终获得正确的IP,而不想错过外部服务IP更改。
perlwle 2015年

4

您需要为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 邮件列表消息,详细介绍此功能。


我将每隔10分钟左右ping一次,希望能解决dns查找滞后的问题。如之前的评论中所述,我使用的是没有该设置的旧版本。如果我错了,请指正。.但是,如果可用,将其设置为600将与外部服务TTL相同。那不会有什么不同,是吗?
2015年

1
@perlwle不,不是的,我以为您总是收到零的TTL,将其增加到1200会有所帮助。我建议调查DNSCrypt。如果没有有关查找所需时间,您的连接速度以及第三方影响的更多信息,我无法给出更明确的答案。如果您需要功能更强大的DNS缓存/解析器,我将推荐本教程有关Unbound 的基础部分,它可以在Ubuntu 12.04上很好地从标准存储库中正常运行。(请注意,Google DNS现在可以正确处理DNSSEC。)
2015年

1
还要注意那些主机文件条目的
dnsmasq'local
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.