Alibaba Cloud Linux 3系统的ECS实例中unbound服务启动报错Job for unbound.service failed because a timeout was exceeded的解决方案

unbound是一种验证型、递归型、缓存型的DNS解析器,可用于在系统中搭建DNS服务。本文介绍了Alibaba Cloud Linux 3系统的ECS实例中unbound服务启动失败的原因以及解决方案。

问题描述

在Alibaba Cloud Linux 3系统中安装了unbound-1.7.3/unbound-1.16.2版本软件包后,unbound服务启动失败。

系统显示类似如下所示。

# sudo systemctl start unbound
Job for unbound.service failed because a timeout was exceeded.
See "systemctl status unbound.service" and "journalctl -xe" for details.

问题原因

unbound-1.7.3/unbound-1.16.2版本的unbound服务中,ExecStartPre指令发生了变化。新增了通过DISABLE_UNBOUND_ANCHOR变量判断是否执行unbound-anchor命令,同时新增的-f /etc/resolv.conf -R参数指示unbound-anchor命令访问根服务器,以设置或更新用于DNSSEC(Domain Name System Security Extensions)验证的根信任锚点。但是,在没有公网的环境下,unbound-anchor命令无法访问根服务器查询根信任锚点,从而导致unbound服务启动失败。

解决方案

在没有公网的环境下,通过设置环境变量DISABLE_UNBOUND_ANCHOR=yes,可以禁止unbound-anchor命令访问根服务器,从而确保服务能够成功启动。

  1. 打开/etc/sysconfig/unbound文件。

    sudo vim /etc/sysconfig/unbound
  2. i键进入编辑模式,添加以下内容。

    DISABLE_UNBOUND_ANCHOR=yes
  3. Esc键,输入:wq后按Enter键,保存配置。

  4. 启动unbound服务。

    sudo systemctl start unbound

相关文档

关于unbound-anchor命令的详细说明,请参见Unbound