我正在调试 CentOS Linux 版本 7.5.1804 (Core) 上 Unbound (DNS 解析器软件) 的问题。我在不同的环境中有 2 个虚拟机,它们应该运行相同的 Unbound 软件。
[root@vm1 ~]# rpm -qa | grep unbound
unbound-libs-1.6.6-1.el7.x86_64
unbound-1.6.6-1.el7.x86_64
和:
[root@vm2 ~]# rpm -qa | grep unbound
unbound-libs-1.6.6-1.el7.x86_64
unbound-1.6.6-1.el7.x86_64
两个虚拟机都是 CentOS 7.5.1804(我检查过/etc/redhat-release
)并且运行 CentOS 的最新内核:kernel-3.10.0-862.14.4.el7.x86_64
。
两个虚拟机都有足够的 CPU、RAM 和 HDD 空间。
VM1 是从最小 ISO CentOS 实例化的,而对于 VM2 我记不清楚了。
两个虚拟机都安装了大约 600 个 rpm 包(如果这很重要的话)。它们的 rpm 包有所不同,但它们拥有的所有 rpm 包都是最新的(yum update)。
两个虚拟机都有相同的unbound*.service
文件、相同的unbound.conf
文件以及相同的文件和目录/etc/unbound/
。
我遇到的问题是:
systemctl start unbound.service
(或restart
)在 VM1 上需要大约 1 分钟才能完成。systemctl start unbound.service
(或restart
)在 VM2 上需要 1-2 秒才能完成。
我不确定发生了什么事。
VM1 可能存在什么问题?我该如何调试这样的问题?
答案1
对于遇到此问题的其他任何人。我有一个非常类似的问题,结果发现它与防火墙有关。具体来说,当 unbound 启动时,它会尝试更新 中的根锚点/var/lib/unbound/root.key
。当我尝试手动执行此操作时,运行unbound-anchor -a "/var/lib/unbound/root.key"
到根服务器的 DNS 请求在我的其中一台 unbound 服务器上被阻止,但另一台没有。在被阻止的服务器上,unbound-anchor 命令需要一分钟多的时间才能返回,并且 root.key 文件未更新。
DNS 解析似乎很好,因为/etc/resolv.conf
它指向一个正在运行的递归解析器,但来自未绑定 IP 地址的请求被阻止了。
您可以尝试使用/usr/sbin/unbound -d -vvvv
并检查启动未绑定/var/log/messages
。如果您遇到 DNS 问题,您将看到多次查询根服务器的尝试和sendto failed
错误。
答案2
就我而言,防火墙上的tcp53端口已关闭。