需要有关 bind-chroot 的帮助
我们正在运行以下版本的 bind 和 bind-chroot
绑定-9.11.2-lp151.10.1.x86_64
绑定-chrootenv-9.11.2-lp151.10.1.x86_64
我们的自动化代码正在运行,仅将区域文件添加到 /var/lib/named/etc/named.conf,而不是添加到 /etc/named.conf
因此,为了在 /etc/named.conf 中反映在 /var/lib/named/etc/named.conf 中创建的区域文件,我在 /etc 中创建了一个符号链接,即“ln -s /var/lib/named/etc/named.conf named.conf”,以如下方式反映 lrwxrwxrwx 1 root root 29 Dec 9 11:03 named.conf -> /var/lib/named/etc/named.conf
现在,当我对 /var/lib/named/etc/named.conf 中的文件进行更改并执行“服务名为重新启动”时,/etc/named.conf 中的文件无法加载
/var/log/messages 中的错误消息如下
2021-12-09T11:04:46.684677+05:30 lavasadns1 systemd[1]: Stopped Berkeley Internet Name Domain (DNS). 2021-12-09T11:04:46.685049+05:30 lavasadns1 systemd[1]: Starting Berkeley Internet Name Domain (DNS)... 2021-12-09T11:04:46.735359+05:30 lavasadns1 named.init[2509]: Starting name server BIND cp: cannot stat '/etc/named.conf': No such file or directory 2021-12-09T11:04:46.844546+05:30 lavasadns1 named.init[2509]: open: /etc/named.conf: file not found 2021-12-09T11:04:46.847806+05:30 lavasadns1 systemd[1]: named.service: Control process exited, code=exited status=6 2021-12-09T11:04:46.848137+05:30 lavasadns1 systemd[1]: Failed to start Berkeley Internet Name Domain (DNS). 2021-12-09T11:04:46.848475+05:30 lavasadns1 systemd[1]: named.service: Unit entered failed state. 2021-12-09T11:04:46.848772+05:30 lavasadns1 systemd[1]: named.service: Failed with result 'exit-code'. 2021-12-09T11:05:31.657460+05:30 lavasadns1 systemd[1]: Starting Berkeley Internet Name Domain (DNS)... 2021-12-09T11:05:31.666976+05:30 lavasadns1 named.init[2573]: Name server configuration file /etc/named.conf does not exist.
并且符号链接的颜色变为红色。为什么会发生这种情况?如何避免此错误
答案1
开始bind
/named
运行/usr/sbin/named.init
。
其中有一个名为的函数checkAndCopyConfigFiles
。
其中有一行rm -f ${CHROOT_PREFIX}/${configfile}
您创建了一个从/etc/named.conf
到 的符号链接/var/lib/named/etc/named.conf
,现在当该脚本运行时,它会删除/var/lib/named/etc/named.conf
。
因此,脚本删除了/var/lib/named/etc/named.conf
,并尝试复制符号链接的端点,/etc/named.conf
但该端点不再存在,因为它已经被删除。
这会导致悬空的符号链接引用,从而变成red
。
您的作品named.conf
已不复存在。
如果你能把它拿回来,你有 3 个选择。
- 让您的代码改变
/etc/named.conf
和 其中的任何其他文件/etc/
(而不是 其中的文件)/var/lib/named/etc
。 - 编辑
/usr/sbin/named.init
并制作您自己的方法来处理这种情况。 - 删除
bind-chrootenv
并制作您自己的启动脚本。