问题:您正在运行某个 Debian 发行版,例如 Ubuntu Server 18.04 或 20.04。您在 /etc/bind/named.conf 中指定了一个 IP 地址参数:
查询源地址192.168.30.2; 监听 { 127.0.0.1; 192.168.30.2; };
还有,nutz。现在 bind9 启动在启动时中止,并显示类似以下内容的系统日志错误:
11 月 8 日 11:06:52 cygnus named[1333]: 无法获取查询源调度程序 (192.168.30.2#0) 11 月 8 日 11:06:52 cygnus 命名[1333]:加载配置:地址不可用 11 月 8 日 11:06:52 cygnus named[1333]: 退出(由于致命错误) 11 月 8 日 11:06:52 cygnus systemd[1]: bind9.service: 主进程已退出,代码=已退出,状态=1/失败 11 月 8 日 11:06:52 cygnus systemd[1]: bind9.service: 失败,结果为“退出代码”。
但是,您可以手动运行 init.d 脚本,使用以下命令:
/etc/init.d/bind9 启动
bind9 启动正常。您已启动 bind9 的调试,但日志记录只是不断报告 [正确,但可能缺乏详细性] 所需的 IP 地址不可用。
您搜索了 InnerTubes 并注意到,在过去十年中,该问题已多次作为错误报告给 ISC,但被拒绝,因为这不是错误。[没错;这不是 ISC BIND9 错误。]
呼呼。
答案1
以下答案由问题作者提交,他最初将答案作为问题的一部分发布:
解决方案:在以下位置发现了可操作的线索 https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
[帖子的开头是一篇长篇大论,描述了对特定 systemd 配置参数的潜在误解。具体来说,它指出 *.service 文件中的“network.target”参数并不意味着任何正常人可能期望的术语“network.target”的含义。“loaded.bananas”的含义也是如此。所以这真的不是 bind9 发行版管理员的错。不是的;他们可能是正常人。也许吧?]
如果你真的很着急,可以跳到“别废话了!我如何确保我的服务启动后网络是真的在线的?”您将在此处阅读有关如何解决该问题的信息。总结一下 bind9 的情况——
编辑:
vi /etc/systemd/system/multi-user.target.wants/bind9.service
代替:
After=network.target(看到了 FUBAR 吗?没有?因此才有这篇长篇大论。)
和:
之后=网络在线.目标 想要=网络在线.目标
保存文件。重启:
初始化 6
重新登录,验证 bind9 是否已按您希望的方式启动。
root@cygnus:/etc/bind# ps ajx | grep 命名 1 1704 1704 1704 ? -1 Ssl 121 0:01 /usr/sbin/named -f -u bind 或者可能: root@draco:/etc/bind# ps ajx | grep 命名 1 1258 1258 1258 ? -1 Ssl 110 0:02 /usr/sbin/named -f -u bind -t /var/lib/named -c /etc/bind/named.conf
附言:发行商 -- 请查看全部*.service 配置;这种阴险的“network.target”误解可能并不是唯一的。
PPS:Grr:“创建新标签‘监听名为 network.target’需要至少 300 点声望。请尝试使用现有标签列表中的内容。”