在RHEL 6.5上使用bind 9.8.2,运行chroot'd。
我有一个区域文件,其中包括其他文件(这是一个区域,在不同的数据中心有大量的服务器,每个数据中心有一个包含的文件)。
区域文件和包含的文件在
/var/named/chroot/var/named/zones/master/example.com /var/named/chroot/var/named/zones/master/lax01
包含文件在区域文件中相对于chroot'd目录被引用:
$INCLUDE zones/master/lax01
当试图使用dnssec-signzone签署区域时,出现错误,因为它似乎无法加载包含的文件。
# cd /var/named/chroot/var/named/zones/master # dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) \ -N INCREMENT -o example.com -t example.com dnssec-signzone: error: dns_master_load: example.com:287: zones/master/lax01: file not found dnssec-signzone: fatal: failed loading zone from 'example.com': file not found
有没有更好的方法来引用INCLUDE指令的path? 我没有看到指示dnssec-signzone将chroot指令考虑在内的方法。 我需要从一个不同的目录做这个,并参考不同的path?
我不认为你的chroot和这个有什么关系。 即使没有chroot,我仍然期望命令失败。 dnssec-signzone不是从named.conf读取的,并且不知道通过directory选项指定的工作目录。
鉴于这种情况,所有包含的文件将需要相对于您当前的工作目录。 该命令应该按预期工作,如果你这样执行它:
# cd /var/named/chroot/var/named # dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) \ -N INCREMENT -o example.com -t zones/master/example.com
请注意,我们更改的目录实际上是运行时BIND服务器的工作目录。