#前提
BIND9で権限関係をどんなに調整しても、slaveのサーバーでzoneファイルが反映されなかった時のメモ。
#今回ぶつかった壁
CentOS 7 のBINDを設定する (プライマリ コンテンツサーバー)
上記サイトを参考にしながらmaster1台、slave2台のDNSサーバーを構築していたところ、masterで作成したzoneの情報がslaveの方に反映されなくて涙目に…。
#環境
OS | DNS |
---|---|
CentOS 7.2 | BIND 9.9.4-29 |
#やったこと
yum -y install bind bind-utils bind-chroot
して、サイトの通りに色々やったができない…。
もちろん53番ポートも開けてある。
##とりあえずログを見てみる
zone example.com/IN: transfer: could not set file modification time of 'slaves/example.com.zone': permission denied
ん?permission denied
?
権限が足りてないってか…。
##ならNo permission deniedにしてやろう
chown -R named:named /var/named
chmod -R u+rwx /var/named
これで文句は無いだろう、とnamed-chroot
を再起動してログを確認。
zone example.com/IN: transfer: could not set file modification time of 'slaves/example.com.zone': permission denied
うーん、寸分違わぬ感じで…。
##エラー内容の精査
セカンダリDNSサーバで出力されるエラーです。
セカンダリDNSサーバは、ゾーンのリフレッシュをするとゾーンファイルの更新を行います。(これによって最終更新時間が変わります)
しかし、namedサービスを起動しているユーザがそのゾーンファイルの更新を許可されていないためにゾーン転送に失敗してしまいます。
ゾーンファイルのあるディレクトリやゾーンファイルのパーミッションを、namedサービスを起動しているユーザが書き込めるように変更してください。
いや、書き込める様にしてるんだよなー、と思いつつ、ふと思い立ってgetenforce
してみる。
# getenforce
Enforcing
…うん、どう考えてもこれだ。
急いで環境構築したからSELINUX無効にし忘れてた…。
##確認してみる
取り敢えず無効にして確認してみる。
# setenforce 0
# getenforce
Permissive
zone example.com/IN: transferred serial 2016102001
キマシタワァ・゜゚・:.。..。.:・゜(n'∀')η゚・:.。..。.:・゜゚・