在 Debian 9 上,我将 bind9 (v.9.10.3) 配置为缓存服务器,稍后再配置为转发服务器。出于测试目的,我没有任何防火墙,而是从内部局域网千兆位进行测试。Bind 可以工作,但性能不太好,例如:
dig aruba.it @192.168.50.35 (my BIND)
Query time: 129 msec
dig aruba.it @8.8.8.8
Query time: 20 msec
nmap -sT -p 53 192.168.50.35
Starting Nmap 7.60 ( https://nmap.org ) at 2017-11-06 14:31 CET
Nmap scan report for 192.168.50.35
Host is up (0.0014s latency).
ping -c5 192.168.50.35
PING 192.168.50.35 (192.168.50.35) 56(84) bytes of data.
64 bytes from 192.168.50.35: icmp_seq=1 ttl=64 time=1.31 ms
64 bytes from 192.168.50.35: icmp_seq=2 ttl=64 time=1.34 ms
64 bytes from 192.168.50.35: icmp_seq=3 ttl=64 time=1.33 ms
64 bytes from 192.168.50.35: icmp_seq=4 ttl=64 time=5.56 ms
64 bytes from 192.168.50.35: icmp_seq=5 ttl=64 time=1.32 ms
--- 192.168.50.35 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 1.312/2.177/5.561/1.692 ms
所有域都会发生这种情况。切换转发器绑定配置时,我遇到了同样的问题:查询速度很慢。
这是本地 DNS 的正确查询时间吗?
cat /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
// uncomment these to switch to forwarders
// forwarders {
// 8.8.8.8;
// 8.8.4.4;
// };
dnssec-validation auto;
listen-on port 53 { localhost; 192.168.50.0/24; };
allow-query { localhost; 192.168.50.0/24; };
recursion yes;
};
禁用 IPv6 不会改变任何东西。
答案1
一种可能的解释是缓存。DNS 记录缓存在 DNS 服务器中(也缓存在客户端中)。Google DNS 是全球许多用户使用的公共 DNS 服务器。因此,请求的名称很可能最近已由 Google DNS 解析。这意味着与本地 DNS 服务器相比,响应时间更短。
另一个原因是 Google 所做的优化和调整。这样的公共 DNS 服务器必须进行优化才能处理其接收的流量。
顺便说一句,您可以通过重复向服务器发送 DNS 查询来验证缓存效果。从第二次开始,您将获得更好的响应时间(结果已被缓存)。