CentOS7でBindをプライベートネットワークDNSサーバーとして設定する方法

はじめに

サーバー構成とインフラストラクチャの管理の重要な部分には、適切なドメインネームシステム(DNS)を設定することにより、ネットワークインターフェイスとIPアドレスを名前で簡単に検索する方法を維持することが含まれています。 IPアドレスの代わりに完全修飾ドメイン名(Fqdn)を使用してネットワークアドレスを指定すると、サービスとアプリケーションの構成が容易になり、構成ファ プライベートネットワーク用に独自のDNSを設定することは、サーバーの管理を改善するための素晴らしい方法です。このチュートリアルでは、CentOS7のBINDネームサーバーソフトウェア(BIND9)を使用して内部DNSサーバーをセットアップする方法について説明します。 これにより、内部ホスト名とプライベートIPアドレスを一元的に管理する方法が提供され、環境が複数のホストに拡張される場合には不可欠です。

このチュートリアルのUbuntuバージョンはここにあります。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • 同じデータセンターで実行され、プライベートネットワークが有効になっている一部のサーバー
  • プライマリDNSサーバーとして機能するための新しいVPS ns1
  • オプション:セカンダリDNSサーバーとして機能するための新しいvps ns2
  • 上記のすべてへのルートアクセス(手順1-4はこちら)

dnsの概念に慣れていない場合は、dnsの管理に関する紹介の最初の三つの部分を少なくとも読むことをお勧めします。

ホストの例

たとえば、次のように仮定します。

  • “host1″と”host2″という二つの既存のVPがあります
  • 両方のVPがnyc3データセンターに存在します
  • 両方のVPがプライベートネットワーキングを有効にしています(10.128.0.0/16サブネット上にあります)
  • 両方のVPが何らかの形で”host1″で実行されるwebアプリケーションに関連していますexample.com”

これらの仮定では、使用する命名スキームを使用することが理にかなっていると判断します”nyc3.example.com”私たちのプライベートサブネットまたはゾーンを参照するには。 したがって、host1のプライベート完全修飾ドメイン名(FQDN)は”host1.nyc3.example.com次の表に関連する詳細を参照してください。

ホスト1

ホスト ロール プライベートFQDN プライベートIPアドレス
ホスト ロール プライベートFQDN プライベートIPアドレス
ジェネリックホスト1 host1.nyc3.example.com/td> 10.128.100.101
ホスト2 ジェネリックホスト2 host2.nyc3.example.com 10.128.200.102

注:既存の設定は異なりますが、例の名前とIPアドレスは、機能する内部DNSを提供するためにDNSサーバーを設定する方法を示 ホスト名とプライベートIPアドレスを自分の環境に置き換えることで、この設定を自分の環境に簡単に適応させることができるはずです。 名前付けスキームでデータセンターのリージョン名を使用する必要はありませんが、ここでは、これらのホストが特定のデータセンターのプライベートネットワークに属していることを示すために使用します。 複数のデータセンターを使用する場合は、それぞれのデータセンター内に内部DNSを設定できます。

私たちの目標

このチュートリアルの終わりまでに、プライマリDNSサーバー ns1と、オプションでセカンダリDNSサーバー ns2があります。Th>

プライベートIPアドレス プライベートIPアドレス ホスト ロール プライベートFQDN プライベートIPアドレス ホスト ロール プライベートFQDN プライベートIPアドレス ホスト ロール プライベートFQDN プライベートIPアドレス ホスト ロール ns1 プライマリdnsサーバー ns1。nyc3.example.com/td> 10.128.10.11 ns2 セカンダリDNSサーバー ns2.nyc3.example.com 10.128.20.12

プライマリDNSサーバー ns1をインストールすることから始めましょう。

DNSサーバーにBINDをインストールする

注意:赤で強調表示されているテキストは重要です! これは、多くの場合、独自の設定に置き換える必要があるか、それが変更されたり、構成ファイルに追加する必要があることを示すために使用されます。 たとえば、host1のようなものが表示された場合。nyc3.例。comでは、独自のサーバーのFQDNに置き換えます。 同様に、host1_private_ipが表示されている場合は、それを自分のサーバーのプライベートIPアドレスに置き換えます。DNSサーバー ns1とns2の両方で、yumでBINDをインストールします。

  • sudo yum install bind bind-utils

yと入力してプロンプトを確認します。yと入力してプロンプトを確認します。y

BINDがインストールされたので、プライマリDNSサーバーを設定しましょう。

プライマリDNSサーバーの設定

BINDの設定は、メイン設定ファイルnamed.confから含まれている複数のファイルで構成されています。 これらのファイル名は、BINDが実行するプロセスの名前であるため、”named”で始まります。 オプションファイルの設定から始めます。

Configure Bind

BINDのプロセスはnamedとして知られています。 そのため、多くのファイルは”BIND”ではなく”named”を参照しています。

ns1で、編集用にnamed.confファイルを開きます。

  • sudo vi /etc/named.conf

既存のoptionsブロックの上に、”trusted”と呼ばれる新しいACLブロックを作成します。 これは、再帰的なDNSクエリを許可するクライアントのリストを定義する場所です(つまり、 ns1と同じデータセンター内にあるサーバー)。 プライベートIPアドレスの例を使用して、ns1、ns2、host1、およびhost2を信頼できるクライアントのリストに追加します。

/etc/named。conf-1of4
acl "trusted" { 10.128.10.11; # ns1 - can be set to localhost 10.128.20.12; # ns2 10.128.100.101; # host1 10.128.200.102; # host2};

信頼できるDNSクライアントのリストができたので、optionsブロックを編集します。 Ns1のプライベートIPアドレスをlisten-on port 53listen-on-v6行をコメントアウトします。

/etc/named。conf-2of4
options { listen-on port 53 { 127.0.0.1; 10.128.10.11; };# listen-on-v6 port 53 { ::1; };...

これらのエントリの下で、allow-transferディレクティブを”none”からns2のプライベートIPアドレスに変更します。 また、allow-queryディレクティブを”localhost”から”trusted”に変更します。

/etc/named。conf—3of4

ファイルの最後に、次の行を追加します。

/etc/named。conf-4of4
include "/etc/named/named.conf.local";

今すぐ保存して終了しますnamed.conf。 上記の設定では、自分のサーバー(「信頼された」サーバー)のみがDNSサーバーを照会できるように指定しています。

次に、DNSゾーンを指定するためにローカルファイルを設定します。

ローカルファイルの設定

ns1で、編集用にnamed.conf.localファイルを開きます。

  • sudo vi /etc/named/named.conf.local

ファイルは空 ここでは、順方向ゾーンと逆方向ゾーンを指定します。

次の行で前方ゾーンを追加します(ゾーン名を独自のものに置き換えます)。

/etc/named/named。コンフ…local-1of2
zone "nyc3.example.com" { type master; file "/etc/named/zones/db.nyc3.example.com"; # zone file path};

プライベートサブネットが10.128.0であると仮定します。0/16、次の行でreverse zone byを追加します(reverse zone名は”128.10″で始まり、”10.128″のオクテット反転であることに注意してください)。

/etc/named/named。コンフ…local-2of2
zone "128.10.in-addr.arpa" { type master; file "/etc/named/zones/db.10.128"; # 10.128.0.0/16 subnet };

サーバーが複数のプライベートサブネットにまたがるが、同じデータセンターにある場合は、個別のサブネットごとに追加のゾーン 必要なすべてのゾーンの追加が完了したら、named.conf.localファイルを保存して終了します。

ゾーンがBINDで指定されたので、対応するforwardゾーンファイルとreverseゾーンファイルを作成する必要があります。

Create Forward Zone File

forward zoneファイルは、forward DNSルックアップのDNSレコードを定義する場所です。 つまり、DNSが名前クエリを受信すると、”host1.nyc3.example.comたとえば、forward zoneファイルを検索して、host1の対応するプライベートIPアドレスを解決します。

ゾーンファイルが存在するディレクトリを作成しましょう。 私たちの名前によると。コンフ…ローカル設定では、その場所は/etc/named/zonesでなければなりません:

  • sudo chmod 755 /etc/named
  • sudo mkdir /etc/named/zones

次に、フォワードゾーンファイルを編集しましょう。

  • sudo vi /etc/named/zones/db.nyc3.example.com

最初に、SOAレコードを追加します。 強調表示されたns1FQDNを独自のFQDNに置き換え、次に第二のfqdnを置き換えます”nyc3.example.com”独自ドメインで ゾーンファイルを編集するたびに、namedプロセスを再起動する前にシリアル値をインクリメントする必要があります–それを”3″にインクリメン これは次のようになります。

/etc/named/zones/db。nyc3.例。com—1of3

その後、ネームサーバレコードを次の行で追加します(名前を独自のものに置き換えます)。 2番目の列は、これらが”NS”レコードであることを指定していることに注意してください。

/etc/named/zones/db.nyc3.example.com—2of3
; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.

次に、このゾーンに属するホス これには、名前を”で終わらせたいサーバーが含まれます。nyc3.example.com”(名前とプライベートIPアドレスを置き換えます)。 この例の名前とプライベートIPアドレスを使用して、ns1、ns2、host1、およびhost2のレコードを次のように追加します:/etc/named/zones/db.nyc3.example.com—3of3

db.nyc3.example.comファイルを保存して終了します。/etc/named/zones/db.nyc3.example.com—complete

次に、リバースゾーンファイルに移動しましょう。

Create Reverse Zone File(s)

Reverse zone fileは、dns ptrレコードを逆引きDNSルックアップ用に定義する場所です。 つまり、DNSがIPアドレス”10.128.100.101″などのクエリを受信すると、逆ゾーンファイルを検索して対応するFQDN”host1″を解決します。nyc3.example.com「この場合。

ns1で、named.conf.localファイルで指定された逆ゾーンごとに、逆ゾーンファイルを作成します。

で定義されている逆ゾーンに対応する逆ゾーンファイルを編集しますnamed.conf.local:

  • sudo vi /etc/named/zones/db.10.128

順方向ゾーンファイルと同じ方法で、強調表示されたns1FQDNを独自のFQDNに置き換えてから、第二の”fqdn”を置き換えます。nyc3.example.com”独自ドメインで ゾーンファイルを編集するたびに、namedプロセスを再起動する前にシリアル値をインクリメントする必要があります–それを”3″にインクリメン これは次のようになります。

/etc/named/zones/db。10.128-1of3

その後、ネームサーバレコードを次の行で追加します(名前を自分の名前に置き換えます)。 2番目の列は、これらが”NS”レコードであることを指定していることに注意してください:

/etc/named/zones/db。10.128-2of3
; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.

次に、編集しているゾーンファイルのサブネット上にIPアドレスがあるすべてのサーバーのレコードを追加します。PTR この例では、すべてのホストが10.128.0.0/16サブネット上にあるため、これにはすべてのホストが含まれます。 最初の列は、サーバーのプライベートIPアドレスの最後の二つのオクテットで逆の順序で構成されていることに注意してください。 サーバーと一致するように名前とプライベートIPアドレスを置き換えてください。

/etc/named/zones/db。10.128-3of3

逆ゾーンファイルを保存して終了します(逆ゾーンファイルを追加する必要がある場合は、このセクションを繰り返します)。最後のリバースゾーンファイルの例は、次のようになります。

/etc/named/zones/db。10.128-complete

CHECK Bind Configuration Syntax

次のコマンドを実行して、named.conf*ファイルの構文をチェックします。

  • sudo named-checkconf

指定された設定ファイルに構文エラーがない場合は、シェルプロンプトに戻り、エラーメッセージは表示されません。 設定ファイルに問題がある場合は、エラーメッセージとConfigure Primary DNS Serverセクションを確認してから、named-checkconfをもう一度試してください。

named-checkzonenamed.conf.localで定義されています。

たとえば、”nyc3.example.com”転送ゾーンの設定、次のコマンドを実行します(転送ゾーンとファイルに一致するように名前を変更します):p>

  • sudo named-checkzone nyc3.example.com /etc/named/zones/db.nyc3.example.com

そして、”128.10.in-addr.arpa”ゾーン構成を逆にして、次のコマンドを実行します(逆ゾーンとファイルに一致するように番号を変更します)。

  • sudo named-checkzone 128.10.in-addr.arpa /etc/named/zones/db.10.128

すべての構成ファイルとゾー

Start BIND

Start BIND:

  • sudo systemctl start named

これで有効にしたいので、起動時に起動します。

  • sudo systemctl enable named

プライマリDNSサーバーが設定され、DNSクエリに応答する準備ができました。 セカンダリDNSサーバーの作成に移りましょう。

セカンダリDNSサーバーの設定

ほとんどの環境では、プライマリが使用できなくなった場合に要求に応答するセカンダリDNSサーバーを設定する 幸いなことに、セカンダリDNSサーバーは構成がはるかに簡単です。

ns2で、named.confファイルを編集します。

  • sudo vi /etc/named.conf

注意:これらの手順をスキップしたい場合は、ns1のnamed.confファイルをコピーし、ns2のプライベートIPアドレスをリッスンするように変更し、転送を許可しないように変更することができます。

既存のoptionsブロックの上に、”trusted”という新しいACLブロックを作成します。 ここで、再帰的なDNSクエリを許可するクライアント(つまり、ns1と同じデータセンターにあるサーバー)のリストを定義します。 プライベートIPアドレスの例を使用して、ns1、ns2、host1、およびhost2を信頼できるクライアントのリストに追加します。

/etc/named。conf-1of4
acl "trusted" { 10.128.10.11; # ns1 - can be set to localhost 10.128.20.12; # ns2 10.128.100.101; # host1 10.128.200.102; # host2};

信頼できるDNSクライアントのリストができたので、optionsブロックを編集します。 Ns1のプライベートIPアドレスをlisten-on port 53listen-on-v6行をコメントアウトします。

/etc/named。conf-2of4

options { listen-on port 53 { 127.0.0.1; 10.128.20.12; };# listen-on-v6 port 53 { ::1; };...

allow-queryディレクティブを”localhost”から”trusted”に変更します。

/etc/named。conf—3of4
...options {... allow-query { trusted; }; # allows queries from "trusted" clients...

ファイルの最後に、次の行を追加します。

/etc/named。conf-4of4
include "/etc/named/named.conf.local";

今すぐ保存して終了しますnamed.conf。 上記の設定では、自分のサーバー(「信頼された」サーバー)のみがDNSサーバーを照会できるように指定しています。

次に、DNSゾーンを指定するためにローカルファイルを設定します。P>

保存して終了しますnamed.conf

ここで、named.conf.localファイルを編集します。

  • sudo chmod 755 /etc/named
  • sudo vi /etc/named/named.conf.local

プライマリDNSサーバーのマスターゾーンに対応するスレーブゾー タイプは”slave”であり、ファイルにはパスが含まれておらず、プライマリDNSサーバーのプライベートIPに設定する必要があるmastersディレクティブがあ プライマリDNSサーバーで複数の逆ゾーンを定義した場合は、それらをすべてここに追加してください。

/etc/named/named。コンフ…ローカル

今すぐ保存して終了しますnamed.conf.local

次のコマンドを実行して、設定ファイルの有効性を確認します。

  • sudo named-checkconf

チェックアウトしたら、BINDを開始します。

  • sudo systemctl start named

ブート時にbindを開始するようにします。

sudo systemctl enable named

これで、プライマリDNSサーバーとセカンダリDNSサーバーがあります。プライベートネットワーク名とipアドレスの解決。 ここで、プライベートDNSサーバーを使用するようにサーバーを構成する必要があります。

DNSクライアントの設定

“信頼された”ACL内のすべてのサーバーがDNSサーバーを照会できるようにするには、ns1とns2をネームサーバーとして使用するよ このプロセスはOSによって異なりますが、ほとんどのLinuxディストリビューションでは、ネームサーバーを/etc/resolv.confファイルに追加する必要があります。CentOS、RedHat、Fedora Linux VPSでは、resolv.confファイルを編集するだけです:次に、ファイルの先頭に次の行を追加します(プライベートドメイン、およびns1およびns2プライベートIPアドレスを置き換えます)。

/etc/resolv。conf
search nyc3.example.com # your private domainnameserver 10.128.10.11 # ns1 private IP addressnameserver 10.128.20.12 # ns2 private IP address

今すぐ保存して終了します。 これで、クライアントはDNSサーバーを使用するように構成されました。UbuntuおよびDebian Linux VPSでは、ブート時にresolv.confheadresolv.conf:ファイルに次の行を追加します(プライベートドメイン、およびns1およびns2プライベートIPアドレスを置き換えます)。

/etc/resolvconf/resolv。コンフ…d/head
search nyc3.example.com # your private domainnameserver 10.128.10.11 # ns1 private IP addressnameserver 10.128.20.12 # ns2 private IP address

今すぐ実行resolvconfresolv.confファイルを生成します。

  • sudo resolvconf -u

クライアントがDNSサーバーを使用するよう

クライアントのテスト

“bind—utils”パッケージに含まれているnslookupを使用して、クライアントがネームサーバーを照会できるかどうか 設定したすべてのクライアントでこれを行うことができ、”信頼された”ACLにある必要があります。

前方参照

例えば、我々はのIPアドレスを取得するために前方参照を実行することができますhost1.nyc3.example.com 次のコマンドを実行します。

  • nslookup host1

“host1″を照会すると、”host1″が展開されます。”host1″を照会すると、”host1″に展開されます。”host1″を照会すると、”host1″に展開さhost1.nyc3.example.com そのため、searchオプションはプライベートサブドメインに設定されており、DNSクエリは他の場所でホストを探す前にそのサブドメイン 上記のコマンドの出力は次のようになります。

Output:
Server: 10.128.10.11Address: 10.128.10.11#53Name: host1.nyc3.example.comAddress: 10.128.100.101

逆引きルックアップ

逆引きルックアップをテストするには、host1のプライベートIPア

すべての名前とIPアドレスが正しい値に解決された場合、ゾーンファイルが適切に構成されていることを意味します。 予期しない値が表示された場合は、プライマリDNSサーバー上のゾーンファイルを確認してください(例: db.nyc3.example.comdb.10.128)。

おめでとうございます!

これで、内部DNSサーバーが適切に設定されました! 今私達はあなたの地帯の記録を維持することをカバーする。

DNSレコードの維持

内部DNSが動作しているので、DNSレコードを維持して、サーバー環境を正確に反映する必要があります。

DNSへのホストの追加

環境にホストを追加するたびに(同じデータセンター内の)、それをDNSに追加したいと思うでしょう。 ここでは、実行する必要がある手順のリストです:

プライマリネームサーバー

  • フォワードゾーンファイル:新しいホストの”A”レコードを追加し、”Serial”の値をインクリメントします
  • リバースゾーンファイル:新しいホストの”PTR”レコードを追加し、”Serial”の値をインクリメントします
  • 新しいホストのプライベートIPアドレスを”trusted”ACLに追加します(named.conf.options
  • ul新しいホストのプライベートIpアドレスを「信頼された」aclに追加します(named.conf.options

次にバインドをリロードします。

  • sudo systemctl reload named

セカンダリネームサーバー

  • 新しいホストのプライベートIpアドレスを「信頼された」aclに追加します(named.conf.options

次にバインドをリロードします:

  • sudo systemctl reload named

DNSを使用するように新しいホストを設定します。

  • resolvを設定します。dnsサーバーを使用するconf
  • Test usingnslookup

DNSからホストを削除する

環境からホストを削除するか、DNSから削除したい場合は、サーバーをDNSに追加したときに追加されたすべてのものを削除するだけです(つまり、上記の手順の逆)。

結論

これで、サーバーのプライベートネットワークインターフェイスをIPアドレスではなく名前で参照することができます。 これにより、プライベートIPアドレスを覚えておく必要がなくなり、ファイルの読み取りと理解が容易になるため、サービスとアプリケーションの構成が また、今、あなたは代わりに、メンテナンスを容易にする分散構成ファイルの様々なを編集することの、単一の場所、プライマリDNSサーバーに新しいサーバーを指

内部DNSをセットアップし、構成ファイルがプライベートFqdnを使用してネットワーク接続を指定したら、DNSサーバーが適切に維持されていることが重要です。 両方が使用できなくなった場合、それらに依存するサービスとアプリケーションは正常に機能しなくなります。 このため、少なくとも1つのセカンダリサーバーを使用してDNSをセットアップし、それらすべての作業バックアップを維持することをお勧めします。

Related Posts

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です