このセクションでは、EDNS および ECS オプションを NSX Advanced Load Balancer DNS と連携させる方法を説明します。
NSX Advanced Load Balancer DNS 仮想サービスでの EDNS の有効化
NSX Advanced Load Balancer DNS 仮想サービスは、権限を持つ DNS として機能しながら、OPT RR および ECS オプションの情報を直接利用できます。このサービスで情報を解析してクライアント ログに EDNS 拡張機能情報を追加するには、次のスクリーンショットに示すように NSX Advanced Load Balancer ユーザー インターフェイスの [EDNS 拡張の処理] ボックスをオンにするか、NSX Advanced Load Balancer CLI で対応する EDNS パラメータを True に設定します。
ケース 1:NSX Advanced Load Balancer DNS 仮想サービスに権限があり、OPT RR + ECS オプションを受け取った
[EDNS 拡張の処理] ボックスをオンにしたことに加えて、必ず権限を持つドメイン名のリストを指定します。以下に NSX Advanced Load Balancer CLI シーケンスの例を示します。
configure applicationprofile System-DNS dns_service_profile authoritative_domain_names avi.com authoritative_domain_names foo.com save save
以下の図の受信 DNS 要求が次のいずれかのドメイン用であると仮定します。
クライアント システムは、従来の DNS クエリを DNS リゾルバに送信します。送信する要求には OPT RR オプションも ECS オプションも含まれません。
クライアントの送信元アドレスに基づいて、DNS リゾルバは受信する DNS クエリを修正できます。これは、権限を持つ DNS がより多くの情報に基づいた方法で、つまり DNS リゾルバ自体の送信元 IP アドレスではなく、クライアントのアドレスに基づいて応答できるようにするために行います。
NSX Advanced Load Balancer DNS は、ECS オプション内で見つかったアドレス情報に基づいて応答を形成します。
ケース 2:NSX Advanced Load Balancer DNS 仮想サービスに権限がなく、OPT RR + ECS オプションを受け取った
ケース 1 とは対照的に、下図は、NSX Advanced Load Balancer DNS 仮想サービスに権限のないクエリを示しています。NSX Advanced Load Balancer DNS 仮想サービスに DNS サーバ プールが定義されている場合、要求はこのサーバ プールに渡されます。転送された要求の ECS オプションに組み込まれるクライアント サブネット アドレス情報は、次の 2 つの値によって異なります。
DNS リゾルバによって接続および送信される ECS オプションに含まれるサブネットのプレフィックス長パラメータの値。
edns_client_subnet_prefix_len(管理者が CLI を使用して設定した NSX Advanced Load Balancer DNS 仮想サービス アプリケーション プロファイル パラメータ)。値の範囲は 1 ~ 32 です。
どちらのプレフィックス長も次の 2 つの方法で解釈されます。
これは、すべてのアドレス ビットがゼロになるまでのアドレス ビットの先頭の数を示します。
8 ビットの整数倍に切り上げる場合は、渡す必要があるオクテットの数を指定します。
たとえば、プレフィックス長が 19 の場合、サブネットについて次のことを意味します。
サブネット アドレスのビット 20 ~ 32 はゼロです。
24 ビット、つまりサブネットを識別するために渡される 3 つのオクテット。4 番目のオクテットは不要です。
DNS サーバを介して ECS オプションを渡す場合、NSX Advanced Load Balancer DNS 仮想サービスは、クライアントのサブネット アドレスが 2 つのプレフィックス長のうち短い方によって管理されるようにします。
受信サブネットのプレフィックス長が NSX Advanced Load Balancer DNS の edns_client_subnet_prefix_len パラメータの値よりも小さい場合、ECS オプションは通過時に変更されません。
受信サブネットのプレフィックス長(26 など)が NSX Advanced Load Balancer DNS の edns_client_subnet_prefix_len パラメータの値(16 など)よりも大きい場合、NSX Advanced Load Balancer は一部の受信ビット(この場合は 10)をゼロアウトし、長さが十分に離れている場合は、より少ないオクテット(たとえば、4 つではなく 2 つ)を DNS サーバに転送します。
ケース 3:NSX Advanced Load Balancer DNS 仮想サービスに権限がなく、OPT RR オプションと ECS オプションのどちらも受け取らない
下図は、EDNS 情報のない DNS リゾルバから受信する DNS 要求を示しています。さらに、DNS 要求は、NSX Advanced Load Balancer DNS が権限を持たないドメインに対するものです。このため、パススルーが必要になります。この場合、NSX Advanced Load Balancer DNS 仮想サービスは OPT RR を作成し、ECS オプションの場合、前述のように、1 ~ 4 のオクテットを持つクライアント サブネット アドレスと適切な数の末尾のゼロを挿入します。
デフォルトで有効になっている EDNS オプション
システム DNS プロファイルでは、EDNS オプションはデフォルトで有効になっています。NSX Advanced Load Balancer が古いバージョンからアップグレードされた場合、既存の DNS プロファイルでは EDNS がデフォルトで選択解除されます。ただし、同じ NSX Advanced Load Balancer Controller に新しい DNS プロファイルが作成された場合、EDNS はデフォルトで選択されます。
show application profile <profile name> コマンドを実行して、次のように True に設定されている EDNS フラグの値を確認します。
[admin:10-155-1-175]: > show applicationprofile DNS_profile1 | uuid | applicationprofile-104c53ff-eca7-4fed-9480-33e00c23bf8b | | name | new -DNS| | type | APPLICATION_PROFILE_TYPE_DNS | | dos_rl_profile | | | dos_profile | | | thresh_period | 5 sec | | dns_service_profile | | | num_dns_ip | 1 | | ttl | 30 sec | | error_response | DNS_ERROR_RESPONSE_NONE | | edns | True |
[EDNS 拡張の処理] は、NSX Advanced Load Balancer Controller ユーザー インターフェイスの EDNS 機能用のオプションです。
オプションを確認するには、
の順に移動し、必要に応じて目的の DNS プロファイルまたはシステム DNS プロファイルを選択します。オプションが選択解除されている場合、[EDNS 拡張の処理] チェックボックスをオンにします。
応答の ECS 情報
NSX Advanced Load Balancer では、応答の ECS 情報がサポートされています。クライアントからの DNS 要求に ECS 情報が含まれていて、アプリケーション プロファイルで [EDNS 拡張の処理] が選択されている場合、SE が生成した応答用の NSX Advanced Load Balancer Controller DNS によって ECS 情報が応答に追加されます。応答内の範囲のプレフィックス長は、要求内の送信元のプレフィックス長と同じになります。