Citrix ADC

DNS64

Citrix ADC DNS64機能は、IPv4のみのドメインに対してAAAA要求を送信するIPv6クライアントに対して、合成されたDNS AAAAレコードで応答します。DNS64 機能は NAT64 機能と共に使用され、IPv6 のみのクライアントと IPv4 のみのサーバー間のシームレスな通信が可能になります。DNS64 では、IPV6 のみのクライアントによる IPv4 ドメインの検出が可能になり、NAT64 ではクライアントとサーバー間の通信が可能になります。

AAAAレコードを合成するために、Citrix ADCアプライアンスはDNSサーバーからDNS Aレコードをフェッチします。DNS64プレフィックスは、Citrix ADCアプライアンス上で構成された96ビットのIPv6プレフィックスです。Citrix ADCアプライアンスは、DNS64プレフィックス(96ビット)とIPv4アドレス(32ビット)を連結してAAAAレコードを合成します。

IPv6クライアントとIPv4サーバー間の通信を可能にするために、DNS64およびNAT64構成のCitrix ADCアプライアンスは、IPv6クライアント側またはIPv4サーバー側のいずれかに展開できます。どちらの場合も、Citrix ADCアプライアンスのDNS64構成は似ており、DNSサーバーのプロキシサーバーとして機能する負荷分散仮想サーバーが含まれます。Citrix ADCアプライアンスをクライアント側に展開する場合は、負荷分散仮想サーバーをIPv6クライアント上でドメインのネームサーバーとして指定する必要があります。

DNS64およびNAT64構成を持つCitrix ADCアプライアンスがIPv4側で構成されている例を考えてみましょう。この例では、企業が IPv4 アドレスを持つサーバ S1 上のサイト www.example.com をホストします。IPv6クライアントとIPv4サーバーS1間の通信を可能にするために、Citrix ADCアプライアンスNS1はDNS64およびステートフルNAT64構成で展開されます。

DNS64 構成には、DNS ロードバランシング仮想サーバー LBVS-DNS64-1 が含まれています。このサーバーでは、DNS64 オプションが有効になっています。DNS64 ポリシー 1 という名前の DNS64 ポリシーと、関連する DNS64 アクション 1 というアクションも NS1 上で構成され、DNS64 ポリシー 1 は LBVS-DNS64-1 にバインドされます。LBVS-DNS64-1 は、DNS サーバー DNS-1 および DNS-2 の DNS プロキシサーバーとして機能します。

LBVS-DNS64-1 に到着するトラフィックが DNS64-Policy 1 で指定された条件と一致する場合、トラフィックは DNS64-アクション 1 の設定に従って処理されます。DNS64-Action-1 は、AAAA レコードを合成するために DNS サーバから受信した A レコードと共に使用される DNS64 プレフィクスを指定します。

Citrix ADCアプライアンスでグローバルDNSパラメータキャッシュコードが有効になっているため、アプライアンスはDNSレコードをキャッシュします。この設定は、DNS64 が正常に動作するために必要です。

次の表は、上の例で使用される設定の一覧です。設定例

次に、この例のトラフィックフローを示します。

  1. IPv6 クライアント CL1 は、サイト www.example.com の IPv6 アドレスに対する DNS AAAA 要求を送信します。
  2. この要求は、Citrix ADC アプライアンス NS1 上の DNS 負荷分散仮想サーバー LBVS-DNS64-1 によって受信されます。
  3. NS1 は、要求された AAAA レコードについて DNS キャッシュレコードをチェックし、サイト www.example.com の AAAA レコードが DNS キャッシュに存在しないことを検出します。
  4. LBVS-DNS64-1 の負荷分散アルゴリズムは、DNS サーバー DNS-1 を選択し、AAAA 要求をそれに転送します。
  5. サイト www.example.com は IPv4 サーバーでホストされているため、DNS サーバー DNS-1 には、サイト www.example.com の AAAA レコードがありません。
  6. DNS-1 は、空の DNS AAAA 応答またはエラーメッセージを LBVS-DNS64-1 に送信します。
  7. LBVS-DNS64-1 で DNS64 オプションが有効になっており、CL1 からの AAAA 要求は DNS64 ポリシー 1 で指定された条件と一致するため、NS1 は www.example.com の IPv4 アドレスに対する DNS A 要求を DNS-1 に送信します。
  8. DNS-1 は、www.example.com の DNS A レコードを LBVS-DNS64-1 に送信することで応答します。A レコードには、www.example.com の IPv4 アドレスが含まれます。
  9. NS1 は、サイト www.example.com の AAAA レコードを次のように合成します。
    • サイト www.example.com の IPv6 アドレス = 関連付けられた DNS64 アクションで指定された DNS64 プレフィックス (96 ビット) の連結、DNS A レコードの IPv4 アドレス (32 ビット) = 2001: DB 8:300:: 192.0.2.60
  10. NS1 は、統合された AAAA レコードを IPv6 クライアント CL1 に送信します。NS1は、Aレコードをメモリにキャッシュします。NS1 は、キャッシュされた A レコードを使用して、後続の AAAA 要求に対して AAAA レコードを合成します。

DNS64 構成で考慮すべきポイント

Citrix ADCアプライアンスでDNS64を構成する前に、次の点を考慮してください。

  • Citrix ADCアプライアンスのDNS64機能は、RFC 6174に準拠しています。

  • Citrix ADCアプライアンスのDNS64機能は、DNSSECをサポートしていません。Citrix ADCアプライアンスは、DNSサーバーから受信したDNSSEC応答からのAAAAレコードを合成しません。応答は、RRSIG レコードが含まれている場合のみ、DNSSEC 応答として分類されます。

  • Citrix ADCアプライアンスは、96ビットの長さのDNS64プレフィックスをサポートしています。

  • DNS64機能はNAT64機能とともに使用されていますが、DNS64およびNAT64構成はCitrix ADCアプライアンスに依存しません。特定のフローでは、クライアントが受信した合成 IPv6 アドレスが特定の NAT64 設定にルーティングされるように、DNS64 プレフィクスと NAT64 プレフィクスパラメータに同じ IPv6 プレフィクス値を指定する必要があります。Citrix ADC アプライアンスでの NAT64 の設定の詳細については、ステートフル NAT64を参照してください。

  • Citrix ADCアプライアンスによるDN64処理の異なるケースを次に示します。

    • DNSサーバーからのAAAA応答にAAAAレコードが含まれている場合、応答の各レコードに、Citrix ADCアプライアンス上で特定のDNS64構成に対して構成された除外ルールのセットがチェックされます。Citrix ADCは、除外ルールと一致する接頭辞を持つIPv6アドレスを応答から削除します。結果の応答に少なくとも1つのIPv6レコードが含まれている場合、Citrix ADCアプライアンスはこの応答をクライアントに転送します。それ以外の場合は、アプライアンスはドメインのAレコードからのAAAA応答を合成し、IPv6クライアントに送信します。

    • DNS サーバからの AAAA 応答が空の応答応答である場合、アプライアンスは同じドメイン名の A リソースレコードを要求するか、アプライアンスがドメインの正規のドメインネームサーバである場合は、自身のレコードを検索します。要求の結果が空の応答またはエラーになった場合、同じ要求がクライアントに転送されます。

    • DNSサーバーからの応答にRCODE=1(フォーマットエラー)が含まれている場合、Citrix ADCアプライアンスは同じものをクライアントに転送します。タイムアウト前に応答がない場合、Citrix ADCアプライアンスはRCODE=2(サーバー障害)の応答をクライアントに送信します。

    • DNS サーバからの応答に CNAME が含まれる場合、終端の A レコードまたは AAAA レコードに到達するまでチェーンが続きます。CNAMEにAAAAリソースレコードがない場合、Citrix ADCアプライアンスは、AAAAレコードの合成に使用するDNS Aレコードを取得します。CNAME チェーンは、合成された AAAA レコードとともに応答セクションに追加され、クライアントに送信されます。

  • Citrix ADCアプライアンスのDNS64機能は、PTR要求への応答もサポートしています。IPv6 アドレスのドメインに対する PTR 要求がアプライアンスで受信され、IPv6 アドレスが設定された DNS64 プレフィクスのいずれかと一致すると、アプライアンスは IP6-ARPA ドメインを対応する IN-ADDR にマッピングする CNAME レコードを作成します。ARPA ドメインと、新たに形成された IN-ADDR.ARPA ドメインが解決に使用されます。アプライアンスはローカルのPTRレコードを検索し、そのレコードが存在しない場合、アプライアンスはIN-ADDR.ARPAドメインに対するPTR要求をDNSサーバに送信します。Citrix ADCアプライアンスは、DNSサーバーからの応答を使用して、最初のPTR要求に対する応答を合成します。

構成の手順

Citrix ADCアプライアンスでステートフルNAT64構成に必要なエンティティを作成するには、次の手順に従います。

  • DNS サービスを追加します。DNSサービスは、Citrix ADCアプライアンスがDNSプロキシサーバーとして機能するDNSサーバーを論理的に表現したものです。サービスのオプションパラメータの設定の詳細については、負荷分散を参照してください。

  • DNS64アクションとDNS64ポリシーを追加し、DNS64アクションをDNS64ポリシーにバインドします。DNS64 ポリシーは、関連する DNS64 アクションの設定に従って、DNS64 処理のトラフィックと照合する条件を指定します。DNS64 アクションは、必須の DNS64 プレフィクスと、オプションの除外ルールとマッピングされたルールの設定を指定します。

  • DNS 負荷分散仮想サーバーを作成し、DNS サービスと DNS64 ポリシーをバインドします。DNS 負荷分散仮想サーバーは、バインドされた DNS サービスによって表される DNS サーバーの DNS プロキシサーバーとして機能します。仮想サーバに着信するトラフィックは、DNS64 処理用のバインドされた DNS64 ポリシーと照合されます。ロードバランシング仮想サーバのオプションパラメータの設定の詳細については、負荷分散を参照してください。

    :CLI には、これら 2 つのタスクに対して個別のコマンドがありますが、GUI では 1 つのダイアログボックスにまとめられています。

    DNS レコードのキャッシュを有効にします。Citrix ADCアプライアンスのグローバルパラメータを有効にして、DNSプロキシ操作によって取得されるDNSレコードをキャッシュします。DNS レコードのキャッシュの有効化の詳細については、ドメインネームシステムを参照してください。

CLI のプロシージャ

CLI を使用して DNS タイプのサービスを作成するには、次の手順を実行します。

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

  • add service <name> <IP> <serviceType> <port> …

CLI を使用して DNS64 アクションを作成するには、次の手順を実行します。

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

  • add dns action64 <actionName> -Prefix <ipv6_addr|*> [-mappedRule <expression>] [-excludeRule <expression>]

CLI を使用して DNS64 ポリシーを作成するには、次の手順を実行します。

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

  • add dns policy64 <name> -rule <expression> -action <string>

CLI を使用して DNS ロードバランシング仮想サーバを作成するには、次の手順を実行します。

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

  • add lb vserver <name> DNS <IPAddress> <port> -dns64 ( ENABLED | DISABLED ) [-bypassAAAA ( YES | NO )] …

CLI を使用して DNS サービスと DNS64 ポリシーを DNS ロードバランシング仮想サーバにバインドするには、次の手順を実行します。

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

  • bind lb vserver <name> <serviceName> …
  • bind lb vserver <name> -policyName <string> -priority <positive_integer> …

GUIのプロシージャ

GUI を使用して DNS タイプのサービスを作成するには、次の手順を実行します。

  1. [トラフィック管理] > [負荷分散] > [サービス] に移動し、新しいサービスを追加します。
  2. 次のパラメーターを設定します。
    • サービス名*
    • サーバ*
    • プロトコル*(ドロップダウンリストから DNS を選択します)
    • ポート*

GUIを使用してDNS64アクションを作成するには、次の手順を実行します。

[トラフィック管理] > [DNS] > [アクション] に移動し、[DNS アクション 64] タブで、新しい DNS64 アクションを追加します。

GUI を使用して DNS64 ポリシーを作成するには、次の手順を実行します。

[トラフィック管理] > [DNS] > [ポリシー] に移動し、[DNS ポリシー 64] タブで、新しい DNS64 ポリシーを追加します。

GUI を使用して DNS ロードバランシング仮想サーバーを作成し、DNS サービスと DNS64 ポリシーをバインドするには、次の手順を実行します。

  1. [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、新しい仮想サーバーを追加します。
  2. 次のパラメーターを設定します。
    • 名前*
    • IPアドレス*
    • プロトコル*(ドロップダウンリストから DNS を選択します)
    • ポート*
  3. [DNS64 を有効にする] オプションを選択します。
  4. [サービス]ペインで、サービスを仮想サーバにバインドします。
  5. [Policies] ペインで、ポリシーを仮想サーバにバインドします。

構成例

 > add service SVC-DNS-1 203.0.113.50 DNS 53
 Done

> add service SVC-DNS-2 203.0.113.60 DNS 53
 Done

> add dns Action64 DNS64-Action-1 -Prefix 2001:DB8:300::/96
 Done

> add dns Policy64 DNS64-Policy-1 -rule "CLIENT.IPv6.SRC.IN_SUBNET(2001:DB8:5001::/64)"
-action DNS64-Action-1
 Done

> add lb vserver LBVS-DNS64-1 DNS 2001:DB8:9999::99 53 -dns64 ENABLED
 Done

> bind lb vserver LBVS-DNS64-1 SVC-DNS-1
 Done

> bind lb vserver LBVS-DNS64-1 SVC-DNS-2
 Done

> bind lb vserver LBVS-DNS64-1 -policyname DNS64-Policy-1 -priority 2
 Done

DNS64