更改区域中每条记录的 DNS TTL

更改区域中每条记录的 DNS TTL

我有一个包含大量 A 记录的正向查找区域。如果我更改该区域的 TTL,它不会应用于记录(它们会保留之前的 TTL 设置)。我必须手动更改每条记录的 TTL。

这是预期的行为吗?如何更改每条记录的 TTL?

谢谢!

答案1

如果它们是静态条目,则在您重新启动 DNS 或重新加载区域后,如果条目没有应用手动 TTL,则应该更新它们。

请参阅此处的 Technet 线程,其中讨论了该功能并解释了为什么 SOA TTL 更改可能会或可能不会对现有 A 记录产生影响:http://social.technet.microsoft.com/Forums/en-US/031d48f5-46ae-4e6d-ae85-ae715e7c1206/ttl-of-dns-records-not-updated-when-soa-minimum-ttl-is-changed?forum=winserverNIS

但是,如果它们是通过 DHCP 或 DNS 进行动态更新,则 TTL 默认为 20 分钟。

每当动态更新客户端在 DNS 中注册时,关联的 A 和 PTR 资源记录都会包含 TTL,默认情况下设置为 20 分钟。您可以通过修改 默认注册TTL以下注册表子项中的条目:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\参数

该条目具有 DWORD 值,并以秒为单位列出 TTL。较小的值会导致缓存条目更快过期,这会增加 DNS 流量,但会降低条目过期的风险。快速过期条目对于经常更新 DHCP 租约的计算机很有用。较大的值会导致缓存条目保留更长时间,从而减少 DNS 流量,但会增加条目过期的风险。较长的保留时间对于不经常更新 DHCP 租约的计算机很有用。

但我不建议更改动态更新的默认设置。

答案2

虽然这可能(或可能不)适用于 Windows 世界,但您通常在区域文件的开头使用别名 $TTL 来指定所有资源记录的默认到期时间,而没有它们自己的 TTL 值。

例如:

$TTL 1h
example.com.  IN  SOA  ns.example.com. username.example.com. (
          2007120710 ; serial number of this zone file
          1d         ; slave refresh (1 day)
          2h         ; slave retry time in case of a problem (2 hours)
          4w         ; slave expiration time (4 weeks)
          1h         ; maximum caching time in case of failed lookups (1 hour)
          )
example.com.         NS    ns             ; ttl = 1h
mail          3w     A     192.0.0.1      ; ttl = 3w

相关内容