ADC

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

DNSプロキシサーバーとして、ADCアプライアンスは単一のDNSサーバーまたはDNSサーバーグループのプロキシとして機能できます。リクエストとレスポンスの流れは、次のサンプルトポロジー図に示されています。

図1. DNSプロキシとしてのNetScaler

DNSプロキシとしてのNetScaler

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

以前にキャッシュされたドメインへのリクエストの場合、NetScalerは構成済みのDNSサーバーにクエリを実行せずに、キャッシュからドメインのアドレスレコードを提供します。

ドメインのDOT要求では、キャッシュされた情報が暗号化されていない場合、NetScalerはクエリをDNSネームサーバーに転送し、DNSネームサーバーはアドレスの可用性を確認してNetScalerに返します。NetScalerは、クライアントへのアドレスと応答を暗号化します。また、安全なオプションを使用してレコードをキャッシュします。セキュアオプションが有効になっているドメインのUDPまたはTCP要求では、NetScalerは、構成されたDNSサーバーに問い合わせることなく、キャッシュからドメインのアドレスレコードを提供します。

アプライアンスは、レコードの存続可能時間(TTL)値が設定値に達すると、キャッシュに保存されているレコードを破棄します。期限切れのレコードをリクエストするクライアントは、NetScalerがサーバーからレコードを取得してキャッシュを更新するまで待つ必要があります。この遅延を回避するために、NetScalerはレコードの有効期限が切れる前にサーバーからレコードを取得してキャッシュをプロアクティブに更新します。

次の表は、NetScalerで構成する必要があるエンティティのサンプル名と値を示しています。

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

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

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

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

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

DNS プロキシ機能を設定するには、負荷分散サービスと仮想サーバーの設定方法を知っている必要があります。

負荷分散仮想サーバーを作成する

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

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

DNS サービスの作成

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

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

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

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

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

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

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

重要

NetScalerがDNSにUDPを使用し、UDPのペイロード長が512バイトを超える場合にのみTCPを使用するように構成するには、DNSサービスとDNS_TCPサービスの両方を構成する必要があります。DNS_TCP サービスの IP アドレスは DNS サービスの IP アドレスと同じでなければなりません。

DNS エントリの有効期間値の設定

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

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

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

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

例:

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

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

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

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

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

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

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

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

flush dns proxyRecords

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

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

DNS リソースレコードの追加

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

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

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

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

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

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

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

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

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

例:

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

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

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