如果同一记录集中不允许不同的 TTL,为什么绑定允许逐个记录设置 TTL?
如果我使用以下方法设置区域 ttl:
$TTL 39600
然后使用以下方法设置记录 TTL:
@ 300 IN A 1.1.1.1
我在日志中收到警告:
TTL set to prior TTL (300)
这是因为我有“同一记录集中的记录有不同的 TTL,这是不允许的”
如果不允许这样做,那么能够逐条记录设置 TTL 记录有什么意义?
谢谢
如果同一记录集中不允许不同的 TTL,为什么绑定允许逐个记录设置 TTL?
如果我使用以下方法设置区域 ttl:
$TTL 39600
然后使用以下方法设置记录 TTL:
@ 300 IN A 1.1.1.1
我在日志中收到警告:
TTL set to prior TTL (300)
这是因为我有“同一记录集中的记录有不同的 TTL,这是不允许的”
如果不允许这样做,那么能够逐条记录设置 TTL 记录有什么意义?
谢谢
文件格式在RFC1034和部分RFC1035中指定。它非常古老(1987 年),并没有专门为 BIND 或根据当前功能定义。这里没有大智慧;按照惯例,就是这样。
我相信这种格式也被设计用于缓存之类的东西,尽管在实践中这种用法一定非常罕见。在记录缓存中,TTL 经常不同,并且缓存包含来自许多不同域的记录。
BIND 允许您为与区域默认 TTL 不同的单个记录设置显式 TTL,但您不能为具有相同名称的相同类型的记录设置不同的 TTL。
你可以这样做:
你不能做这个:
为什么?因为这会导致某些记录从缓存中超时,留下其他记录,从而为您的用户提供对其 DNS 查询的错误答案。例如,当您有两个具有相同名称的相同类型的记录时,BIND 将以循环方式回答,平衡两个 IP 地址之间的负载。在上面的示例中,203.0.113.100 将在 5 分钟后超时,而将另一个缓存 11 小时。解析器不会重新查询具有较短 TTL 的记录,因为据它所知,它具有该 A 记录查询的答案。
这是一个 TXT 记录示例:
如果允许上述示例,解析器将在查询后缓存所有 3 条 TXT 记录,但我的 SPF、DKIM 和 DMARC 记录将在 5 分钟后消失。使用此解析器的任何邮件服务器都无法看到这些记录,并且我可能会遇到邮件传递问题。