Citrix ADC

ドメインネームシステム

注: リリース13.0ビルド41.x以降、ADNSおよびプロキシモードのCitrix ADCアプライアンスは、2019年のDNSフラグ日に完全に準拠しています。

Citrix ADCアプライアンスは、ドメインの権限のあるドメインネームサーバー(ADNSサーバー)として機能するように構成できます。アプライアンスが権限を持つドメインに属する DNS リソースレコードを追加し、リソースレコードパラメータを設定します。また、ネットワーク内またはネットワーク外にある DNS ネームサーバのファームを負荷分散するプロキシ DNS サーバとしてアプライアンスを設定することもできます。アプライアンスをエンドリゾルバおよびフォワーダとして設定します。完全修飾ドメイン名が設定されていない場合に名前解決を有効にする DNS サフィックスを設定できます。アプライアンスは、ドメインに属するすべてのレコードを取得する DNS ANY クエリもサポートしています。

アプライアンスは、あるドメインでは権限のある DNS サーバとして、別のドメインでは DNS プロキシサーバとして同時に機能するように設定できます。アプライアンスをゾーンの権威 DNS サーバーまたは DNS プロキシサーバーとして構成すると、User Datagram Protocol(UDP)に指定されたサイズ制限を超える応答サイズに TCP を使用するようにアプライアンスを有効化できます。

Citrix ADCでのDNSの仕組み

Citrix ADCアプライアンスは、ADNSサーバー、DNSプロキシサーバー、エンドリゾルバー、およびフォワーダーとして機能するように構成できます。Citrix ADCアプライアンスには、次のレコードを含むDNSリソースレコードを追加できます。

  • サービス (SRV) レコード
  • IPv6 (AAAA) レコード
  • 住所 (A) レコード
  • メール交換 (MX) レコード
  • 正規名 (CNAME) レコード
  • ポインタ (PTR) レコード
  • 権限の開始 (SOA) レコード
  • テキスト (TXT) レコード
  • 名前権限ポインタ (NAPTR) レコード
  • DNSKEY レコード
  • 認証局認証 (CAA) レコード

また、外部DNSネームサーバーの負荷分散を行うようにCitrix ADCを構成することもできます。

Citrix ADCアプライアンスは、ドメインの権限として構成できます。ドメインの有効な SOA および NS レコードを追加します。

ADNS サーバーは、ゾーンに関する完全な情報を含む DNS サーバーです。

Citrix ADCアプライアンスをゾーンのADNSサーバーとして構成するには、ADNSサービスを追加してからゾーンを構成する必要があります。そのためには、ドメインの有効な SOA および NS レコードを追加します。クライアントがDNS要求を送信すると、Citrix ADCアプライアンスは構成されたリソースレコードでドメイン名を検索します。Citrix ADC グローバルサーバー負荷分散(GSLB)機能と併用するように ADNS サービスを構成できます。

サブドメインの NS レコードを親ドメインのゾーンに追加することで、サブドメインを委任できます。次に、サブドメインネームサーバーごとに「グルーレコード」を追加することで、Citrix ADCをサブドメインに対して権限のあるものにすることができます。GSLBが構成されている場合、Citrix ADCはその構成に基づいてGSLB負荷分散の決定を行い、選択した仮想サーバーのIPアドレスで応答します。次の図は、ADNS GSLB セットアップと DNS プロキシセットアップのエンティティを示しています。

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

DNS エンティティモデル

Citrix ADCアプライアンスはDNSプロキシとして機能できます。DNSプロキシの重要な機能であるDNSレコードのキャッシュは、Citrix ADCアプライアンスではデフォルトで有効になっています。キャッシュにより、Citrix ADCアプライアンスは翻訳の繰り返しに対して迅速に対応できます。負荷分散 DNS 仮想サーバーと DNS サービスを作成し、これらのサービスを仮想サーバーにバインドします。

Citrix ADCには、キャッシュされたデータの存続期間を構成するための最小有効期間(TTL)と最大TTLの2つのオプションがあります。キャッシュされたデータは、これら 2 つのオプションの設定に従ってタイムアウトします。Citrix ADCは、サーバーから送信されるDNSレコードのTTLをチェックします。TTL が設定された最小 TTL より小さい場合、設定されている最小 TTL に置き換えられます。TTL が設定された最大 TTL より大きい場合、設定されている最大 TTL に置き換えられます。

Citrix ADCでは、ドメインに対する否定応答のキャッシュも可能です。否定応答は、要求されたドメインに関する情報が存在しないか、サーバーがクエリに対する応答を提供できないことを示します。 この情報の保存をネガティブキャッシングと呼びます。ネガティブキャッシュは、ドメインでのクエリへの応答を高速化するのに役立ち、オプションでレコードタイプを指定することもできます。

否定応答は、次のいずれかになります。

  • NXDOMAIN エラーメッセージ-ローカルキャッシュに否定的な応答が存在する場合、Citrix ADCはエラーメッセージ(NXDOMAIN)を返します。応答がローカルキャッシュにない場合、クエリはサーバーに転送され、サーバーはNXDOMAINエラーをCitrix ADCに返します。Citrix ADCは応答をローカルにキャッシュし、エラーメッセージをクライアントに返します。
  • NODATAエラーメッセージ-クエリ内のドメイン名は有効だが、指定されたタイプのレコードが使用できない場合、Citrix ADCはNODATAエラーメッセージを送信します。

Citrix ADCは、DNS要求の再帰的解決をサポートしています。再帰的解決では、リゾルバ (DNS クライアント) はドメイン名の再帰クエリをネームサーバに送信します。照会されたネームサーバがドメインに対して権限を持つ場合、要求されたドメイン名で応答します。それ以外の場合、Citrix ADCは、要求されたドメイン名が見つかるまで、ネームサーバーに再帰的にクエリを実行します。

再帰クエリオプションを適用するには、まず再帰クエリオプションを有効にする必要があります。DNS ルックアップが失敗した場合に DNS リゾルバーが解決要求 (DNS 再試行) を送信する回数も設定できます。

Citrix ADCをDNSフォワーダーとして構成できます。フォワーダは DNS 要求を外部のネームサーバに渡します。Citrix ADCを使用すると、外部ネームサーバーを追加したり、ネットワーク外のドメインに名前解決を提供したりできます。Citrix ADCでは、名前検索の優先順位をDNSまたはWindowsインターネットネームサービス(WINS)に設定することもできます。

ADC アプライアンスが DNS を使用してホスト名を対応する IP アドレスに解決できるようにします

注: アプライアンスのコマンドラインインターフェイス(CLI)にアクセスするには、SSH ユーティリティが必要です。

デフォルトでは、ADC アプライアンスはホスト名を対応する IP アドレスに解決できません。アプライアンスで名前解決を有効にするには、次のタスクを実行します。

  1. ネームサーバを定義する。
  2. DNS サフィックスを定義します。

注意事項

CLI から DNS ルックアップを実行します。/etc/resolv.conf ファイルのエントリが 127.0.0.2 の IP アドレスを指しているため、FreeBSD オペレーティングシステムのシェルプロンプトからの DNS ルックアップは失敗します。

次のコマンドは、drillコマンドで到達可能なアプライアンスの FreeBSD CLIのshellコマンドに置き換えられます。

-  host
-  dig
-  getent/MIP
-  nslookup
<!--NeedCopy-->

たとえば、dig www.google.com @8.8.8.8を実行してネームサーバー「8.8.8.8」の「A」レコード「www.google.com」を照会する代わりに、 drill www.google.com @8.8.8.8コマンドを実行できます。drillコマンドは、 digコマンドとまったく同じように機能します。

root@lab# drill www.google.com @8.8.8.8
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 57980
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 300 IN A 142.250.187.196

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 53 msec
;; SERVER: 8.8.8.8
;; WHEN: Thu Jun 9 11:04:55 2022
;; MSG SIZE rcvd: 48
<!--NeedCopy-->

アプライアンスが SNIP アドレスで DNS サーバに ping できない場合、サーバステータスは [Down] と表示されます。アプライアンスがファイアウォールの内側にある場合、ping の成功は重要です。

CLI 設定

コマンドプロンプトで入力します。

add dns nameServer <Name_Server_IP_Address>
add dns suffix <DNS_Suffix>
<!--NeedCopy-->

構成を確認するには、次のように入力します。

show dns nameServer
show dns suffix
<!--NeedCopy-->

DNS 解決をテストするには、次のように入力します。

show dns addrec <Host_Name>
<!--NeedCopy-->

GUI 構成

  1. トラフィック管理 > DNS > ネームサーバ > 追加に移動します
  2. [ ネームサーバの作成] ダイアログボックスで、ネームサーバの IP アドレスを入力し、[ 作成] をクリックします。
  3. トラフィック管理 > DNS > DNS サフィックス > 追加に移動します
  4. [ DNS サフィックスの作成 ] ダイアログボックスで、すべてのホストクエリに使用する DNS サフィックス (example.com など) を入力し、[ 作成] をクリックします。

ラウンドロビン DNS

クライアントが DNS リソースレコードを検索する DNS 要求を送信すると、DNS 要求内の名前に解決される IP アドレスのリストを受信します。次に、クライアントはリスト内の IP アドレスの 1 つを使用します。通常は、最初のレコードまたは IP アドレスです。そのため、キャッシュの合計 TTL には 1 つのサーバが使用され、多数の要求が到着すると過負荷になります。

Citrix ADCは、DNS要求を受信すると、ラウンドロビン方式でDNSリソースレコードのリストの順序を変更して応答します。 この機能はラウンドロビン DNSと呼ばれます。ラウンドロビン方式では、データセンター間でトラフィックが均等に分散されます。Citrix ADCはこの機能を自動的に実行します。この動作を設定する必要はありません。

機能概要

Citrix ADCがADNSサーバーとして構成されている場合、レコードが構成された順序でDNSレコードが返されます。Citrix ADCがDNSプロキシとして構成されている場合、サーバーからレコードを受信した順序でDNSレコードを返します。キャッシュに存在するレコードの順序は、サーバーからレコードを受信する順序と一致します。

Citrix ADCは、ラウンドロビン方式でDNS応答でレコードが送信される順序を変更します。最初の応答には最初のレコードが順番に含まれ、2 番目の応答には 2 番目のレコードが順番に含まれ、順序は同じ順序で続きます。したがって、同じ名前を要求するクライアントは、異なる IP アドレスに接続できます。

ラウンドロビン DNS の例

ラウンドロビン DNS の例として、次のように追加された DNS レコードを考えてみましょう。

  add dns addRec ns1 1.1.1.1  add dns addRec ns1 1.1.1.2  add dns addRec ns1 1.1.1.3  add dns addRec ns1 1.1.1.4
<!--NeedCopy-->

ドメイン abc.com は、次のように NS レコードにリンクされています。

  add dns nsrec abc.com. ns1
<!--NeedCopy-->

Citrix ADCがns1のAレコードに対するクエリを受信すると、Addressレコードは次のようにラウンドロビン方式で提供されます。最初の DNS 応答では、1.1.1.1 が最初のレコードとして提供されます。

  ns1.                    1H IN A         1.1.1.1  ns1.                    1H IN A         1.1.1.2  ns1.                    1H IN A         1.1.1.3  ns1.                    1H IN A         1.1.1.4
<!--NeedCopy-->

2 番目の DNS 応答では、2 番目の IP アドレス 1.1.1.2 が最初のレコードとして提供されます。

  ns1.                    1H IN A         1.1.1.2  ns1.                    1H IN A         1.1.1.3  ns1.                    1H IN A         1.1.1.4  ns1.                    1H IN A         1.1.1.1
<!--NeedCopy-->

3 番目の DNS 応答では、3 番目の IP アドレス 1.1.1.2 が最初のレコードとして提供されます。

  ns1.                    1H IN A         1.1.1.3  ns1.                    1H IN A         1.1.1.4  ns1.                    1H IN A         1.1.1.1  ns1.                    1H IN A         1.1.1.2
<!--NeedCopy-->
ドメインネームシステム