ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由: CentOS 6は2020年11月30日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このため、このガイドは維持されなくなりました。

代わりに参照してください:
このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

前文

この記事では、BINDDNSサーバーをセットアップおよび構成する方法を説明します。 DigitalOceanの統合DNSサービスの使用方法に関するガイドをお探しの場合は、代わりに「DigitalOceanでホスト名を設定する方法」の記事を確認することをお勧めします。

始める前に、ネームサーバーを実行するために少なくとも2つのクラウドサーバーを用意することをお勧めします。 障害が発生した場合にプライマリサーバーとセカンダリサーバーが冗長になるように、2つのネームサーバーをお勧めします。 2つの異なるPOPの使用も検討することをお勧めします。 たとえば、サンフランシスコ1とニューヨーク1を使用しました。 このガイドでは、プライマリネームサーバーとセカンダリネームサーバーの両方を構成していることを前提としています。

多数のドメインを管理している場合、マスターネームサーバーとスレーブネームサーバーの両方にドメインを手動で追加する必要があるため、これは最も実行可能なソリューションではない可能性があることに注意してください。 そうは言っても、独自のネームサーバーを実行することは、ホスティングインフラストラクチャをより直接的に制御し、DNSレコードを完全に制御するための優れた方法です。

他の新しいサーバーと同様に、システムが最新であることを確認することが常に重要です。 これは、次のようにyumを使用して更新を確認することで確認できます。

yum update -y

(注:DigitalOceanでは、クラウドサーバーを「ドロップレット」と呼びます。 このチュートリアルでは両方の用語を使用します)

BINDの初期インストール

まず、yumを使用してBINDおよびBINDユーティリティパッケージをインストールする必要があります。

yum install bind bind-utils -y

次に、BIND(名前付き)構成ファイルを開き、いくつかの変更を加えます。

nano -w /etc/named.conf

「オプション」セクションは次のように表示され、2.2.2.2が2番目の液滴のIPに置き換えられます。

options {
	    #listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory	"/var/named";
        dump-file	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
		allow-query { any; };
        allow-transfer     { localhost; 2.2.2.2; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

上記では、使用可能なすべてのインターフェイスでリッスンするには、listen-onにコメントを付ける必要があります。 サーバーが「リフレクション」DDoS攻撃で悪用されるのを防ぐために、再帰をオフにする必要があります。 allow-transfer ディレクティブは、セカンダリドロップレットのIPへの転送をホワイトリストに登録します。 さらに、ユーザーがホストゾーンに適切にアクセスできるようにするために、allow-queryディレクティブを「any」に変更しました。

次に、最初のドメインに新しいゾーンを追加します。既存のゾーンの下のnamed.confに以下を追加する必要があります。

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

上記の変更を加えてnamed.confを保存したら、最初のゾーンファイルを作成する準備が整います。

BINDゾーンを構成する

まず、上記の構成で指定した名前を使用して、ゾーンファイルを開く必要があります。 (例:mydomain.com.zone)

nano -w /var/named/mydomain.com.zone

新しく作成したファイルに以下の内容を追加します。 該当する情報を独自の情報に置き換える必要があります。ここで、1.1.1.1は最初の液滴のIP、2.2.2.2は2番目の液滴のIP、3.3.3.3はドメイン自体を指すIPです。 Webサーバーを実行しているドロップレット。 同じ形式でエントリを自由に追加できます。

$TTL 86400
@   IN  SOA     ns1.mydomain.com. root.mydomain.com. (
        2013042201  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
; Specify our two nameservers
		IN	NS		ns1.mydomain.com.
		IN	NS		ns2.mydomain.com.
; Resolve nameserver hostnames to IP, replace with your two droplet IP addresses.
ns1		IN	A		1.1.1.1
ns2		IN	A		2.2.2.2

; Define hostname -> IP pairs which you wish to resolve
@		IN	A		3.3.3.3
www		IN	A		3.3.3.3

これで、初めて名前を付けることができます。 これは、namedが rndc.key ファイルを生成する間、数分かかる場合があります。これは、最初の実行時にのみ発生します。

service named restart

nameが正常に開始されたら、次のコマンドを実行して、namedがスタートアップサービスとして有効になっていることを確認します。

chkconfig named on

これで、完全に機能するプライマリネームサーバーができました。 次のコマンドを実行して、1.1.1.1を最初のドロップレットのIPに置き換えて、BINDが正しく機能していることを確認できます。

dig @1.1.1.1 mydomain.com

回答と権限のセクションを含む応答を受け取った場合、ネームサーバーは正しく構成されています。

スレーブネームサーバーの構成

プライマリネームサーバーを構成したら、2番目のクラウドサーバーにスレーブネームサーバーをセットアップします。

いつものように、次のように yum で更新を確認して、システムが最新であることを確認してください。

yum update -y

最初のドロップレットと同じ方法で、2番目のドロップレットにBIND(および関連するユーティリティ)をインストールすることから始めることができます。

yum install bind bind-utils -y

次に、named.confを開き、以前に行ったのと同じ変更を加えて、「allowtransfer」行を省略します。 プライマリネームサーバーからのみレコードを転送するため、このディレクティブは不要です。

nano -w /etc/named.conf
options {
		#listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory	"/var/named";
        dump-file	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
		allow-query { any; };
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

最初のドロップレットに構成したゾーンを追加します。今回は、「type」ディレクティブをマスターではなくスレーブに変更します。 「1.1.1.1」を最初のドロップレットのIPアドレスに置き換える必要があります。

zone "mydomain.com" IN {
	type slave;
	masters { 1.1.1.1; };
	file "mydomain.com.zone";
};

スレーブゾーンを構成した後、namedを開始します。 この場合も、rndc.keyファイルが最初に生成されるまでに数分かかる場合があります。

service named start

最初のクラウドサーバーと同様に、namedが起動時に次のように実行されるように設定されていることを確認します。

chkconfig named on

これで、スレーブネームサーバーが稼働しているはずです。 dig を再度使用して、2.2.2.2を2番目の液滴のIPに置き換えて、完全に機能していることを確認できます。

dig @2.2.2.2 mydomain.com

マスターゾーンファイルに変更を加えた後、BINDにリロードするように指示する必要があります。 マスターとスレーブ間の同期を確保するために、「シリアル」ディレクティブもインクリメントする必要があることを忘れないでください。

ゾーンファイルをリロードするには、マスターネームサーバーで次のコマンドを実行してから、スレーブを実行する必要があります。

rndc reload

chroot環境でバインドする

通常、BINDの権限をchroot環境にドロップする追加パッケージ「bind-chroot」をインストールすることをお勧めします。

幸いなことに、CentOSパッケージはこれを非常に簡単にします。 注目に値する唯一の側面は、BINDのアクティブパスがchrootされた同等のものに変更されることです。たとえば、CentOS6では/ var /named/var / named / chroot / var /namedになります。 、パッケージはchrootされていないディレクトリへのハードシンボリックリンクを自動的に作成するため、ファイルを移動する必要はありません。

提供されるセキュリティを強化するためにこの機能を有効にする場合は、次の操作を実行できます。

yum install bind-chroot -y
service named restart