web-dev-qa-db-ja.com

独自のDNSリカーサーまたはローカルキャッシュデーモンを実行する必要がありますか?

私はAWCEC2を使用しています。サーバーがサードパーティのドメインに対して多くのクエリを実行するため、次のオプションを考えています。

  • すべてのサーバーにnscdをインストールします
  • デフォルトのec2名リカーサーを使用する
  • 自分の名前のリカーサをインストールする
  • 8.8.8.8を使用するだけです

一元化された再帰をインストールすることを躊躇しているため、単一障害点であり、次のような攻撃を受ける可能性があります: http://support.godaddy.com/help/article/1184/what-risks-are-associated-with -recursive-dns-queries

  1. 上記の記事が示唆するように、ネームサーバーサポートの再帰的DNSクエリを使用することは最近一般的ですか?

  2. セキュリティとパフォーマンスの観点から、nscdのインストールを考えていますが、何か欠点はありますか?

6
Ryan

nscdは、DNS要求をキャッシュするだけではありません。また、ユーザー名とグループのルックアップをキャッシュし、他のあまり一般的ではない用途もキャッシュします。これはLinuxシステムの標準であり(glibcの一部としてパッケージ化されています)、おそらくすでにインストールされており、メモリの使用量が非常に少ないため、実行しない理由はありません。それ以上の構成を必要とせずに、良好なキャッシュ動作を提供します。

EC2は外部トラフィックに対して課金し、8.8.8.8(Googleリゾルバー)へのトラフィックはデータセンター内部のトラフィックよりもはるかに遅くなるため、特別な理由がない限り、EC2DNSを選択する必要があります。必要に応じて、Amazon DNSのバックアップとしてGoogle DNS(8.8.8.8および8.8.4.4)を設定できますが、残りのゾーンが機能しているときにそれらがダウンすることはほとんどありません。

EC2仮想マシンに関する私の推奨事項:

  • デフォルトで設定されているnscdを使用します(/ usr/sbin/nscd。ディストリビューションの実行構成をチェックして、サービスが起動時に開始されていることを確認する必要があります)。
  • デフォルトとしてAmazonDNSサーバーを使用します。
  • 必要に応じて、Googleサーバーをバックアップとして追加します。これを行う方法は、ディストリビューションによって異なります。よくわからない場合は、glibc(nscd)が参照するファイルである/etc/resolv.confを確認してください。通常、構成方法を示すコメントがあります。サーバーはresolv.confにリストされている順序でチェックされるため、最初にAmazon IPを追加してから、何らかの理由でAmazonが機能していない場合、GoogleIPを追加するとnscdがGoogleにフォールバックします。

出典:nscd(8)およびresolv.conf(5)のマニュアルページ

5

ネットワーク内の3台以上のマシンに dnsmasq または dnscache をインストールします。インフラストラクチャ全体にAWS VPCを使用することをお勧めしますが、これはやや別の問題です。

すべてのホストをこれらの3つのネームサーバーにポイントします。

次のようにresolv.confを構成します。

nameserver IP_ADDRESS_1
nameserver IP_ADDRESS_2
nameserver IP_ADDRESS_3
options rotate 
options timeout:1

上記の設定には多くの利点があります。まず、最低3つのホストを使用することにより、再帰的なネームサーバーレベルでの復元力があります。次に、サーバー1が初めてIP_ADDRESS_1に対してルックアップを実行するときに、IP_ADDRESS_1上のそのネームサーバーが結果をキャッシュするというキャッシュの利点が得られます。別のサーバーがルックアップを実行すると、キャッシュヒット時に結果がはるかに速く返されます。第3に、ローテーションオプションを設定することで、再帰的なDNSインフラストラクチャ全体で負荷を分散します。最後に、timeout:1を設定することで、DNSサーバーの1つをメンテナンスのためにダウンさせることによる影響を最小限に抑えることができます。

3
dmourati

Ubuntuはデフォルトでdnsmasqをインストールし、DNSキャッシュをセットアップするための適度に安全で高速な方法を提供するはずです。

https://unix.stackexchange.com/a/59424 の詳細

2

リンクしたGoDaddyの記事では、open再帰ネームサーバーの実行に関する問題の概要を説明しています。確かに、それはワームの缶であり、あなたはそれをしたくないでしょう。再帰者がループバックまたは内部インターフェイス内でのみリッスンしているか、他の人がアクセスできないようにファイアウォールで保護されている限り、この記事は適用されません。

あなたの考え方は素晴らしく、あなたが考えているすべての選択肢は素晴らしいです。 EC2またはGoogleのリカーサーのいずれかを信頼する場合は、決して先に進まないでください。

実際、多くの中規模から大規模の組織が独自の再帰を実行することは非常に一般的です。

パフォーマンスのために、各アベイラビリティーゾーンにリカーサーのペアをインストールし、それらを/etc/resolv.confの最初の2つのネームサーバーになるように設定してから、EC2リカーサーを追加します。このように、あなたはそれを確信することができます

独自のリカーサをインストールすると、レイテンシが最小限に抑えられ(8.8.8.8に移行するのではなく)、キャッシュが他のユーザーと共有されなくなります(長所と短所の両方があります)。

現代的で、手入れが行き届いていて、軽量で高性能なリカーサーについては、 nbound を強くお勧めします(ここで独立した推奨事項を参照してください: http://info.menandmice.com/blog/bid/ 37244/10-使用する理由-Unbound-DNS

2
Wil Tan

私見それはあなたの仕事のすべてです。少量のアドレス(1000rpsから10ドメインなど)に対して大量のクエリを実行する場合、ローカルキャッシュデーモンで十分です。大量のアドレス(1秒あたり1000ドメインに1つのクエリ)に拡散するように要求する場合は、ローカルDNSリカーサーを使用して、クエリプロセスを高速化し、DNSトラフィックを削減することをお勧めします。キャッシュを設定することを忘れないでください。ローカルのリコーサーを使用します。

0
Paul Rudnitskiy