DNS設定 · 1 min read · Oct 03, 2025

[Debian Sarge] Bind9 マスター/スレーブ DNS システムのインストール

[Debian Sarge] Bind9 マスター/スレーブ DNS システムのインストール

バージョン: 1.0 - 2006年8月23日

ようこそ

このハウツーでは、1つをマスター、もう1つをスレーブサーバーとして、2つのbind DNSサーバーをインストールします。セキュリティ上の理由から、bind9を独自の監獄内でchrootします。

ドメインに2つのサーバーを使用することは一般的な設定であり、自分のドメインをホストするには、少なくとも2つのドメインサーバーが必要です。1つが故障した場合、もう1つがドメインを引き続き提供できます。

私たちのセットアップは、Debian Sarge 3.1(安定版)をベースにします。必要なパッケージをこのハウツーでインストールするので、シンプルでクリーンかつ最新のインストールで十分です。

このハウツーでは、架空のドメイン「linux.lan」を使用します。ネームサーバーは192.168.254.1と192.168.254.2をIPアドレスとして使用します。

始める前に最後の言葉: Joeのハウツー(このサイトにもあります)や他のチュートリアルを読みましたが、どれも少し手を加えないと動きませんでした。そこで、自分のハウツーを作成しました。そして、すぐに動作するはずです :)


ソフトウェアのインストール

まず、クリーンなDebian Sargeのインストールが必要です。最新の状態にしてください!

apt-get update; apt-get upgrade

Debianのビルドツールも必要です。ソースパッケージをダウンロードする必要があるためです:

apt-get install devscripts

次に、Bindに必要なソフトウェアをインストールします。マスターとスレーブ間でゾーンファイルを暗号化して転送するためには、Sargeリポジトリにあるものよりも新しいバージョンのBind9(バージョン >=9.3)が必要です。-testingブランチのソースを使用します。 そのため、/etc/apt/sources.listに次のような行があることを確認してください:

deb-src http://---your.debian.mirror---/debian testing main contrib non-free

テストからのBind9は、テストからのlsb-baseに依存しています。それを取得しましょう:

(構文の説明: -yはaptにすべての質問に「はい」と答えるように指示し、build-depはsargeリポジトリから-testing_packageX-に必要なすべてのパッケージをインストールし、-bでソースがすぐにビルドされます。)

cd ~/a/dir/for/lsb-base/
apt-get -y build-dep lsb-base
apt-get source lsb-base -b
dpkg-i lsb-base*.deb

次はBind9です:

cd ~/a/dir/for/bind9
apt-get -y build-dep bind9
apt-get source bind9 -b
dpkg -i *.deb

これで、すべてのソフトウェアがインストールされ、設定の準備が整いました。

マスターの設定

まず、bind9を停止する必要があります:

/etc/init.d/bind9 stop

bindをchrootするために、/etc/default/bind9にオプションを設定する必要があります:

次のように:

OPTIONS="-u bind"

次のように:

OPTIONS="-u bind -t /var/lib/named"

これで、’/var/lib/named’にchrootされたユーザー’bind’として実行されます。

次に、/etc/bind/named.conf.optionsのforwarders行をISPのDNSに合わせて編集します:

forwarders { 194.109.6.66; };

これらの手順はchroot監獄に必要です:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/
chown -R bind:bind /var/lib/named/var/

chown -R bind:bind /var/lib/named/etc/bind

Bindは、.pidファイルと設定ファイルのためのスペースを持つ独自のディレクトリを持っています。物事を明確に保つために、/etc/にシンボリックリンクを作成しました。

次に、/etc/init.d/sysklogdを編集してbindのアクティビティのログを許可します:

次のように:

SYSLOGD=""

次のように:

SYSLOGD="-a /var/lib/named/dev/log"

最後のステップは、この新しくインストールしたDNSサーバー(localhost)のIPを/etc/resolv.confに追加して使用することです:

echo “search linux.lan” > /etc/resolv.conf
echo “nameserver 127.0.0.1” >> /etc/resolv.conf

これで、sysklogdとbind9を再起動します:

/etc/init.d/sysklogd restart
/etc/init.d/bind9 start

そしてテスト!

ping www.google.com

応答があれば、DNSマスターサーバーが動作しており、使用する準備が整っています。これから、linux.lanドメインを新しいマスターサーバーで設定して使用します。


linux.lanドメインの設定

マスターDNSサーバーは現在、ISPのサーバーにリクエストを転送しているだけです。そこで、独自のドメインをインストールして設定し、新しいサーバーにそのドメインに関するすべてのリクエストを処理させます。

ゾーンファイルを保存するディレクトリを作成することから始めましょう。このファイルには、ドメインに関するすべての情報が含まれています。

mkdir /etc/bind/zones/

次に、ゾーンファイルを作成します、 /etc/bind/zones/master_linux.lan:

$TTL 3D  

@       IN      SOA     ns1.linux.lan. hostmaster.linux.lan. (
                        199802151       ; シリアル、今日の日付 + 今日のシリアル番号
                        8H              ; リフレッシュ、秒
                        2H              ; 再試行、秒
                        4W              ; 有効期限、秒
                        1D )            ; 最小、秒
;
                TXT     "Linux.LAN, YOUR ドメインを提供 :)"
                NS      ns1             ; ネームサーバーのInetアドレス
        NS    ns2
                MX      10 mail        ; プライマリメールエクスチェンジャー
localhost    A    127.0.0.1
ns1        A    192.168.254.1
ns2        A    192.168.254.2
www        CNAME    ns1

ここでは、両方のネームサーバーとns1のwwwエイリアスを持つシンプルなゾーンファイルを作成しました。ns1でApacheが動作している場合に備えて ;)

次に、/etc/bind/named.conf.localを編集して追加します:

zone "linux.lan" {
        type master;
        file "/etc/bind/zones/master_linux.lan";
};

これで、bindを再起動して動作するか確認できます:

/etc/init.d/bind9 restart
ping ns1.linux.lan

この時点で、動作可能なDNSサーバーを持っているはずです :)

もしドメインが見つからないと言われた場合、dhclientがネームサーバーのエントリを変更した可能性があります…それを終了させてください。


スレーブのインストール

基本的に、スレーブは最初の部分で構築した基本システムと同じです(ゾーンファイルを追加する前の部分)。マスターとスレーブの両方に少し変更を加えて、連携させます。ゾーンファイルは、暗号化を使用してネットワーク経由で転送されます。

他に記載がない限り、これらのコマンドはスレーブ専用です。

ゾーンディレクトリを作成します:

mkdir /etc/bind/zones

マスターとスレーブの両方で/etc/bind/named.conf.optionsを編集し、次を追加します:

dnssec-enable yes;

次に、安全なキーが必要です。これにより、.privateファイルと.keyファイルが生成されます。.privateファイルの’key=’行はハッシュキーを表します。

dnssec-keygen -a hmac-md5 -b 128 -n host linux.lan

これをマスターとスレーブの両方の/etc/bind/named.confに追加します:

key "TRANSFER" {
        algorithm hmac-md5;
        secret "---HASHKEY---";
};

マスターには、スレーブのIPを/etc/bind/named.confに追加します:

server 192.168.254.2 {
        keys {
        TRANSFER;
    };
};

スレーブには、マスターのIPを/etc/bind/named.confに追加します:

server 192.168.254.1 {
        keys {
        TRANSFER;
    };
};

/etc/bind/named.conf.localに追加します:

zone "linux.lan" {
        type slave;
        file "/etc/bind/zones/slave_linux.lan";
        masters { 192.168.254.1; };
        allow-notify { 192.168.254.1; };
};

両方のホストに必要な最終的なことは、/etc/bind/named.confにこれを追加することです:

include "/etc/bind/rndc.key";

ゾーン転送を成功させるためには、両方のシステムが同期した時計を持っている必要があります。したがって:

apt-get -y install ntpdate

両方のマシンでbindを再起動し、スレーブに新しいゾーンファイルがあることに気づいてください :)

マスターのゾーンファイルの更新が失敗する理由が気になる場合は、ゾーンファイル内の有効期限などの設定を確認してください。

新しいDNSマスター/スレーブ構成での成功を祈ります!

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。