我在路由器 PC 上设置了 bind9。它充当我家庭网络中所有机器的 DNS 服务器。它配置为仅将 DNS 请求转发到 stubby(在本地监听端口 54321),然后 stubby 通过 TLS 将这些 DNS 请求安全地发送到某个全局 DNS 服务器。通常情况下,它工作正常,除非发生超时,如下所示(取自系统日志):
Feb 05 15:51:19 router named[512]: timed out resolving 'accounts.youtube.com/A/IN': 127.0.0.1#54321
当我打开时tcpdump
,我发现这些超时请求正在以明文形式通过端口 53 发送到随机 (?) 名称服务器。由于没有耐心进行故障排除,我只能阻止端口 53 上的传出数据包,现在tcpdump
在超时日志之后,系统日志中出现了一些新日志(显然,PCAPS 中不再显示此类请求):
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.5.6.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.33.14.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.26.92.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.31.80.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.35.51.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.42.93.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.54.112.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.43.172.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.48.79.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.52.178.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.41.162.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.55.83.30#53
Feb 05 15:51:19 router named[512]: permission denied resolving 'accounts.youtube.com/A/IN': 192.12.94.30#53
发生了什么事?为什么 bind9 会故障转移到所有这些 DNS 服务器,完全绕过配置为唯一转发器的 stubby?这是我的named.conf.options
文件:
options {
directory "/var/cache/bind";
forwarders {
127.0.0.1 port 54321;
};
dnssec-validation yes;
allow-recursion { localhost; localnets; 192.168.0.0/24; };
listen-on { 127.0.0.1; 192.168.0.0; };
listen-on-v6 { none; };
};
我已配置 DHCP 服务器,以便它为网络中的所有计算机(包括路由器)设置所有网络接口,以便它们仅使用在路由器 PC 上运行的我自己的 DNS 服务器,因此我相信(日志似乎证实了这一点)bind9 本身决定尝试其他 DNS 服务器,而无需我明确允许。出现了三个问题:
- 它为什么会这样做?
- 它将名称服务器故障转移到哪里?
- 我该如何禁止它这样做?虽然阻止端口 53 上的传出流量有效,但我仍然有日志被丢弃,因为它尝试尝试其他 DNS 服务器来解决超时请求,我不喜欢这样。