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 の設定例。
次に、この例のトラフィックフローを示します。
- IPv6 クライアント CL1 は、サイト www.example.com の IPv6 アドレスに対して DNS AAAA リクエストを送信します。
- リクエストは、NetScalerアプライアンスNS1上のDNS負荷分散仮想サーバーLBVS-DNS64-1によって受信されます。
- NS1 は DNS キャッシュレコードに要求された AAAA レコードがないかどうかを確認し、サイト www.example.com の AAAA レコードが DNS キャッシュに存在しないことを検出します。
- LBVS-DNS64-1のロードバランシングアルゴリズムは、DNSサーバーDNS-1を選択し、AAAAリクエストをそのサーバーに転送します。
- サイト www.example.com は IPv4 サーバーでホストされているため、DNS サーバー DNS-1 にはサイト www.example.com の AAAA レコードはありません。
- DNS-1 は、空の DNS AAAA 応答またはエラーメッセージを LBVS-DNS64-1 に送信します。
- LBVS-DNS64-1 では DNS64 オプションが有効になっていて、CL1 からの AAAA リクエストは DNS64-Policy-1 で指定された条件と一致するため、NS1 は www.example.com の IPv4 アドレスの DNS A リクエストを DNS-1 に送信します。
- DNS-1 は www.example.com の DNS A レコードを LBVS-DNS64-1 に送信することで応答します。A レコードには www.example.com の IPv4 アドレスが含まれています。
- NS1 はサイト www.example.com の AAAA レコードを次のように合成します。
- サイト www.example.com の IPv6 アドレス = 関連する DNS64Action で指定されている DNS64 プレフィックス (96 ビット) と DNS A レコードの IPv4 アドレス (32 ビット) を連結したもの = 2001: DB 8:300:: 192.0.2.60
- 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 プレフィクス値を指定する必要があります。NetScaler ADCアプライアンスでのNAT64の構成の詳細については、 ステートフルNAT64を参照してください。
-
NetScaler 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サービスは、NetScaler 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 レコードのキャッシュを有効にします。NetScaler ADCアプライアンスのグローバルパラメータを有効にして、DNSプロキシ操作によって取得されるDNSレコードをキャッシュします。DNS レコードのキャッシュの有効化の詳細については、「 ドメインネームシステム」を参照してください。
CLI のプロシージャ
CLI を使用して DNS タイプのサービスを作成するには:
コマンドプロンプトで入力します。
- add service <name> <IP> <serviceType> <port> …
CLI を使用して DNS64 アクションを作成するには:
コマンドプロンプトで入力します。
- add dns action64 <actionName> -Prefix <ipv6_addr|*> [-mappedRule \
] \[-excludeRule \\ ]
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 タイプのサービスを作成するには:
- [トラフィック管理] > [負荷分散] > [サービス] に移動し、新しいサービスを追加します。
- 次のパラメーターを設定します。
- サービス名*
- サーバー*
- プロトコル* (ドロップダウンリストから DNS を選択)
- ポート*
GUI を使用して DNS64 アクションを作成するには:
[トラフィック管理] > [DNS] > [アクション] に移動し、[DNS アクション64] タブで新しい DNS64 アクションを追加します。
GUI を使用して DNS64 ポリシーを作成するには:
[トラフィック管理] > [DNS] > [ポリシー] に移動し、[DNSポリシー64] タブで新しい DNS64 ポリシーを追加します。
DNS負荷分散仮想サーバーを作成し、GUIを使用してDNSサービスとDNS64ポリシーをそれにバインドするには:
- [トラフィック管理] > [負荷分散] > [仮想サーバー] に移動し、新しい仮想サーバーを追加します。
- 次のパラメーターを設定します。
- 名前*
- IP アドレス*
- プロトコル* (ドロップダウンリストから DNS を選択)
- ポート*
- 「DNS64 を有効にする」オプションを選択します。
- サービスペインで、サービスを仮想サーバーにバインドします。
- ポリシーペインで、ポリシーを仮想サーバーにバインドします。
構成例
> 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-->