【bind】 セカンダリDNSサーバ構築 1 プライマリ側の準備


このblogを動かしてるサーバはDNSサーバも兼ねていて、10個のゾーンを管理しています。
そのうちDNSだけでも外出ししたいなー・・・と思っているので、予行演習を兼ねて、うちで持っているもう1台のサーバにもbindをインストールして、セカンダリとして動かすことにしました。

■■ 環境

プライマリネームサーバ   192.168.0.2
セカンダリネームサーバ   192.168.0.3

ちなみに、プライマリもセカンダリもCentOS4.5で、bind-9.2.4-27.0.1.el4をyumでインストールしています。

■■ プライマリ側の設定

既存のDNSサーバ(以下プライマリ)のnamed.confには

// 内部ネットワーク定義
acl localnet{
    192.168.0.0/24;
    127.0.0.1;
};

optionsのセクションに

                allow-transfer{ localnet; };

を忘れずに追記してください。この設定がないと、192.168.0.0のネットワークにあるセカンダリDNSサーバへゾーン転送ができません。

次に、ココを参考にして、dnssec-keygenコマンドを用いて鍵を生成します。

# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST blogcube.info

こうすることで、カレントディレクトリに鍵が生成されます。
そして鍵をnamed.confに貼り付けるわけですが・・・

# ls -l
-rw-------  1 root root 122 12月  4 23:35 Kblogcube.info.+157+11353.key
-rw-------  1 root root 145 12月  4 23:35 Kblogcube.info.+157+11353.private

このように、公開鍵と秘密鍵ができるのです。どっちも中身は一緒で、フォーマットが違うだけなので、公開鍵のほうをcatコマンドで出力します。

# cat Kblogcube.info.+157+11353.key
blogcube.info. IN KEY 512 3 157 UR1t4erqhT~~~~~~~~==

そして、named.confのoptionsセクションの次あたりに

key "blogcube.info" {
      algorithm hmac-md5;
      secret "UR1t4erqh~~~~~~~~==";
};

と記述します。そして、例えばblogcube.infoのゾーンを定義するのには

zone "blogcube.info" IN {
        type master;
        file "blogcube.info.db";
        notify yes;
        allow-update { key blogcube.info; };
};

こう書きます。ちなみに、allow-update { localnet; };と書いてもよいのですが、namedをreloadするたんびに

Dec  4 22:06:52 shasta named[1184]: zone 'blogcube.info' allows updates by IP address, which is insecure

というログが出てしまうので、今回、鍵を登録することにしました。
さて、ここまでできたところで

# named-checkconf
でnamed.confの書式ミスがないか確認します。何も出力されなければOKです。ここまで確認したら、bind(named)をreloadしましょう。

次のエントリでセカンダリ側の設定を書きます。おやすみなさい。