首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置只在短时间内缓存的本地DNS解析器

配置只在短时间内缓存的本地DNS解析器
EN

Server Fault用户
提问于 2009-07-17 01:30:38
回答 3查看 22.7K关注 0票数 3

我正在开发一个应用程序,该应用程序将用于验证新域在设置为宿主时是否正确配置。部分检查SPF、DomainKey、DKIM记录等的有效性。

对于大多数这些记录,我目前使用的默认TTL为1小时。偶尔会在其中一个记录中发现错误,因此需要进行更新。目前,如果我刚刚测试了域,我必须等待系统的解析器缓存记录过期,然后才能验证它在我的应用程序中是正确的。(是的,我可以手动检查,但我编写了应用程序,所以我不必这样做)。

我希望在系统上设置一个DNS服务器,作为一个正常的缓存解析器,除非它将在设定的最长时间(例如5分钟)内过期记录,或者根本不缓存。并不是所有的域都有驻留在我的普通名称服务器上的DNS,所以这个系统必须查询权威的域名服务器,而不是使用上游解析器(它只使用它们的缓存记录)。

这台机器目前没有运行任何类型的DNS,所以我可以安装BIND或djbdns (或者其他什么,如果有好的建议的话)。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2009-07-18 03:10:43

谢谢大家的意见和建议。他们向我指出了以下解决办法:

  • 安装bind9。
  • 编辑/etc/bind/named.conf.options,以便转发器为空(因此服务器不使用其他缓存服务器的缓存记录)。
  • max-cache-ttlmax-ncache-ttl选项设置为300秒。(参考文献)
  • listen-on-v6 { any; };更改为listen-on-v6 { localhost; };,以便其他系统不使用服务器。(参考文献)
  • 编辑系统的/etc/resolv.conf,使其只包含nameserver 127.0.0.1,因此服务器上的应用程序使用新的本地服务器。

我重新启动了bind9并验证了它是否有效:

代码语言:javascript
复制
dev:~# dig serverfault.com

; <<>> DiG 9.5.1-P2 <<>> serverfault.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63591
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;serverfault.com.               IN      A

;; ANSWER SECTION:
serverfault.com.        300     IN      A       69.59.196.212

;; AUTHORITY SECTION:
serverfault.com.        300     IN      NS      ns21.domaincontrol.com.
serverfault.com.        300     IN      NS      ns22.domaincontrol.com.

;; Query time: 190 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jul 18 03:06:24 2009
;; MSG SIZE  rcvd: 101

尽管serverinft.com发布的TTLs为3600条,但TTL仍显示为300条。

票数 11
EN

Server Fault用户

发布于 2009-07-17 01:58:52

为什么不直接使用dnscache (来自djbdns套件)并每5分钟杀死它一次?

对于那些没有使用djbdns,特别是dnscache的人来说--这是一个递归解析器,它根本不保存磁盘上的任何内容。此外,djb还开发了一套工具,可以自动监视程序,如果程序死了,监视程序将自动(并立即)重新启动它。

每5分钟杀一次鲍勃是你叔叔..。

票数 0
EN

Server Fault用户

发布于 2015-08-10 11:15:42

您可以使用max-cache-ttlmax-ncache-ttl限制最长的TTL,无论是在BIND子句中,还是在只适用于您的开发服务器的视图中。

但是,这会影响所有查找的TTL,因此会增加生产服务器上的网络/负载,并降低DNS恢复能力。

对于BIND9.3和更高版本,如果您只想清除一个域的缓存,则可以这样做

代码语言:javascript
复制
rndc flushname <domain>

这会刷新精确域的所有记录,而不是子域。请参见rndc的输出。

当然,如果您想以任何理由延长TTL,那就是另一个问题

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/41937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档