問題の発覚
DNS Slave として動作していたが、syslog を見るとエラーが出ていた
Jun 16 12:52:23 XXXX named[19280]: dumping master file: /etc/bind/slaves/tmp-4FQYi7Y1cp: open: permission denied
Jun 16 12:52:23 XXXX kernel: [610023.609770] audit: type=1400 audit(1655351543.314:837): apparmor="DENIED" operation="mknod" profile="/usr/sbin/named" name="/etc/bind/slaves/tmp-4FQYi7Y1cp" pid=19280 comm="isc-worker0000" requested_mask="c" denied_mask="c" fsuid=103 ouid=103
確かに必要なファイルが転送されていない
$ ls -l /etc/bind/slaves
合計 40
-rw-r--r-- 1 bind bind 18190 6月 16 09:53 5.168.192.in-addr.arpa
(略)
※当方の環境ではほかに 1.168.192.in-addr.arpa と 10.168.192.in-addr.arpa が転送されていなければならない
環境
OS
Ubuntu 18.04LTS Server(14.04LTS から 16.04LTS を経てアップグレードしている)
named
$ /usr/sbin/named -v
BIND 9.11.3-1ubuntu1.17-Ubuntu (Extended Support Version) <id:a375815>
解決
ググると AppArmor の設定で named がファイルを書き込むディレクトリの制限を緩和すると出てくる。
$ cat /etc/apparmor.d/usr.sbin.named
(略)
/usr/sbin/named {
(略)
/etc/bind/slaves/** rw,
(略)
}
すでに読み書きは許可されているように見える。
実はロックに対しても緩和する必要があった。すでにあるファイルに対しては読み書きはできていたようだが、新規にファイルを生成するときにエラーになっていた模様。
$ diff /etc/apparmor.d/usr.sbin.named{.bak,}
20c20
< /etc/bind/slaves/** rw,
---
> /etc/bind/slaves/** rwk,
AppArmor をリロードして書き換えた設定を有効にする
$ sudo systemctl reload apparmor
しばらくして /etc/bind/slaves を確認すると、想定していたファイルが書き込まれていた🎉
$ ls -l /etc/bind/slaves/
合計 104
-rw-r--r-- 1 bind bind 17849 6月 16 14:30 1.168.192.in-addr.arpa
-rw-r--r-- 1 bind bind 18394 6月 16 14:34 10.168.192.in-addr.arpa
-rw-r--r-- 1 bind bind 18190 6月 16 11:57 5.168.192.in-addr.arpa
(略)
syslog のエラーも消えた🎊