问题陈述
我有一个正在运行的绑定缓存和转发服务器几乎正如预期的那样。所有查询都已转发,其 TTL 已缓存。乍一看,一切似乎都很正常,直到我发现我的 VPN 的响应时间从未低于 150 毫秒。
执行 tcpdump 后,我发现,尽管 bind 很清楚 TTL 大于 0(本例中 TTL 为 14000),解析器仍然转发每个请求。响应的 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 的内存可用。在任何给定时间,它缓存的记录都不会超过几百条。
我对 bind 中的行为的期望是否错误?使用 Unbound 时我没有看到此行为,但出于其他原因我想切换回 bind。
答案1
解决了
键盘和椅子之间存在问题。
什么地方出了错
在我的故障排除过程中,我在本地和上游解析器之间来回切换 /etc/resolv.conf。
根本原因
只剩一杯咖啡了。我以为我已经切换回本地解析器了,但事实并非如此。抱歉,误报。