我正在开发一个应用程序,用于validation新域名是否设置为主机。 其中的一部分检查SPF,DomainKey,DKIMlogging等的有效性。
我目前对大多数这些logging使用了一个小时的默认TTL。 偶尔在其中一个logging中发现错误,所以需要更新。 目前,如果我刚刚testing了域名,我必须等待系统的parsing程序的cachinglogging过期,然后才能validation它是否适用于我的应用程序。 (是的,我可以手动检查,但我写了应用程序,所以我不必)。
我想在系统上build立一个DNS服务器来作为一个普通的cachingparsing器,只不过它会在最多五分钟的设置时间内使logging失效,或者根本就没有caching。 并不是所有的域都在我的普通名称服务器上托pipeDNS,所以这个系统必须查询一个域的授权域名服务器,而不是使用上游parsing器(它只使用它们的cachinglogging)。
这台机器当前没有运行任何types的DNS,所以我可以安装BIND或djbdns(或其他的东西,如果有一个很好的build议。
谢谢大家的意见和build议。 他们指示我以下解决scheme:
/etc/bind/named.conf.options以便转发器是空白的(所以服务器不使用其他caching服务器的cachinglogging)。 max-cache-ttl和max-ncache-ttl选项设置为300秒。 ( 参考 ) listen-on-v6 { any; }; listen-on-v6 { any; }; listen-on-v6 { localhost; }; listen-on-v6 { localhost; }; 所以服务器不被其他系统使用。 ( 参考 ) /etc/resolv.conf以仅包含nameserver 127.0.0.1以便服务器上的应用程序使用新的本地服务器。 我重新启动bind9并validation它的工作:
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
尽pipeserverfault.com的logging发布的TTL是3600,但TTL显示为300。
为什么不使用dnscache(从djbdns套件),并每5分钟杀死一次?
对于那些还没有使用过djbdns,特别是dnscache的人来说 – 这是一个recursion的parsing器,根本不会在磁盘上留下任何东西。 此外,djb制作了一套工具,可以自动监控一个程序,如果它死了,监控程序将自动(立即)重新启动它。
每5分钟杀一次,鲍勃是你的叔叔
您可以像您说的那样,使用max-cache-ttl和max-ncache-ttl限制最长的TTL,无论是在BIND选项子句还是仅适用于您的开发服务器的视图。
但是,这会影响所有查找的TTL,因此会增加生产服务器上的networking/负载,并降低DNS恢复能力。
对于BIND 9.3及以上版本,如果您只想清除一个域的caching,则可以
rndc flushname <domain>
这会刷新确切域的所有logging,而不是子域。 看到rndc的输出。
当然,如果你想因任何原因延长 TTL,那是另一个问题 。