![递归转发绑定 DNS 服务器未从缓存中应答](https://linux22.com/image/676025/%E9%80%92%E5%BD%92%E8%BD%AC%E5%8F%91%E7%BB%91%E5%AE%9A%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AA%E4%BB%8E%E7%BC%93%E5%AD%98%E4%B8%AD%E5%BA%94%E7%AD%94.png)
问题陈述
我有一个正在运行的绑定缓存和转发服务器几乎正如预期的那样。所有查询都已转发,其 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。
根本原因
只剩一杯咖啡了。我以为我已经切换回本地解析器了,但事实并非如此。抱歉,误报。