snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

bind9 サービスを正しく停止させる

リブート時に bind サービスの停止が [FAILED] となっていたので 調べると、ランレベル 6 で明示的に停止処理を実行する様にしていなかった事が 原因だった。 chkconfig コマンドで停止処理を正しく登録して対処した。

  • CentOS 4.3
  • bind 9 (RPM)

FAILED となった直接の原因は /etc/rc.d/init.d/named 中で実行される rndc stop での以下のエラー。

rndc: connect failed: network unreachable

調べてみると、rndc stop する前に ネットワーク・インターフェース lo が UP していなかった。

lo        Link encap:Local Loopback
          LOOPBACK  MTU:16436  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2366 (2.3 KiB)  TX bytes:2366 (2.3 KiB)
BIND9 の named は rndc との通信に 127.0.0.1 の 953/tcp ポートを LISTEN しているが、この lo が UP していないので rndc が named に 接続できなかった様だ。

では何処で lo が down しているのか ? リブートの処理順序を追っていく。 リブートのランレベルは 6 なので、まず /etc/rc.d/rc 6 が実行される。 この中から /etc/rc6.d/K* stop が実行され、その後 /etc/rc6.d/S* start が実行される。 今回の場合 /etc/rc6.d には K*named が無かった。

$ ls /etc/rc6.d
K05anacron  K25sshd     K35winbind  K54dovecot  K90network   K99microcode_ctl
K05atd      K30postfix  K40smartd   K60crond    K92iptables  S00killall
K15httpd    K35smb      K50xinetd   K88syslog   K95kudzu     S01reboot
この後 S00killall start の処理で /var/lock/subsys に named が あるので /etc/init.d/named stop が実行される。 よって、lo が down するのは此処より前になる。 そうやって調べて行くと K90network stop の処理で ネットワーク・インターフェースを /sbin/ifdown していた。

という事で K90network の前に named を停止する事が重要であった。 そしてこの事はランレベル 0, 1 でも言える。 /etc/rc.d/init.d/named には停止時の番号が 45 と書かれて いるので、以下の様に実行しておくべきだった。

# /sbin/chkconfig --level 2345 named on
# /sbin/chkconfig --level 016 named off
# ls /etc/rc.d/rc?.d/*named
/etc/rc.d/rc0.d/K45named  /etc/rc.d/rc3.d/S55named  /etc/rc.d/rc6.d/K45named
/etc/rc.d/rc1.d/K45named  /etc/rc.d/rc4.d/S55named
/etc/rc.d/rc2.d/S55named  /etc/rc.d/rc5.d/S55named
スポンサーサイト

Top

HOME

snbhsmt

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。