我在本地网络中安装了一个经典的 bind9 dns 服务器,作为转发 dns 服务器,这是我的配置文件(我刚刚将我的 ISP DNS 服务器添加为转发器):
选项 {
目录“/var/cache/bind”;
转发器 { 212.27.40.240; 212.27.40.241; };
只向前;
dnssec 验证自动;
auth-nxdomain no; # 符合 RFC1035
监听-on-v6 { 任何; }; };
我感兴趣的是使用 dig 时获得的“查询时间”
我用了 挖掘@my_dns_ipadress www.google.com
我还添加了发送查询的时间
06:04:47 --> ;; 查询时间:157 毫秒(绑定后的第一个查询开始)
06:09:24 --> ;; 查询时间:1 毫秒
06:29:28 --> ;; 查询时间:106 毫秒
06:39:39 --> ;; 查询时间:1 毫秒
07:04:21 --> ;; 查询时间:98 毫秒
我的问题是,为什么第 3 次和第 5 次查询时间不是 1 毫秒左右?缓存似乎没有被使用
在向我的 isp dns 服务器转储传出的 udp 53 数据包时,我也执行了这些测试,我发现当查询时间超过 1 或 2 毫秒时,bind 会将 dns 请求发送到我的 isp dns 服务器。
那么我该如何强制绑定以使用他的缓存?
答案1
bind 缓存记录的时间不能超过该记录的 TTL(生存时间)。www.google.com 的 TTL 为 5 分钟,因此缓存的记录将在这么长时间后过期。
答案2
我设法通过使用未绑定的 DNS 服务器来实现此目的,将“cache-min-ttl”选项设置为 604800 秒(1 周)。缓存在一周内始终被使用,查询时间在 1 到 3 毫秒之间