2014年5月2日

マウントされたファイルはマウント元をアップデートすべし

Fedroraでは、セキュリティ向上のため、named(BIND)は/var/named/chroot/というディレクトリにchrootして実行するようになっている。ところがこのchrootはデフォルトオプションで、普通のルートでも実行できる。/var/named/chroot/の下には、namedの実行ようの最小限のファイルツリーが必要。これらのファイルは当然「本物の」ルートの下のそれと重複するが、これらは別個のファイルではなく、namedのスタートアップスクリプトが(ほとんどはディレクトリごと)/var/named/chroot/の下のサブディレクトリにBINDのマウントをしている。ハードリンクを作るより明示的で間違いない。

例えば、/var/named//var/named/chroot/var/named/にマウントされるので、namedが/var/named/chroot/にchrootしてもしなくても同一の/var/named/が見える。

ところで我が家のメインDNSサーバは、スパムメイル受信低減とセキュリティ対策のためにdnsblというスクリプトをcronで定期的に起動し、外部のIPアドレスブラックリストを走査し、/var/named/named.dnsblというゾーンファイルを作成してnamedに再ロードさせている。ところが、どういうわけか、このスクリプトがゾーンファイルを/var/named/chroot/var/named/named.dnsblに作成するようになっていた。

定常状態では/var/named/named.dnsblでも/var/named/chroot/var/named/named.dnsblでも同じことだが、システムの起動と終了時にはレイス状態が発生し、/var/named/chroot/var/named/named.dnsblが/var/named/named.dnsblのマウントではなく本物のファイルが作成されてしまうことがある。namedのスタートアップスクリプトはマウント先のディレクトリ(この場合は/var/named/chroot/var/named/)が空であることを確認しており、もし余計なファイルがあるとスタートアップスクリプトがエラー終了し、namedが動作しない。namedが動作しないとあとに続くいろいろなサービスが正常動作せず、結局スタートアップそのものが滞ってしまいシステムが起動できなくなることがあった。

スタートアップのログを見て問題はnamedにあるとの大よその見当はついたので、FedroraのインストールDVDをレスキューモードで起動してHDD上の/var/named/chroot/var/named/named.dnsblを削除してシステムを再起動したらあっさり動いた。持ちおrンスクリプトを変更してマウント先ではなくマウント元を更新するようにした。

と言うと簡単に片付いたように聞こえるが、実は先代のサーバハードウェアから引き続き使っていたPATAのDVDドライブがDVDを読み込めず、山ほどある在庫から持ってきたもう1台のDVDドライブも動作せず、3台目のドライブにして漸く正常動作をしたという逸話付きだ。いやあ大変な数時間だった。

0 件のコメント:

コメントを投稿