'DNS、またはドメインネームシステムは、多くの場合、Webサイトとサーバーの構成方法を学習するときに適切なコンポーネントを取得するのが困難です。ほとんどの人はおそらくホスティング会社またはドメインレジストラが提供するDNSサーバーを使用することを選択しますが、独自のDNSサーバーを作成することにはいくつかの利点があります。14.04マシンでキャッシュまたは転送DNSサーバーとしてインストールおよび構成する方法について説明します。これら2つの構成には、マシンのネットワークを提供する場合に両方の利点があります。前提条件と目標このガイドを完了するには、まずいくつかの一般的なDNS用語に精通する必要があります。[このガイド]をご覧ください。同様の目標を達成する2つの個別の構成、キャッシングと転送DNSサーバーのデモを行います。14.04サーバーである必要があります)にアクセスする必要があります。1つはクライアントとして機能し、もう1つはDNSサーバーとして構成されます。サンプル構成の詳細は次のとおりです。Server192.0.2.1Client192.0.2.100クエリにDNSサーバーを使用するようにクライアントマシンを構成する方法を示します。ニーズに応じて、2つの異なる構成でDNSサーバーを構成する方法を示します。DNSサーバー用です。このタイプのサーバーは、再帰クエリを処理し、一般に他のサーバーからのDNSデータを追跡する面倒な作業を処理できるため、リゾルバーとも呼ばれます。キャッシュDNSサーバーは、クライアントのクエリに対する回答を追跡すると、その回答をクライアントに返します。レコードのTTL値で許可されている期間、回答をキャッシュに保存します。その後、キャッシュを後続のリクエストのソースとして使用して、総ラウンドトリップ時間を短縮できます。ネットワーク構成に含まれる可能性のあるほぼすべてのDNSサーバーは、DNSサーバーをキャッシュします。これらは、ほとんどのクライアントマシンに実装された適切なDNSリゾルバーライブラリの不足を補います。キャッシングDNSサーバーは、多くの状況に適しています。ISPのDNSまたは他の公的に利用可能なDNSサーバーに依存したくない場合は、独自のキャッシュサーバーを作成することをお勧めします。クライアントマシンに物理的に近接している場合、DNSクエリ時間も改善される可能性が非常に高くなります。転送DNSサーバーは、クライアントの観点からはキャッシュサーバーとほとんど同じように見えますが、メカニズムと作業負荷はまったく異なります。転送DNSサーバーには、キャッシュを維持してクライアントのDNS解決時間を改善するという同じ利点があります。実際には再帰クエリ自体は実行されません。代わりに、すべての要求を外部の解決サーバーに転送し、その後のクエリに使用する結果をキャッシュします。これにより、転送サーバーはキャッシュから応答できますが、再帰クエリのすべての作業を実行する必要はありません。これにより、サーバーは再帰ルーチン全体を実行する代わりに、単一の要求(転送されたクライアント要求)のみを作成できます。これは、外部帯域幅の転送にコストがかかる環境、キャッシュサーバーを頻繁に変更する必要がある環境、またはローカルクエリを1つのサーバーに転送し、外部クエリを別のサーバーに転送する環境で有利です。DNSサーバーにバインドをインストールする使用する構成の選択に関係なく、バインドDNSサーバーを実装する最初の手順は、実際のソフトウェアをインストールすることです。+`を使用してソフトウェアをインストールするだけです。ドキュメントと一般的なユーティリティも含まれます。bind9-docバインドコンポーネントがインストールされたので、サーバーの構成を開始できます。転送サーバーはジャンプサーバーとしてキャッシュサーバー構成を使用するため、最終目標に関係なく、最初にサーバーをキャッシュサーバーとして構成します。キャッシュDNSサーバーとして構成する最初に、キャッシュDNSサーバーとして機能するようにバインドを構成する方法について説明します。この構成では、クライアントがクエリを発行したときに、サーバーが他のDNSサーバーからの回答を再帰的に検索するように強制します。これは、応答全体が見つかるまで、関連する各DNSサーバーを順番に照会する作業を行っていることを意味します。+`のディレクトリに保存されます。今すぐそのディレクトリに移動します。/etc/bindこのディレクトリ内の大部分のファイルには関心がありません。`は同じアプリケーションの2つの名前です)。+`ファイルをソースします。+`ファイルのみを変更します。これをsudo特権でテキストエディターで開きます。named.conf.options読みやすくするためにコメントを削除すると、ファイルは次のようになります。};};キャッシングを構成するための最初のステップは、アクセス制御リスト(ACL)をセットアップすることです。再帰クエリを解決するために使用されるDNSサーバーとして、悪意のあるユーザーによってDNSサーバーが悪用されることは望ましくありません。DNS増幅攻撃*と呼ばれる攻撃は、サーバーが分散型サービス拒否攻撃に参加する可能性があるため、特に厄介です。DNS増幅攻撃は、悪意のあるユーザーがインターネット上のサーバーまたはサイトを停止しようとする1つの方法です。そのために、再帰クエリを解決するパブリックDNSサーバーを見つけようとします。被害者のIPアドレスをスプーフィングし、DNSサーバーに大きな応答を返すクエリを送信します。その際、DNSサーバーは、被害者のサーバーに向けられた大きなペイロードで小さなリクエストに応答し、攻撃者の利用可能な帯域幅を効果的に増幅します。パブリックで再帰的なDNSサーバーをホストするには、大量の特別な構成と管理が必要です。サーバーが悪意のある目的で使用される可能性を回避するために、信頼するIPアドレスまたはネットワーク範囲のリストを構成します。`という新しいブロックを作成します。設定しているACLグループのラベルを作成します。.このブロック内で、このDNSサーバーの使用を許可する必要があるIPアドレスまたはネットワークをリストします。24サブネット内で動作しているため、このネットワークに例を限定します。+`ブロックでそれらの機能を設定できます。このブロック内に、次の行を追加します。`パラメーターを設定しました。」などの別のパラメーターを使用することもできます。+`は再帰サービスを使用できるクライアントのリストを指示します。+`リストは常に再帰にのみ適用されます。ACLを指定する最も一般的な方法であるため、これを使用しています。これらの変更が完了したら、ファイルを保存して閉じます。DNSサーバーのキャッシングに必要なのは実際にはこれだけです。これが使用するサーバーの種類であると判断した場合は、構成ファイルの確認、サービスの再起動、およびクライアント構成の実装方法を学ぶために、お気軽にスキップしてください。それ以外の場合は、読み進めて代わりに転送DNSサーバーをセットアップする方法を学習してください。転送DNSサーバーとして構成する転送DNSサーバーがインフラストラクチャに適している場合は、代わりに簡単に設定できます。キャッシングサーバー構成で中断した構成から始めます。+`ファイルは次のようになります。};};DNSサーバーを特定のクライアントリストに制限するために、同じACLリストを使用します。サーバーが再帰クエリを実行しようとしないように構成を変更する必要があります。+`をnoに変更しないでください。転送サーバーは、権限のないゾーンのクエリに応答することにより、依然として再帰サービスを提供しています。代わりに、リクエストを転送するキャッシュサーバーのリストを設定する必要があります。+`ブロック内で行われます。+」と呼ばれるブロックを作成します。only”に設定する必要があります。終了すると、構成ファイルは次のようになります。+」パラメーターの変更です。現在の構成では、転送されたDNSサーバーの構成によっては、ログに次のようなエラーが表示される場合があります。+」設定を「yes」に変更し、dnssecを明示的に有効にします。.完了したら、ファイルを保存して閉じます。これで、転送DNSサーバーが配置されました。次のセクションに進み、構成ファイルを検証してデーモンを再起動します。設定をテストし、バインドを再起動しますバインドサーバーがキャッシュDNSサーバーまたは転送DNSサーバーとして構成されたので、変更を実装する準備が整いました。思い切ってシステムのBindサーバーを再起動する前に、Bindに含まれているツールを使用して構成ファイルの構文を確認する必要があります。次のように入力することで、これを簡単に行うことができます。named-checkconf構成に構文エラーがない場合、シェルプロンプトは出力を表示せずにすぐに戻ります。構成ファイルに構文エラーがある場合は、エラーとエラーが発生した行番号について警告されます。この場合は、戻ってファイルのエラーを確認してください。構成ファイルに構文エラーがないことを確認したら、バインドデーモンを再起動して変更を実装します。restartその後、クライアントマシンをセットアップする間、サーバーログに注意して、すべてがスムーズに進むようにします。サーバーでこれを実行したままにします。/var/log/syslog次に、新しいターミナルウィンドウを開いて、クライアントマシンを構成します。クライアントマシンを構成するサーバーが稼働しているので、クエリにこのDNSサーバーを使用するようにクライアントマシンを構成できます。クライアントマシンにログインします。使用しているクライアントが、DNSサーバーに設定したACLグループで指定されていることを確認してください。しないと、DNSサーバーはクライアントへの要求の処理を拒否します。resolv.conf`ファイルを編集して、サーバーがネームサーバーを指すようにする必要があります。ここで行った変更は、再起動するまで持続します。これはテストに最適です。テストの結果に満足したら、これらの変更を永続的にすることができます。テキストエディターでsudo権限でファイルを開きます。`ディレクティブを設定することでクエリを解決するために使用するDNSサーバーをリストします。209.244.0.3ファイルを保存して閉じます。これで、いくつかの一般的なツールを使用して、クエリが正しく解決できるかどうかをテストできます。+`を使用して、ドメインに接続できることをテストできます。google.com`に接続できることを意味します。+`のようなDNS固有のツールを使用して、より詳細な情報を取得できます。64クエリに36ミリ秒かかったことがわかります。再度リクエストを行うと、サーバーはキャッシュからデータをプルし、応答時間を短縮する必要があります。64ご覧のとおり、キャッシュされた応答は非常に高速です。」オプションを使用して、見つかったIPアドレス(この例では「+140.211.169.4」)を使用して、逆ルックアップをテストすることもできます。117ご覧のとおり、逆引きも成功します。DNSサーバーに戻って、テスト中にエラーが記録されているかどうかを確認する必要があります。表示される可能性のある一般的なエラーの1つは次のとおりです。2a00:d78:0:102:193:176:144:22#53これらは、サーバーがIPv6情報を解決しようとしているが、サーバーがIPv6用に構成されていないことを示します。この問題は、バインドにIPv4のみを使用するように指示することで修正できます。+」フラグを含め、IPv4のみの動作を強制します。"ファイルを保存して閉じます。サーバーを再起動します。restartこれらのエラーがログに再び表示されることはありません。+」設定は、再起動後も存続しません。最後に変更を行うには、このファイルの生成に使用されるファイルを変更する必要があります。+`パラメーターを探します。既存のエントリを削除してDNSサーバーに置き換えるか、DNSサーバーをオプションの1つとして追加することができます。.完了したら、ファイルを保存して閉じます。次回の起動時に、設定が適用されます。+`ファイルを開く必要があります。」で始まる行を探します。他のDNSサーバーをフォールバックとして使用したくない場合は、他のエントリを削除します。DNS1=完了したら、ファイルを保存して閉じます。クライアントは、次回の起動時にこれらの設定を使用する必要があります。結論これで、クライアントにサービスを提供するようにDNSサーバーまたはキャッシュDNSサーバーを構成する必要があります。これは、管理しているマシンのDNSクエリを高速化する素晴らしい方法です。独自のドメインゾーンに対して権限を持つDNSサーバーを作成する場合は、https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-an-authoritative-onlyを構成できます。[権限のある専用DNSサーバー]またはこれらのソリューションを組み合わせます。