我正在开发一个应用程序,该应用程序将用于验证新域在设置为宿主时是否正确配置。部分检查SPF、DomainKey、DKIM记录等的有效性。
对于大多数这些记录,我目前使用的默认TTL为1小时。偶尔会在其中一个记录中发现错误,因此需要进行更新。目前,如果我刚刚测试了域,我必须等待系统的解析器缓存记录过期,然后才能验证它在我的应用程序中是正确的。(是的,我可以手动检查,但我编写了应用程序,所以我不必这样做)。
我希望在系统上设置一个DNS服务器,作为一个正常的缓存解析器,除非它将在设定的最长时间(例如5分钟)内过期记录,或者根本不缓存。并不是所有的域都有驻留在我的普通名称服务器上的DNS,所以这个系统必须查询权威的域名服务器,而不是使用上游解析器(它只使用它们的缓存记录)。
这台机器目前没有运行任何类型的DNS,所以我可以安装BIND或djbdns (或者其他什么,如果有好的建议的话)。
发布于 2009-07-18 03:10:43
谢谢大家的意见和建议。他们向我指出了以下解决办法:
/etc/bind/named.conf.options,以便转发器为空(因此服务器不使用其他缓存服务器的缓存记录)。max-cache-ttl和max-ncache-ttl选项设置为300秒。(参考文献)listen-on-v6 { any; };更改为listen-on-v6 { localhost; };,以便其他系统不使用服务器。(参考文献)/etc/resolv.conf,使其只包含nameserver 127.0.0.1,因此服务器上的应用程序使用新的本地服务器。我重新启动了bind9并验证了它是否有效:
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条。
发布于 2009-07-17 01:58:52
为什么不直接使用dnscache (来自djbdns套件)并每5分钟杀死它一次?
对于那些没有使用djbdns,特别是dnscache的人来说--这是一个递归解析器,它根本不保存磁盘上的任何内容。此外,djb还开发了一套工具,可以自动监视程序,如果程序死了,监视程序将自动(并立即)重新启动它。
每5分钟杀一次鲍勃是你叔叔..。
发布于 2015-08-10 11:15:42
您可以使用max-cache-ttl和max-ncache-ttl限制最长的TTL,无论是在BIND子句中,还是在只适用于您的开发服务器的视图中。
但是,这会影响所有查找的TTL,因此会增加生产服务器上的网络/负载,并降低DNS恢复能力。
对于BIND9.3和更高版本,如果您只想清除一个域的缓存,则可以这样做
rndc flushname <domain>这会刷新精确域的所有记录,而不是子域。请参见rndc的输出。
当然,如果您想以任何理由延长TTL,那就是另一个问题。
https://serverfault.com/questions/41937
复制相似问题