はじめに
サーバー構成とインフラストラクチャを管理する重要な部分には、適切なドメインネームシステム(DNS) IPアドレスの代わりに完全修飾ドメイン名(Fqdn)を使用してネットワークアドレスを指定すると、サービスとアプリケーションの構成が容易になり、構成ファイ, プライベートネットワーク用に独自のDNSを設定することは、サーバーの管理を改善するのに最適な方法です。
このチュートリアルでは、内部DNSサーバーをセットアップする方法について説明しますBINDネームサーバーソフトウェア(BIND9)Ubuntu18.04で、サーバーがプライベートホスト名とプライベートIPアドレスを解決するために使用することができます。 これにより、内部ホスト名とプライベートIPアドレスを管理するための中央的な方法が提供され、環境が少数のホストよりも多くに拡張される場合
このチュートリアルのCentOSバージョンはここで見つけることができます。,
前提条件
このチュートリアルを完了するには、次のインフラストラクチャが必要です。 プライマリDNSサーバーとして機能する新しいUbuntu18.04サーバー、ns1
これらの各サーバーで、sudo
ユーザーとユーザーを介して管理アクセスを設定します。私たちのubuntu18に従ってファイアウォール。,04初期サーバーセットアップガイド
DNSの概念に慣れていない場合は、少なくともDNSの管理に関する紹介の最初の三つの部分を読むことをお勧めします。
インフラストラクチャと目標の例
この記事では、次のことを想定します。
- DNSネームサーバーとして指定される二つのサーバーがあります。 このガイドでは、これらをns1およびns2と呼びます。
- 作成したDNSインフラストラクチャを使用する追加のクライアントサーバーが二つあります。 このガイドでは、これらのhost1およびhost2を呼び出します。, インフラストラクチャに必要な数だけ追加することができます。
- これらのサーバーはすべて同じデータセンターに存在します。 これがnyc3データセンターであると仮定します。
- これらのサーバーはすべてプライベートネットワークを有効にしています(そして
10.128.0.0/16
サブネット上にあります。 あなたのサーバーのためにこれを調整する必要があります)。 - すべてのサーバーは、実行されているプロジェクトに接続されています”example.com私たちのDNSシステムは完全に内部とプライベートになりますので、あなたはドメイン名を購入する必要はありません。, しかし、ドメインまでは払える気があります。が触れないよう公routableます。
これらの前提のもとで決めることは、あってはならないことで利用命名法を使用する”nyc3.example.com”を参照して民間のサブネットまたはゾーンです。 したがって、host1のプライベート完全修飾ドメイン名(FQDN)は次のようになりまhost1.nyc3.example.com
既存の設定は異なりますが、機能する内部DNSを提供するようにDNSサーバーを構成する方法を示すために、名前とIPアドレスの例を使用します。, ホスト名とプライベートIPアドレスを自分の環境に置き換えることで、この設定を自分の環境に簡単に適応させることができるはずです。 名前付けスキームでデータセンターのリージョン名を使用する必要はありませんが、ここではこれらのホストが特定のデータセンターのプライベートネットワーク 複数のデータセンターを使用する場合は、それぞれのデータセンター内に内部DNSを設定できます。
このチュートリアルの最後までに、プライマリDNSサーバー ns1と、オプションでバックアップとして機能するセカンダリDNSサーバー ns2があります。,
プライマリDNSサーバー ns1をインストールすることから始めましょう。
DNSサーバーへのBINDのインストール
赤で強調表示されているテキストは重要です! これは、多くの場合、独自の設定に置き換える必要があるもの、または設定ファイルに変更または追加する必要があるものを示すために使用されます。 たとえば、host1.nyc3.example.com
のようなものが表示される場合は、それを独自のサーバーのFQDNに置き換えます。 同様に、host1_private_IP
が表示されている場合は、それを自分のサーバーのプライベートIPアドレスに置き換えます。,
ns1とns2の両方のDNSサーバーで、apt
パッケージキャッシュを次のように入力して更新します。
- sudo apt-get update
BINDをインストールします。
- sudo apt-get install bind9 bind9utils bind9-doc
BindをIPv4モードに設定します。
続行する前に、BINDをIPv4モードに設定しましょう。もっぱらだ 両方のサーバーで、bind9
デフォルト設定ファイルを編集します。
- sudo nano /etc/default/bind9
OPTIONS
パラメータの末尾に”-4″を追加します。, 次のようになります。
. . .OPTIONS="-u bind -4"
終了したらファイルを保存して閉じます。
BINDを再起動して変更を実装します。
- sudo systemctl restart bind9
BINDがインストールされたので、プライマリDNSサーバーを設定しましょう。
プライマリDNSサーバーの構成
BINDの構成は、メイン構成ファイルnamed.conf
から含まれる複数のファイルで構成されます。, これらのファイル名はで始まりますnamed
これはBINDが実行するプロセスの名前であるためです(”domain name daemon”の略です)。 オプションファイルの設定から始めます。
オプションファイルの設定
ns1で、named.conf.options
ファイルを編集用に開きます。
- sudo nano /etc/bind/named.conf.options
既存のoptions
ブロックの上に、”trusted”という新しいACL(アクセス制御リスト)ブロックを作成します。 ここでは、再帰的なDNSクエリを許可するクライアントのリストを定義します(つまり、, ns1と同じデータセンターにあるサーバー)。 この例のプライベートIPアドレスを使用して、ns1、ns2、host1、およびhost2を信頼できるクライアントのリストに追加します。
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};options { . . .
信頼できるDNSクライアントのリストができたので、options
ブロックを編集します。 現在、ブロックの開始は次のようになります。
. . .};options { directory "/var/cache/bind"; . . .}
directory
ディレクティブの下に、強調表示された設定行を追加します(適切なns1IPアドレスで置き換えます)。
終了したら、named.conf.options
ファイルを保存して閉じます。 上記の構成では、独自のサーバー(”信頼された”サーバー)のみがDNSサーバーに外部ドメインを照会できるように指定しています。
次に、DNSゾーンを指定するためにローカルファイルを構成します。,
ローカルファイルの設定
ns1で、named.conf.local
ファイルを編集用に開きます。
- sudo nano /etc/bind/named.conf.local
いくつかのコメントを除いて、ファイルは空でなければなりません。 ここでは、順方向ゾーンと逆方向ゾーンを指定します。 DNSゾーンは、DNSレコードの管理と定義のための特定の範囲を指定します。 私たちのドメインはすべて”内になりますのでnyc3.example.com”サブドメイン、それをフォワードゾーンとして使用します。, サーバーのプライベートIPアドレスはそれぞれ10.128.0.0/16
IP空間にあるため、その範囲内で逆参照を定義できるように逆ゾーンを設定します。allow-transfer
ディレクティブ
プライベートサブネットが10.128.0.0/16
であると仮定して、次の行を使用して逆ゾーンを追加します(逆ゾーン名は”128.,10″これは”10.128″のオクテット反転です):
サーバーが複数のプライベートサブネットにまたがり、同じデータセンターにある場合は、個別のサブネットごとに追加のゾーンとゾーンファイルを指定 必要なすべてのゾーンの追加が完了したら、named.conf.local
ファイルを保存して終了します。
BINDでゾーンが指定されたので、対応するフォワードゾーンファイルとリバースゾーンファイルを作成する必要があります。,
フォワードゾーンファイルの作成
フォワードゾーンファイルは、フォワードDNSルックアップのDNSレコードを定義する場所です。 つまり、DNSが名前クエリを受信すると、”host1.nyc3.example.comたとえば、forward zoneファイルを調べて、host1の対応するプライベートIPアドレスを解決します。
ゾーンファイルが存在するディレクトリを作成しましょう。 私達の示されるに従って。コンフローカル構成では、その場所は/etc/bind/zones
:
- sudo mkdir /etc/bind/zones
フォワードゾーンファイルをサンプルdb.local
ゾーンファイルに基づいています。, 次のコマンドで適切な場所にコピーします。
- sudo cp /etc/bind/db.local /etc/bind/zones/db.nyc3.example.com
次に、フォワードゾーンファイルを編集しましょう。
- sudo nano /etc/bind/zones/db.nyc3.example.com
最初は次のようになります。
まず、SOAレコードを編集します。 最初の”localhost”をns1のFQDNに置き換え、次に”root”を置き換えます。ローカルホスト”と”admin.nyc3.example.comゾーンファイルを編集するたびに、named
プロセスを再起動する前にシリアル値をインクリメントする必要があります。 それを”3″に増やします。, これで、次のようになります。
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial . . .
次に、ファイルの最後にある(SOAレコードの後にある)三つのレコードを削除します。 削除する行がわからない場合は、上記の”この行を削除”コメントが付いています。
ファイルの最後に、ネームサーバーレコードを次の行で追加します(名前を独自の行に置き換えます)。 第二の列は、これらが”NS”レコードであることを指定していることに注意してください:
. . .; name servers - NS records IN NS ns1.nyc3.example.com. IN NS ns2.nyc3.example.com.
このゾーンに属するホストのAレコードを追加します。 これには、名前を”で終わらせたいサーバーが含まれます。nyc3.example.com”(名前とプライベートIPアドレスを置き換えます)。 この例の名前とプライベートIPアドレスを使用して、ns1、ns2、host1、およびhost2のレコードを次のように追加します。
db.nyc3.example.com
ファイルを保存して閉じます。/p>
最後のフォワードゾーンファイルの例は次のようになります。
次に、逆のゾーンファイルに移動しましょう。
リバースゾーンファイルの作成
リバースゾーンファイルは、dnsリバースルックアップのDNS PTRレコードを定義する場所です。 すなわち、DNSがIPアドレスによって問い合わせを受け取る場合、”10.128.100.101″たとえば、対応するFQDNを解決するために逆の地帯ファイルで”見ますhost1.nyc3.example.com”この場合。
ns1では、named.conf.local
ファイルで指定された各逆ゾーンに対して、逆ゾーンファイルを作成します。, リバースゾーンファイルは、サンプルのdb.127
ゾーンファイルに基づいています。
- sudo cp /etc/bind/db.127 /etc/bind/zones/db.10.128
named.conf.local
で定義されている逆ゾーンに対応する逆ゾーンファイルを編集します。
- sudo nano /etc/bind/zones/db.10.128
最初は、次のようになります。
フォワードゾーンファイルと同じ方法で、SOAレコードを編集し、シリアル値をインクリメントする必要があります。 これは次のようになります:
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. ( 3 ; Serial . . .
ファイルの最後にある(SOAレコードの後にある)二つのレコードを削除します。 削除する行がわからない場合は、上記の”この行を削除”コメントが付いています。
ファイルの最後に、ネームサーバーレコードを次の行で追加します(名前を独自の行に置き換えます)。, 第二の列は、これらが”NS”レコードであることを指定していることに注意してください:
. . .; 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アドレスを
リバースゾーンファイルを保存して閉じます(リバースゾーンファイルを追加する必要がある場合は、このセクションを繰り返します)。
最後の逆ゾーンファイルの例は次のようになります。
ファイルの編集は完了したので、次にファイルのエラーをチェックできます。,
バインド構成構文の確認
次のコマンドを実行して、named.conf*
ファイルの構文を確認します。
- sudo named-checkconf
指定された構成ファイルに構文エラーがない場合は、シェルプロンプトに戻り、エラーメッセージが表示されません。 設定ファイルに問題がある場合は、エラーメッセージと”Configure Primary DNS Server”セクションを確認してから、named-checkconf
をもう一度試してください。
named-checkzone
コマンドを使用して、ゾーンファイルの正しさを確認できます。, その最初の引数はゾーン名を指定し、二番目の引数は対応するゾーンファイルを指定します。named.conf.local
で定義されています。
たとえば、チェックするには”nyc3.example.com”フォワードゾーンの設定は、次のコマンドを実行します(フォワードゾーンとファイルに一致するように名前を変更します)。
- sudo named-checkzone nyc3.example.com db.nyc3.example.com
“128.10.in-addr.,arpa”リバースゾーン設定、次のコマンドを実行します(リバースゾーンとファイルに合わせて番号を変更します)。
- sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
すべての設定ファイルとゾーンファイルにエラーがない場合は、BINDサービスを再起動する準備ができている必要があります。
RESTART BIND
Restart BIND:
- sudo systemctl restart bind9
UFWファイアウォールが設定されている場合は、次のように入力してBINDへのアクセスを開きます。
- sudo ufw allow Bind9
プライマリDNSサーバーがセットアップされ、DNSクエリに応答する準備が整いました。 セカンダリDNSサーバーの作成に移りましょう。,
セカンダリDNSサーバーの構成
ほとんどの環境では、プライマリが使用できなくなった場合に要求に応答するセカンダリDNSサーバーを設定すること 幸いなことに、二次DNSサーバやルを作成します。
ns2で、named.conf.options
ファイルを編集します。
- sudo nano /etc/bind/named.conf.options
ファイルの先頭に、信頼できるすべてのサーバーのプライベートIPアドレスを持つACLを追加します。
acl "trusted" { 10.128.10.11; # ns1 10.128.20.12; # ns2 - can be set to localhost 10.128.100.101; # host1 10.128.200.102; # host2};options { . . .
directory
ディレクティブの下に、次の行を追加します。
named.conf.options
ファイルを保存して閉じます。 このファイルはns1のnamed.conf.options
ファイルとまったく同じですが、ns2のプライベートIPアドレスをリッスンするように構成する必要があります。
次に、named.conf.local
ファイルを編集します。
- sudo nano /etc/bind/named.conf.local
プライマリDNSサーバー上のマスターゾーンに対応するスレーブゾーンを定義します。, タイプは”slave”であり、ファイルにはパスが含まれておらず、masters
ディレクティブがあり、プライマリDNSサーバーのプライベートIPアドレスに設定する プライマリDNSサーバーで複数のリバースゾーンを定義した場合は、それらをすべてここに追加してください:
ここで、named.conf.local
ファイルを保存して閉じます。,
設定ファイルの有効性を確認するには、次のコマンドを実行します。
- sudo named-checkconf
チェックアウトしたら、BINDを再起動します。
- sudo systemctl restart bind9
UFWファイアウォールルールを変更してサーバーへのDNS接続を許可します。
- sudo ufw allow Bind9
これで、プライマリおよびセカンダリDNSサーバーがあります。プライベートネットワーク名とipアドレス 現在設定する必要がありますクライアントサーバー個人のDNSサーバー,
DNSクライアントの設定
“信頼された”ACL内のすべてのサーバーがDNSサーバーを照会できるようにするには、ns1およびns2をネームサーバーとして使用するようにそれぞれを構成する必要があります。 このプロセスはOSによって異なりますが、ほとんどのLinuxディストリビューションでは、/etc/resolv.conf
ファイルにネームサーバーを追加する必要があります。
Ubuntu18.04クライアント
Ubuntu18.04では、ネットワークはnetplanで構成されています。Netplanは、標準化されたネットワーク構成を記述し、互換性のないバックエンドネットワークソフトウェアに適用することを可能にする抽象化です。, DNSを構成するには、Netplan構成ファイルを記述する必要があります。
まず、ip address
コマンドでプライベートサブネットを照会して、プライベートネットワークに関連付けられているデバイスを見つけます。
- ip address show to 10.128.0.0/16
この例では、プライベートインターフェイスはeth1
です。
次に、/etc/netplan
と呼ばれる00-private-nameservers.yaml
に新しいファイルを作成します。
- sudo nano /etc/netplan/00-private-nameservers.yaml
内部に、以下の内容を貼り付けます。, プライベートネットワークのインターフェイス、ns1およびns2DNSサーバーのアドレス、およびDNSゾーンを変更する必要があります。
注:Netplanは、構成ファイルにYAMLデータシリアル化フォーマットを使用します。 YAMLはインデントと空白を使用してデータ構造を定義するため、エラーを回避するために定義が一貫したインデントを使用していることを確認してくだ
終了したらファイルを保存して閉じます。
次に、netplan try
を使用して新しい構成ファイルの使用を試みるようNetplanに指示します。, ネットワークの損失を引き起こす問題がある場合、Netplanはタイムアウト後に自動的に変更をロールバックします。
- sudo netplan try
OutputWarning: Stopping systemd-networkd.service, but it can still be activated by: systemd-networkd.socketDo you want to keep these settings?Press ENTER before the timeout to accept the new configurationChanges will revert in 120 seconds
カウントダウンが下部で正しく更新されている場合、新しい構成は少なくともSSH接続を切断しないように十分に機能しています。 ENTERキーを押して新しい設定を受け入れます。
ここで、システムのDNSリゾルバーを確認して、DNS設定が適用されているかどうかを確認します。
- sudo systemd-resolve --status
プライベートネットワークインターフェイスのセクションが表示されるまで下にスクロールします。, ていることを確認して下さいプライベートIPアドレスをごDNSサーバー上場、一部のスクフォースメンバーです。 ドメインは”DNSドメイン”にある必要があります。
クライアントは、内部DNSサーバーを使用するように構成されている必要があります。
Ubuntu16.04およびDebianクライアント
Ubuntu16.04およびDebian Linuxサーバーでは、/etc/network/interfaces
ファイルを編集できます。
- sudo nano /etc/network/interfaces
内部でdns-nameservers
行を見つけ、現在そこにあるリストの前に独自のネームサーバーを追加します。, その行の下に、インフラストラクチャのベースドメインを指すdns-search
オプションを追加します。 私たちの場合、これは”nyc3.example.com”:
. . . dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8 dns-search nyc3.example.com . . .
終了したらファイルを保存して閉じます。
次に、次のコマンドを使用して新しい変更を適用して、ネットワークサービスを再起動します。 eth0
をネットワークインターフェイスの名前に置き換えてください。
- sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0
これにより、現在の接続を切断せずにネットワークを再起動する必要があります。, 正しく動作した場合は、次のようになります。
OutputRTNETLINK answers: No such processWaiting for DAD... Done
入力して設定が適用されたことを再確認してください。
- cat /etc/resolv.conf
/etc/resolv.conf
ファイルにネームサーバーが表示され、検索ドメインも表示されます。
クライアントはDNSサーバーを使用するように構成されました。
クライアントはDNSサーバーを使用するように構成されました。
CentOSクライアント
CentOS、RedHat、およびFedora Linuxでは、/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集します。, eth0
をプライマリネットワークインターフェイスの名前に置き換える必要がある場合があります。
- sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1
およびDNS2
オプションを検索し、プライマリおよびセカンダリネームサーバーのプライベートIPアドレスに設定します。 インフラストラクチャのベースドメインにDOMAIN
パラメーターを追加します。 このガイドでは、それは”nyc3.example.com”:
. . .DNS1=10.128.10.11DNS2=10.128.20.12DOMAIN='nyc3.example.com'. . .
終了したらファイルを保存して閉じます。,
次のように入力してネットワークサービスを再起動します。
- sudo systemctl restart network
コマンドは数秒間ハングすることがありますが、すぐにプロンプトに戻ります。
入力して変更が適用されたことを確認します。
- cat /etc/resolv.conf
リストにネームサーバーと検索ドメインが表示されます。
nameserver 10.128.10.11nameserver 10.128.20.12search nyc3.example.com
クライアントはDNSサーバーに接続して使用できるようになりました。
クライアントのテスト
nslookup
を使用して、クライアントがネームサーバーにクエリを実行できるかどうかをテストします。, あなたが設定し、”信頼された”ACLにあるすべてのクライアントでこれをすることができるはずです。
CentOSクライアントの場合、次のようにしてユーティリティをインストールする必要があるかもしれません。
- sudo yum install bind-utils
前方参照を実行することから始めます。
前方参照
たとえば、次のIPアドレスを取得するために前方参照を実行できますhost1.nyc3.example.com 次のコマンドを実行します。
- nslookup host1
“host1″のクエリは”host1″に展開されます。nyc3.例えば。,comのためにsearch
オプションはプライベートサブドメインに設定されており、DNSクエリは他の場所でホストを探す前にそのサブドメインを探 上記のコマンドの出力は次のようになります。
OutputServer: 127.0.0.53Address: 127.0.0.53#53Non-authoritative answer:Name: host1.nyc3.example.comAddress: 10.128.100.101
次に、逆ルックアップを確認できます。,
逆引き参照
逆引き参照をテストするには、host1のプライベートIPアドレスでDNSサーバーにクエリします。
- nslookup 10.128.100.101
次のような出力が表示されます。
Output11.10.128.10.in-addr.arpa name = host1.nyc3.example.com.Authoritative answers can be found from:
すべての名前とIPアドレスが正しい値に解決されれば、ゾーンファイルが正しく構成されていることを意味します。 予期しない値を受け取った場合は、プライマリDNSサーバー上のゾーンファイルを確認してください(例:db.nyc3.example.com
およびdb.10.128
)。
おめでとうございます! 内部DNSサーバーが正しくセットアップされました!, ここでは、ゾーン記録の維持について説明します。
DNSレコードの維持
内部DNSが機能したので、DNSレコードがサーバー環境を正確に反映するように維持する必要があります。
DNSへのホストの追加
環境(同じデータセンター内)にホストを追加するときは常に、DNSにホストを追加する必要があります。, P>
Primary Name Server
- Forward zone file:新しいホストの”A”レコードを追加し、”Serial”の値をインクリメントします
- Reverse zone file:新しいホストの”PTR”レコードを追加し、”Serial”の値をインクリメントします
- 新しいホストのプライベートIPアドレスを”trusted”ACLに追加します(
named.conf.options
)
設定ファイルをテストします。
次にbindをリロードします。
- sudo systemctl reload bind9
プライマリサーバーを新しいホスト用に設定する必要があります。,
カンダリネームサーバー
- 追加新しいホストのIPアドレスを”信頼できる”ACL(
named.conf.options
チェックの設定syntax:
- sudo named-checkconf
その後再結合:
- sudo systemctl reload bind9
二次サーバは現在の接続を受け付けからの新します。,
DNSを使用するように新しいホストを設定する
- Configure
/etc/resolv.conf
DNSサーバーを使用するには nslookup
DNSからホストを削除する
環境からホストを削除するか、DNSからホストを取り出したい場合は、dnsからホストを削除するだけです。サーバーをdnsに追加しました(つまり、上記の手順の逆)。
結論
これで、IPアドレスではなく、サーバーのプライベートネットワークインターフェイスを名前で参照できます。, この設定のサービス、アプリケーションが容易ではありません。うひとつ忘れてはいけないのプライベートIPアドレスのファイルが読みやすくなり、理解する また、メンテナンスを容易にするさまざまな分散構成ファイルを編集するのではなく、プライマリDNSサーバーである単一の場所にある新しいサーバーを指すように構成を変更できるようになりました。
内部DNSをセットアップし、構成ファイルがプライベートFqdnを使用してネットワーク接続を指定したら、DNSサーバーが適切に維持されることが重要です。, 両方が使用できなくなると、それらに依存するサービスとアプリケーションが正常に機能しなくなります。 このため、少なくとも一つのセカンダリサーバーでDNSをセットアップし、それらのすべての作業バックアップを維持することをお勧めし
Leave a Reply