Citrix ADC

Citrix ADCアプライアンスをDNSプロキシサーバーとして構成する

ADCアプライアンスは、DNSプロキシ・サーバとして、単一のDNSサーバまたはDNSサーバのグループのプロキシとして機能できます。要求と応答の流れを次のサンプルトポロジ図に示します。

図1:DNSプロキシとしてのCitrix ADC

DNSプロキシとしてのNetScaler

デフォルトでは、Citrix ADCアプライアンスはDNSネームサーバーからの応答をキャッシュします。アプライアンスは DNS クエリーを受信すると、クエリーされたドメインがキャッシュ内でチェックされます。照会されたドメインのアドレスがキャッシュに存在する場合、Citrix ADCは対応するアドレスをクライアントに返します。それ以外の場合、DNS ネームサーバーにクエリが転送され、DNS ネームサーバーはアドレスの可用性をチェックし、Citrix ADC に返します。その後、Citrix ADCはクライアントにアドレスを返します。

以前にキャッシュされたドメインに対する要求の場合、Citrix ADCは、構成されたDNSサーバーに問い合わせることなく、キャッシュからドメインのアドレスレコードを提供します。

アプライアンスは、レコードの存続時間(TTL)値が設定値に達すると、キャッシュに格納されたレコードを破棄します。期限切れのレコードを要求するクライアントは、Citrix ADCがサーバーからレコードを取得し、キャッシュを更新するまで待機する必要があります。この遅延を回避するために、Citrix ADCは、レコードの有効期限が切れる前にサーバーからレコードを取得することによって、キャッシュを積極的に更新します。

次の表に、Citrix ADC上で構成する必要のあるエンティティの名前の例と値を示します。

表1. DNS プロキシエンティティの設定例

エンティティタイプ 名前 IPアドレス 種類 ポート
LB 仮想サーバ Vserver-DNS-1 10.102.29.40 DNS 53
サービス Service-DNS-1 10.102.29.50 DNS 53
サービス Service-DNS-2 10.102.29.51 DNS 53

次の図は、DNSプロキシのエンティティと、Citrix ADC上で構成されるパラメーターの値を示しています。

図2:DNS プロキシエンティティモデル

DNS プロキシエンティティモデル

DNS プロキシを構成するには、負荷分散サービスと仮想サーバーを構成する方法を知る必要があります。

負荷分散仮想サーバーの作成

Citrix ADCでDNSプロキシを構成するには、DNSタイプの負荷分散仮想サーバーを構成します。再帰クエリをサポートする DNS サーバーのセットを負荷分散するように DNS 仮想サーバーを構成するには、[再帰使用可能] オプションを設定する必要があります。このオプションを使用すると、DNS 仮想サーバからの DNS 応答で RA ビットが ON に設定されます。

負荷分散仮想サーバの作成手順については、負荷分散を参照してください。

DNS サービスの作成

タイプ DNS の負荷分散仮想サーバーを作成したら、DNS サービスを作成する必要があります。DNS サービスを追加、変更、有効化、無効化、および削除できます。DNS サービスの作成手順については、負荷分散を参照してください。

負荷分散仮想サーバーを DNS サービスにバインドする

DNS プロキシ構成を完了するには、DNS サービスを負荷分散仮想サーバーにバインドする必要があります。負荷分散仮想サーバにサービスをバインドする手順については、負荷分散を参照してください。

TCP を使用するように DNS プロキシのセットアップを構成する

一部のクライアントは、DNS 通信にユーザーデータグラムプロトコル (UDP) を使用します。ただし、UDP は最大パケットサイズを 512 バイトに指定しています。ペイロードの長さが 512 バイトを超える場合、クライアントは伝送制御プロトコル (TCP) を使用する必要があります。クライアントがCitrix ADCアプライアンスにDNSクエリを送信すると、アプライアンスはいずれかのネームサーバーにクエリを転送します。応答がUDPパケットに対して大きすぎる場合、ネームサーバーはCitrix ADCに対する応答にトランケーションビットを設定します。切り捨てビットは、応答が UDP に対して大きすぎること、クライアントが TCP 接続を介してクエリを送信する必要があることを示します。Citrix ADCは、切り捨てビットがそのままクライアントに応答を中継し、クライアントがポート53でDNS負荷分散仮想サーバーのIPアドレスとのTCP接続を開始するのを待ちます。クライアントは、TCP 接続を介して要求を送信します。次に、Citrix ADCアプライアンスは要求をネームサーバーに転送し、応答をクライアントに中継します。

DNSにTCPプロトコルを使用するようにCitrix ADCを構成するには、DNS_TCPタイプの負荷分散仮想サーバーとサービスを構成する必要があります。DNS_TCP タイプのモニタを構成して、サービスの状態を確認することができます。DNS_TCP 仮想サーバ、サービス、およびモニタの作成手順については、負荷分散を参照してください。

レコードをプロアクティブに更新するために、Citrix ADCはサーバーへのTCP接続を使用してレコードを取得します。

重要

DNSにUDPを使用し、UDPのペイロード長が512バイトを超える場合にのみTCPを使用するようにCitrix ADCを構成するには、DNSおよびDNS_TCPサービスを構成する必要があります。DNS_TCP サービスの IP アドレスは、DNS サービスの IP アドレスと同じである必要があります。

DNS エントリの有効期間値を構成する

TTL は、ドメイン名およびレコードタイプが同じすべての DNS レコードで同じです。レコードの 1 つで TTL 値が変更されると、新しい値が同じドメイン名とタイプのすべてのレコードに反映されます。デフォルトの TTL 値は 3600 秒です。最小値は 0 で、最大値は 604800 です。DNS エントリの TTL 値が最小値よりも小さいか、最大値よりも大きい場合は、それぞれ最小 TTL 値または最大 TTL 値として保存されます。

CLI を使用して最小 TTL または最大 TTL を指定します

Citrix ADCコマンドプロンプトで次のコマンドを入力して、TTLの最小値と最大値を指定し、構成を確認します。

-  set dns parameter [-minTTL <secs>] [-maxTTL <secs>]
-  show dns parameter

例:

> set dns parameter -minTTL 1200 -maxTTL 1800
 Done
> show dns parameter
        DNS parameters:
        DNS retries: 5
        Minimum TTL: 1200               Maximum TTL: 1800
            .
            .
            .
 Done
>

GUI を使用して最小 TTL または最大 TTL を指定します

  1. [トラフィック管理] > [DNS] に移動します。
  2. 詳細ウィンドウで、[設定] の [DNS 設定の変更] をクリックします。
  3. [DNS パラメーターの構成] ダイアログボックスの [TTL] の [最小] ボックスと [最大] ボックスに、それぞれ最小有効期間 (秒単位) と最大有効期間 (秒単位) を入力し、[OK] をクリックします。

メモ: TTL の有効期限が切れると、レコードはキャッシュから削除されます。Citrix ADCは事前にサーバーに接続し、DNSレコードの有効期限が切れる直前にDNSレコードを取得します。

DNS レコードをフラッシュする

キャッシュに存在するすべてのDNSレコードを削除できます。たとえば、変更が行われた後にサーバーを再起動したときに、DNS レコードをフラッシュできます。

CLI を使用してすべてのプロキシレコードを削除する

Citrix ADCコマンドプロンプトで、次のように入力します。

flush dns proxyRecords

GUI を使用してすべてのプロキシレコードを削除する

  1. [トラフィック管理] > [DNS] > [レコード] に移動します。
  2. 詳細ウィンドウで、[プロキシレコードのフラッシュ] をクリックします。

DNS リソースレコードを追加する

Citrix ADCアプライアンスがDNSプロキシサーバーとして構成されているドメインにDNSレコードを追加できます。DNS レコードの追加の詳細については、「DNS リソースレコードの設定」を参照してください。

負荷分散 DNS 仮想サーバーを削除する

負荷分散仮想サーバの削除については、負荷分散を参照してください。

クライアント接続での同時 DNS 要求の数を制限する

<clientip: port>-<vserver ip:port> タプルで識別される 1 つのクライアント接続での同時 DNS 要求の数を制限できます。同時DNSリクエストとは、Citrix ADCアプライアンスがネームサーバーに転送し、アプライアンスが応答を待機しているリクエストです。クライアント接続での同時要求の数を制限すると、敵対的なクライアントが大量の DNS 要求を送信して分散型サービス拒否 (DDoS) 攻撃を試みたときに、ネームサーバーを保護できます。クライアント接続の制限に達すると、未処理の要求数が制限を下回るまで、接続上の後続の DNS 要求はドロップされます。この制限は、Citrix ADCアプライアンスがキャッシュから送信される要求には適用されません。

このパラメータのデフォルト値は 255 です。ほとんどのシナリオでは、この既定値で十分です。ネームサーバーが通常の動作条件で多数の同時 DNS 要求を処理する場合は、大きい値またはゼロ (0) のいずれかを指定できます。値 0 を指定すると、この機能が無効になり、1 つのクライアント接続で許可される DNS 要求の数に制限はありません。これはグローバルパラメーターであり、Citrix ADCアプライアンスで構成されているすべてのDNS仮想サーバーに適用されます。

CLI を使用して、単一のクライアント接続で許可される同時 DNS 要求の最大数を指定する

コマンドプロンプトで次のコマンドを入力して、単一のクライアント接続で許可される同時 DNS 要求の最大数を指定し、構成を確認します。

-  set dns parameter -maxPipeline <positive_integer>
-  show dns parameter

例:

> set dns parameter -maxPipeline 1000
 Done
> show dns parameter
        DNS parameters:
        DNS retries: 5
        .
        .
        .
        Max DNS Pipeline Requests: 1000
 Done

GUI を使用して、1 つのクライアント接続で許可される同時 DNS 要求の最大数を指定する

  1. [トラフィック管理] > [DNS] に移動します。
  2. 詳細ウィンドウで、[DNS 設定の変更] をクリックします。
  3. [DNS パラメーターの構成] ダイアログボックスで、[DNS パイプライン要求の最大数] の値を指定します。
  4. [OK] をクリックします。