/bind-chrootでDNSサーバ構築時にハマりやすいポイント2017.06.13bind-chrootでDNSサーバ構築時にハマりやすいポイントこんにちは、じんないです。9.9.4を使って内部DNSサーバの構築をしていました。bindによるDNSサーバの構築事例はたくさんありますが、どうもエラーが発生しうまくいきませんでした。今回は同じような経験をされている方やbindを始めたばかりという方に、bind-chrootで注意しておきたいポイントを紹介します。前提としてnamed.confやゾーンファイルの書き方は記載していません。概要bindを使ったDNSサーバの構築事例を見ていると、以下のような手順が多く見受けられます。bindのインストールchroot化のスクリプト実行named.confの編集ゾーンファイルの作成named-chrootの起動すんなりいけばいいのですが、5の起動が失敗した場合に「あれ、さっきまであったファイルがなくなったぞ!」となってしまうだけでなく、あれこれいじっている間にエラーのスパイラルに陥ってしまいます。そのようなことになるのかを紐解いていきますが、結論から言うと「chroot化のスクリプト実行」がよくないなのです。bind-chrootのインストールと共に自動で生成されます。そもそもchroot化ってルートディレクトリを変更することを言います。/var/named/chrootがルートディレクトリになります。プロセスがアクセス可能な範囲を制限することが目的です。万が一攻撃された場合に必要外のファイルを参照させないなど、セキュリティ面において実施されることが多いかと思います。chroot化のスクリプトがやっていることchroot化のスクリプトとして、以下のコマンドを実行しています。onこれは何をしているかというと、bindに必要なディレクトリとファイルを/var/named/chrootにマウントしているんですね。例を挙げると以下のような感じです。/var/named/chroot/var/named/”ゾーンファイル”これをoffにするとマウントは解除されます。offし、lsコマンド等でマウントの動きを見てみることをおすすめします。アンマウントが自動的に行われています。本来は「chroot化のスクリプト実行」をする必要がないんです。named-chrootの起動」で失敗した場合、マウントが解除されてしまって当の本人は「あれ、さっきまであったファイルがなくなったぞ!」とパニックになるわけです。bindのstatusにも「このファイルがない」「あのファイルがない」とエラーがでて、いろいろいじくっていたら何がなんだかわからないという状態に。私もこれにはずいぶんとハマりました。ハマらないための構築手順chrootでハマらないためにはchroot化スクリプトを使わないことと、マウントされたファイルは触らないことに注意して以下の手順で構築してみてください。コマンドを使うために必要です。named-chroot.serviceOS起動時に自動起動させる場合は、以下もあわせて実施してください。named-chroot.service設定の編集が必要になった場合は、サービスを停止させて2~4の手順を踏めば大丈夫です。繰り返しになりますが、最初にchroot化しないことでハマる確立はぐっと下がります。作業前にはバックアップやスナップショットとっておき、いつでもクリーンな状態に戻せるようにしておくとさらにgoodです。bindでハマるとなかなか抜け出せませんが、あきらめずトライしてみてください。LinuxSNSでもご購読できます。TwitterでフォローするFeedlyでフォローするじんないインフラ担当してます。関西の某お笑い芸人に似ていると言われます。でっかいものと、美しいものが好きです。