BIND 无法查询外部 DNS 记录

BIND 无法查询外部 DNS 记录

不幸的是,我是一名业余系统管理员,无法弄清楚 BIND (9.8) 出了什么问题。我们有两个旧的 Samba 服务器,我们将其用作活动目录域控制器,因此它们也是我们的 DNS 服务器。今天突然之间,我们所有的外部 DNS 请求都开始失败,而内部请求仍然有效。例如(出于安全考虑所有 IP 地址均被删除):

adminlocal@srvdc2:~$ dig +trace +additional google.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> +trace +additional google.com
;; global options: +cmd
.                       19357   IN      NS      a.root-servers.net.
.                       19357   IN      NS      m.root-servers.net.
.                       19357   IN      NS      d.root-servers.net.
.                       19357   IN      NS      l.root-servers.net.
.                       19357   IN      NS      c.root-servers.net.
.                       19357   IN      NS      i.root-servers.net.
.                       19357   IN      NS      e.root-servers.net.
.                       19357   IN      NS      k.root-servers.net.
.                       19357   IN      NS      g.root-servers.net.
.                       19357   IN      NS      f.root-servers.net.
.                       19357   IN      NS      h.root-servers.net.
.                       19357   IN      NS      b.root-servers.net.
.                       19357   IN      NS      j.root-servers.net.
;; Received 228 bytes from xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx) in 123019 ms

.                       3600    IN      NS      FWDR-166.FWDR-35.FWDR-80.FWDR-91.
.                       3600    IN      NS      FWDR-133.FWDR-35.FWDR-80.FWDR-91.
FWDR-166.FWDR-35.FWDR-80.FWDR-91. 3600 IN A     91.80.35.166
FWDR-133.FWDR-35.FWDR-80.FWDR-91. 3600 IN A     91.80.35.133
;; BAD (HORIZONTAL) REFERRAL
dig: couldn't get address for 'FWDR-166.FWDR-35.FWDR-80.FWDR-91': no more

但是,互联网可以正常运作,所以我可以正常 ping Google 的服务器:

adminlocal@srvdc2:~$ ping 216.58.208.174
PING 216.58.208.174 (216.58.208.174) 56(84) bytes of data.
64 bytes from 216.58.208.174: icmp_req=1 ttl=53 time=48.9 ms
64 bytes from 216.58.208.174: icmp_req=2 ttl=53 time=49.4 ms

我还可以通过另一台服务器发出 DNS 请求:

root@srvdc2:/etc/bind# dig @1.1.1.1 google.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @1.1.1.1 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34033
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             96      IN      A       172.217.21.78

;; Query time: 61 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Fri Mar 27 17:42:22 2020
;; MSG SIZE  rcvd: 44

此外,/var/log/messages我发现它named一直在产生一堆错误:

root@srvdc2:~# tail /var/log/messages
Mar 27 17:26:13 srvdc2 rsyslogd-2177: imuxsock begins to drop messages from pid 2105 due to rate-limiting
Mar 27 17:26:17 srvdc2 rsyslogd-2177: imuxsock lost 55 messages from pid 2105 due to rate-limiting
Mar 27 17:26:26 srvdc2 rsyslogd-2177: imuxsock begins to drop messages from pid 2105 due to rate-limiting
Mar 27 17:26:29 srvdc2 rsyslogd-2177: imuxsock lost 68 messages from pid 2105 due to rate-limiting
...
root@srvdc2:~# ps -ef | grep 2105
bind      2105     1  1 17:11 ?        00:00:16 /usr/sbin/named -u bind

当然,如果我强制 DNS 指向外部 DNS 服务器,互联网可以在机器上工作,但随后它们将无法访问内部资源。有人知道我可以做什么来了解有关该问题的更多信息吗?

真诚感谢您提供的任何帮助。

答案1

所以,我不太明白为什么,但问题出在上游网关。它列出了 4 个 DNS 服务器(2 个由 ISP 提供,2 个备份),但显然两个备份 DNS 服务器正在由 BIND 使用(我猜想它正在以中继模式工作……?)。因此,无论出于什么原因,这两个外部 DNS 服务器都停止工作,因此当本地 BIND 服务器尝试将请求发送到更高层时,每个经过本地 BIND 服务器的外部 DNS 请求都会失败。

解决方案:我删除了对这两个服务器的引用,并用 Cloudflare DNS 替换它们。

感谢所有花时间回答这个问题的人!

相关内容