我正在开发一个应用程序,该应用程序将用于验证新域在设置托管时是否正确配置。这部分检查 SPF、DomainKey、DKIM 记录等的有效性。
我目前对大多数这些记录使用一小时的默认 TTL。有时会在其中一个记录中发现错误,因此需要对其进行更新。目前,如果我刚刚测试了域,我必须等待系统解析器的缓存记录过期,然后才能验证我的应用程序是否正确。(是的,我可以手动检查,但我编写了应用程序,所以我不必这样做)。
我想在系统上设置一个 DNS 服务器作为一个普通的缓存解析器,除了它会在最长的设定时间内(例如五分钟)过期记录,或者根本不缓存。并非所有域都在我的普通名称服务器上托管 DNS,因此该系统必须查询权威名称服务器的域,而不是使用上游解析器(只会使用它们的缓存记录)。
这台机器目前没有运行任何类型的 DNS,所以我可以安装 BIND 或 djbdns(如果有好的建议,也可以安装其他东西。
谢谢大家的意见和建议。他们指导我采用以下解决方案:
/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 并验证它正在工作:
即使 serverfault.com 的记录发布的 TTL 为 3600,TTL 仍显示为 300。
只需拨打“挖掘”电话就可以使用 +trace 很多...
Dig 将像 DNS 服务器一样进行完全递归,无需兑现,无需提前了解 NS 服务器,如果存在委托问题,您也会发现。
如果它是一个 Windows 程序,您可以从这里下载 Bind https://www.isc.org/download/并且它包含一个 dig.exe,Linux 通常有一个 BIND 工具或可能包含 dig 的命名工具包。
安装一个完整的 DNS 服务器只是为了进行查找......太疯狂了!
为什么不只使用 dnscache(来自 djbdns 套件)并每 5 分钟杀死一次呢?
对于那些没有使用过 djbdns 尤其是 dnscache 的人来说——它是一个递归解析器,根本不会在磁盘上保留任何东西。此外,djb 制作了一套工具来自动监控程序,如果它死了,监控程序将自动(并立即)重新启动它。
每 5 分钟杀死一次,鲍勃就是你的叔叔……
正如您所说,您可以在 BIND 选项子句或仅适用于您的开发服务器的视图中使用
max-cache-ttl
and限制最长的 TTL。max-ncache-ttl
但是,这会影响所有查找的 TTL,因此会增加生产服务器上的网络/负载并降低 DNS 弹性。
对于 BIND 9.3 及更高版本,如果您只想清除一个域的缓存,您可以这样做
这会刷新确切域的所有记录,而不是子域。查看 的输出
rndc
。当然,如果你想以任何理由延长TTL,那就是另一个问题了。