ADC

DNS64

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

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

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

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

DNS64構成には、DNS64オプションが有効になっているDNS負荷分散仮想サーバーLBVS-DNS64-1が含まれます。DNS64-Policy-1 という名前の DNS64 ポリシーと、DNS64-Action-1 という名前の関連する DNS64 アクションも NS1 で設定されており、DNS64-Policy-1 は LBVS-DNS64-1 にバインドされています。LBVS-DNS64-1 は DNS サーバー DNS-1 と DNS-2 の DNS プロキシサーバーとして機能します。

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

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

次の表に、上記の例で使用した設定を示します。 DNS64 の設定例

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

  1. IPv6 クライアント CL1 は、サイト www.example.com の IPv6 アドレスに対して DNS AAAA リクエストを送信します。
  2. リクエストは、NetScalerアプライアンスNS1上のDNS負荷分散仮想サーバーLBVS-DNS64-1によって受信されます。
  3. NS1 は DNS キャッシュレコードに要求された AAAA レコードがないかどうかを確認し、サイト 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-Policy-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 アドレス = 関連する DNS64Action で指定されている 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 構成で考慮すべきポイント

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

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

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

  • NetScalerアプライアンスは、96ビットの長さのDNS64プレフィックスしかサポートしていません。

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

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

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

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

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

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

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

構成の手順

NetScalerアプライアンスでステートフル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 ポリシーを追加します。

DNS負荷分散仮想サーバーを作成し、GUIを使用してDNSサービスとDNS64ポリシーをそれにバインドするには:

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

構成例

 > 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

<!--NeedCopy-->
DNS64