セカンダリ DNS サーバーを構築する (CentOS 5.5): Linux の使い方


スレーブサーバーを設定する

CentOS 5.5 では DNS サーバーとして BIND が採用されています。

今回は DNS サーバーでドメインを公開する で設定した DNS サーバーの複製(スレーブ)サーバーを構築する方法について、記してみようと思います。この "スレーブサーバー" は、"セカンダリ DNS サーバー" とも呼ばれるようです。

 

BIND のインストール

CentOS 5.5 では、標準では BIND がインストールされていないようでしたので、必要に応じて次のようにしてインストールを行います。

yum install bind

このようにすることで、平成 22 年 12 月 12 日現在、BIND の 9.3.6-4.P1.el5_4.2 をインストールすることが出来ました。

 

BIND の設定ファイルを用意する

BIND の設定ファイルは、CentOS 5.5 では "/etc/named.conf" に用意する必要があります。

ただ、インストール直後にはこのファイルは用意されないようでしたので、最初は自分で作成する必要があります。

 

内容としては、基本的に DNS サーバーでドメインを公開する で設定したマスターサーバーの設定と同じような感じで大丈夫だと思います。

異なる点としては、IP アドレスや所属ネットワークが変われば "acl" の "localnet" や "listener" の設定が変わるのは然ることながら、特に違ってくる点としては、"allow-transfer" や "masters" といった、マスター/スレーブに関わるところとなります。

 

今回はスレーブサーバーですので、スレーブサーバーを示していた "acl slave-servers" の代わりに、"masters" という定義を記載しました。スレーブサーバーの場合には "acl" で定義していましたが、なぜかマスターサーバーについては "masters" という定義が必要になるようです。

この "masters" による方法は、CentOS 5.5 の BIND 9.3.6 ではうまく行ったのですが、CentOS 4.5 の BIND 9.2.4 では "masters" の記載で 'unknown option' と言われてしまい、こちらでは設定できませんでした。

CentOS4.5 でマスターサーバーの IP を一か所で設定する方法については マスターサーバーの IP を一か所で管理する に記してみましたので、必要に応じて参考にしてみてください。

また、"allow-transfer" の設定は、今回構築するサーバーがゾーンファイルを持って別のサーバーへ転送するようなことがない限り必要ないので、ここでは空にしてあります。

そして、今回は "transfer-source" で、マスターサーバーからゾーン情報を取得する際に使用する送信元アドレスを指定しています。マスターサーバーへたどり着ける経路が複数ある場合には、ここで IP を指定することで、意図した IP から接続できるようになります。

後は "zone" の設定で、そのゾーンをスレーブ (slave) として扱うことと、そのゾーンを扱うマスターサーバー、そして取得したゾーン情報を保存するファイル名とを指定します。ここで指定したゾーン情報を保存するファイルは、ゾーン情報が取得されると自動的に作成されます。

ゾーンファイルの保存場所は CentOS 5.5 では "/var/named/slaves" というディレクトリーがあらかじめ用意されていましたので、その中に作成することにしておきました。

 

それを踏まえて、最終的に設定ファイル "/etc/named.conf" は次のような感じになりました。

acl localnet

{

192.168.0.0/24;

127.0.0.1;

};

 

acl listener

{

192.168.0.2;

127.0.0.1;

};

 

masters master-servers

{

192.168.0.1;

};

 

options

{

version "unknown";

directory "/var/named";

 

pid-file "/var/run/named/named.pid";

 

transfer-source 192.168.1.2;

 

recursion no;

 

allow-query

{

any;

};

 

 allow-transfer

{

};

 

forwarders

{

};

 

listen-on

{

listener;

};

};

 

zone "domain.xxx.xx.jp"

{

type slave;

file "slaves/domain.xxx.xx.jp.zone";

 

masters

{

master-servers;

};

};

なお、他にもスレーブサーバー特有の設定として "min-refresh-time" や "min-retry-time" など、ゾーン転送に関する詳細な設定も行えるようですが、今回はマスターサーバーが自分の管轄内というのもあって、そこまで厳密な制御は考えないでおくことにします。

 

BIND を起動する

設定ファイル "/etc/named.conf" が準備できたら、設定の準備は完了です。

スレーブサーバーの場合は、ゾーンファイル (上記の例では "/var/named/slaves/domain.xxx.xx.jp.zone" ファイル) は BIND が自動的に作成しますので、作成しておく必要はありません。

 

準備ができたら、用意した設定内容に間違いがないか、次のようにして設定内容が正しいかどうかを確認します。

service named configtest

これで、何も表示されないか、"zone domain.xxx.xx.xx/IN: loaded serial 2010121201" といった記載が羅列される感じなら、設定が問題なく行えた感じになると思います。

 

設定内容に間違いがなければ、次のようにして DNS サーバーを起動させます。

service named start

今後も Linux 起動時に DNS サーバーを自動起動する場合には、次のようにしておきます。

chkconfig named on

これで DNS サーバーの設定と稼働が整いました。

 

スレーブサーバーでも、マスターサーバーと同様に 53/UDP と、時には 53/TCP を使用しますので、iptables 等によるパケットフィルターが有効になっている場合にはその設定を調整する必要があると思います。

送信元は任意のポートを使用するので、任意のポートから 53 番への通信を許可する感じになります。