カスタム検索
tomo.gif (1144 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)To previous pageTo home pageMailing to me

スレーブサーバーに関する小技

Modified: 1 December 2002


スレーブサーバーを設置する方法1 December 2002
TSIG認証でゾーン転送を行わせる方法 (1 December 2002)
サブドメインへ任せる(権限委譲をする)方法1 December 2002
NSレコードに記述していないスレーブサーバーに更新されたことを通知する方法1 December 2002


 スレーブサーバーを設置する方法

スレーブサーバーの設定の概要

スレーブサーバーは、マスターサーバーが機能動作ししないときに、代わりに機能を果たしてくれます。したがって、デフォルトに設定されているヒントゾーンとローカルゾーンの指定はそのまま必要です。

自分のマスターとなるサーバーのゾーンの情報に、マスターサーバーのIPアドレスと自分がスレーブであること宣言し、管理するIPアドレスを保管するファイル名を書いて、保管するファイルを決めます。

マスターでは、実際に、ホストとIPアドレスの対応表を記述しますが、スレーブでは、マスターからコピーを保管しますので、ファイル名を指定するだけでOKです。


スレーブサーバーの"named.conf"

以下のように指定します。

// generated by named-bootconf.pl

options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
};

//
// a caching only nameserver config
//
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
        type hint;
        file "named.ca";
};

zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

zone "tomo.ac" IN {
        type slave;
        masters { 192.168.0.85; };
        file "tomo.ac.zone";
};

zone "0.168.192.in-addr.arpa" IN {
        type slave;
        masters { 192.168.0.85; };
        file "named.tomo.ac";
};

include "/etc/rndc.key";

マスターサーバーとの違いは、マスターサーバーでは、自分がマスターとして動作することを指定するだけですが、スレーブサーバーでは、自分がスレーブとして動作することと、親であるマスターサーバーのIPアドレスを指定することです。

上記のように、スレーブであることの指定と、対応するマスターサーバーのIPアドレスを指定して、BINDを再起動すると、早速、ドメイン情報がコピーされます。

マスターサーバー側は、デフォルトでは、どのサーバーから転送要求でも受付け、要求があれば転送します。


マスターサーバーの"named.conf"

マスターサーバーの指定では、デフォルトでスレーブサーバーからの転送を受け付けますので、スレーブサーバーを設置する場合の変更は不要です。

しかしながら、どのホストからの要求でも受け付けるのは、セキュリティ上好ましくありませんので、許可するスレーブサーバーを特定したほうが安全です。

したがって、以下のように転送要求に応えるホストのIPアドレスを指定すべきです。

         :
         :

zone "tomo.ac" IN {
        type master;
        allow-transfer {
            192.168.0.86;
        };

        file "
tomo.ac.zone";
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        allow-transfer {
            192.168.0.86;
        };

        file "
named.tomo.ac";
};

         :
         :


結果

スレーブで指定されたファイル名が、"/var/named/"内に作られます。内容を見るとマスターで指定した内容がコピーされ記述されています。


 TSIG認証でゾーン転送を行わせる方法

どういうことか

ゾーン転送では、マスターになりすまして、スレーブサーバーに誤ったデータを転送させられてしまう危険があります。そこで、自分がゾーン転送要求するマスターを特定するために、秘密鍵を使って認証させると安全です。


キーを生成する

以下のコマンドで、キーを生成します。

# /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n HOST rh73-8586-bind
Krh73-8586-bind.+157+49195
#

以下の2つのファイルが生成されます。

"Krh73-8586-bind.+157+49195.key"は、以下の内容です。

rh73-8586-bind. IN KEY 512 3 157 S05o+u4t9qFY+zHABt1xxZ55+GbW3ammUuXFvIOCsLl8Kfx/afBwOWiT q4iazVF8Rs3t23jmagCvR6gWVp+hDQ==

"Krh73-8586-bind.+157+49195.private"は、以下の内容です。

rPrivate-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: S05o+u4t9qFY+zHABt1xxZ55+GbW3ammUuXFvIOCsLl8Kfx/afBwOWiTq4iazVF8Rs3t23jmagCvR6gWVp+hDQ==


マスターの"named.conf"に追加します

"key"を追加し、"allow-transfer" を変更します。

"allow-transfer" は、IPアドレスの代わりに、認証キーの名前にします。

        :
        :

key "rh73-8586-bind" {
      algorithm hmac-md5;
      secret "S05o+u4t9qFY+zHABt1xxZ55+GbW3ammUuXFvIOCsLl8Kfx/afBwOWiTq4iazVF8Rs3t23jmagCvR6gWVp+hDQ==";
};
        :
        :
        :

zone "tomo.ac" IN {
        type master;
        allow-transfer {
                key rh73-8586-bind;
        };
        file "tomo.ac.zone";
};

zone "0.168.192.in-addr.arpa" IN {
        type master;
        allow-transfer {
                key rh73-8586-bind;
        };
        file "named.tomo.ac";
};
        :
        :


スレーブの"named.conf"に追加します

"key"を追加し、"server" を定義します。

        :
        :

key "rh73-8586-bind" {
      algorithm hmac-md5;
      secret "S05o+u4t9qFY+zHABt1xxZ55+GbW3ammUuXFvIOCsLl8Kfx/afBwOWiTq4iazVF8Rs
3t23jmagCvR6gWVp+hDQ==";
};

server 192.168.0.85 {
        keys "rh73-8586-bind";
};
        :
        :

"key"でなく、"keys"です。間違えるとゾーン転送がうまく働きません。


動作確認する

確実に動作確認するには、

まず、スレーブサーバーを再起動します。

次に、マスターのゾーンファイルを開き、シリアル番号を増やし、マスターサーバーを再起動します。

スレーブサーバーの"/var/named"を確認し、転送されたことを確認します。


 サブドメインへ任せる(権限委譲をする)方法 

DNSの仕組みの確認

DNSは、自分が管理しているIPアドレスについては、回答しますが、分からない場合、下位のDNSのサーバーを知らせて、役割を終えます。

基本的にはすべてのドメインは、最初にルートサーバーに問い合わせます。

しかしこのルートサーバーは、実はどのIPアドレスも管理していません。ルートサーバは末尾の文字列を見て、どのDNSサーバーに問い合わせるべきかを教えてくれます。つまり、"jp"なら日本のDNSに問い合わせるよう、日本のDNSサーバーを教えてくれます。

下位のDNSの指定方法

DNSの存在は、"NS"レコードで指定します。

tomo.ac        IN NS  dns.tomo.ac
osaka.tomo.ac  IN NS  osaka.tomo.ac

上記の例では、"tomo.ac"は、"dns.tomo.ac"が管理する。ただし、"tomo.ac"だが"osaka.tomo.ac"のサブドメインは、"osaka.tomo.ac"が管理するという指定です。

"xxx.tomo.ac"の問い合わせがあると、そのIPアドレスを返答しますが、"xxxx.osaka.tomo.ac"の問い合わせがあると、"osaka.tomo.ac"に聞いてくださいと返答します。


 NSレコードに記述していないスレーブサーバーに更新されたことを通知する方法

更新を通知する方法

マスターサーバーは、内容が更新されたら、更新された旨をスレーブサーバーに通知し、ゾーン転送を求めます。

しかし、システムの構成しだいでは、バックアップとしてだけスレーブサーバーとして運用するが、マスターの代替として働かせないという使い方があります。

この場合、NSレコードにスレーブサーバーととして記述せず、ゾーンの定義に、"also-notify"を指定します。

NSレコードと、"also-notify"の両方に指定してはいけないそうです。


To previous pageTo home pageMailing to meJump to Top of pageline.gif (927 ツバツイツト)tomo.gif (1144 ツバツイツト)
カスタム検索


Tweet