named-chroot が chrootしてくれず "open: /etc/named.conf: file not found" と主張してくる件
お久しぶりです。
最近はCentOS6のサーバをCentOS7にリプレースするタスクに主に注力しておりました。
対象サーバ8台のうちにDNSサーバも入っており、構築中にハマった点を記しておきます。
chroot環境なのにchroot内の/etc/named.confを参照してくれず困りました。
/etc/sysconfig/named にもchrootしてるよーって書いていますが、
[root@ns2 etc]# cat /etc/sysconfig/named OPTIONS="-4" ROOTDIR="/var/named/chroot"
systemctl start named-chroot すると起動しません。
[root@ns2 etc]# systemctl status named-chroot ● named-chroot.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since 日 2016-09-04 12:29:25 JST; 11min ago Process: 18080 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=1/FAILURE) 9月 04 12:29:24 ns2.charakoba.com systemd[1]: Starting Berkeley Internet Name Domain (DNS)... 9月 04 12:29:25 ns2.charakoba.com bash[18080]: open: /etc/named.conf: file not found 9月 04 12:29:25 ns2.charakoba.com systemd[1]: named-chroot.service: control process exited, code=exited status=1 9月 04 12:29:25 ns2.charakoba.com systemd[1]: Failed to start Berkeley Internet Name Domain (DNS). 9月 04 12:29:25 ns2.charakoba.com systemd[1]: Unit named-chroot.service entered failed state. 9月 04 12:29:25 ns2.charakoba.com systemd[1]: named-chroot.service failed.
そこで、/usr/lib/systemd/system/named-chroot.service を覗いてみることにしました。
# Don't forget to add "$AddUnixListenSocket /var/named/chroot/dev/log" # line to your /etc/rsyslog.conf file. Otherwise your logging becomes # broken when rsyslogd daemon is restarted (due update, for example). [Unit] Description=Berkeley Internet Name Domain (DNS) Wants=nss-lookup.target Requires=named-chroot-setup.service Before=nss-lookup.target After=network.target After=named-chroot-setup.service [Service] Type=forking EnvironmentFile=-/etc/sysconfig/named Environment=KRB5_KTNAME=/etc/named.keytab PIDFile=/var/named/chroot/run/named/named.pid ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi' ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID' ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID' PrivateTmp=false [Install] WantedBy=multi-user.target
環境変数を読み込んでるっぽいところを発見しましたが、パスの前に"-"がついてるのが気になったので
EnvironmentFile=-/etc/sysconfig/named
"-"を削除してみました。
EnvironmentFile=/etc/sysconfig/named
その後
$ systemctl daemon-reload $ systemctl start named-chroot
するとちゃんと動くようになりました。
[root@ns2 named]# systemctl status named-chroot ● named-chroot.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled) Active: active (running) since 日 2016-09-04 13:06:15 JST; 4min 33s ago Process: 19239 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS) Process: 19312 ExecStart=/usr/sbin/named -u named -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS) Process: 19309 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 19314 (named) CGroup: /system.slice/named-chroot.service └─19314 /usr/sbin/named -u named -t /var/named/chroot -4 9月 04 13:06:15 ns2.charakoba.com named[19314]: sizing zone task pool based on 3 zones 9月 04 13:06:15 ns2.charakoba.com named[19314]: set up managed keys zone for view internal, file '/var/named/dynamic/3bed2cb3a3acf7b6a8ef408420cc...f.mkeys' 9月 04 13:06:15 ns2.charakoba.com named[19314]: command channel listening on 127.0.0.1#953 9月 04 13:06:15 ns2.charakoba.com named[19314]: managed-keys-zone/internal: journal file is out of date: removing journal file 9月 04 13:06:15 ns2.charakoba.com named[19314]: managed-keys-zone/internal: loaded serial 2 9月 04 13:06:15 ns2.charakoba.com named[19314]: zone 11.168.192.in-addr.arpa/IN/internal: loaded serial 2011062001 9月 04 13:06:15 ns2.charakoba.com named[19314]: zone charakoba.com/IN/internal: loaded serial 2011062001 9月 04 13:06:15 ns2.charakoba.com named[19314]: all zones loaded 9月 04 13:06:15 ns2.charakoba.com named[19314]: running 9月 04 13:06:15 ns2.charakoba.com systemd[1]: Started Berkeley Internet Name Domain (DNS). Hint: Some lines were ellipsized, use -l to show in full.