我有一个包含大量 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