问题陈述
我有一个几乎按预期运行的绑定缓存和转发服务器。所有查询都被转发,它们的 TTL 被缓存。乍一看,一切似乎都很正常,直到我看到响应时间从未低于我的 VPN 的 150 毫秒。
执行 tcpdump 后,我发现即使 bind 清楚地知道 TTL 大于 0(在本例中为 14000 的 TTL),解析器仍在转发每个请求。响应的 TTL仍按预期递减,但无论缓存记录中剩余的 TTL 如何,每个请求仍会向上游转发。
如果我禁用转发,此行为将停止并且缓存按预期工作。
版本
Bind 9.9.4-29 (Redhat forked)
OS: CentOS 7
配置的相关部分
allow-query { local; };
recursion yes;
allow-recursion { local; };
max-cache-size unlimited;
stacksize unlimited;
datasize unlimited;
zone "." IN {
type forward;
forward first;
forwarders { 192.168.120.3; 192.168.120.2; };
};
我都试过了forward first;
,forward only;
这个解析器几乎没有负载,有几 GB 的可用内存。在任何给定时间,它都不会缓存超过几百条记录。
我是否可能对绑定中的行为有错误的期望?使用 Unbound 我没有看到这种行为,但出于其他原因我想切换回 bind。
解决了
键盘和椅子之间存在问题。
什么地方出了错
在我的故障排除中,我在本地和上游解析器之间来回切换我的 /etc/resolv.conf。
根本原因
只有一杯咖啡在场。我以为我已经切换回本地解析器,但我没有。道歉,虚惊一场。