Citrix ADC

DNS ログを構成する

Citrix ADCアプライアンスは、処理するDNS要求と応答を記録するように構成できます。アプライアンスは、DNS 要求と応答を SYSLOG 形式で記録します。DNS 要求または DNS 応答、またはその両方をログに記録し、syslog メッセージをリモートログサーバに送信するように選択できます。ログメッセージは、次の目的で使用できます。

  • クライアントに対する DNS 応答の監査
  • DNS クライアントの監査
  • DNS 攻撃の検出と防止
  • トラブルシューティング

Citrix ADCアプライアンスは、構成に基づいて、DNS要求または応答の次のセクションを記録できます。

  • ヘッダーセクション
  • 質問セクション
  • 回答セクション
  • 権限セクション
  • 追加セクション

DNSプロファイル

DNS プロファイルを使用して、DNS エンドポイントを DNS トラフィックに適用するさまざまな DNS パラメータを設定できます。プロファイルでは、ロギング、キャッシング、ネガティブキャッシングを有効にできます。

重要: NetScaler 11.0リリース以降、グローバルDNSパラメータを使用したDNSキャッシュの有効化は廃止されました。DNS プロファイルを使用して、DNS キャッシュを有効または無効にできます。DNS プロファイルで DNS キャッシュを有効にし、DNS プロファイルを個々の仮想サーバーに設定することで、個々の仮想サーバーの DNS キャッシュを有効にできるようになりました。

DNS プロファイルは、次の種類の DNS ログをサポートしています。

  • DNS クエリーロギング
  • DNS 応答セクションのロギング
  • DNS 拡張ロギング
  • DNS エラーロギング

DNS クエリーロギング

Citrix ADCアプライアンスは、アプライアンス上のDNSエンドポイントが受信したDNSクエリのみをログに記録するように構成できます。

: クエリの処理中にエラーが発生した場合、DNS プロファイルでこのオプションが設定されていると、エラーがログに記録されます。

次に、クエリログメッセージの例を示します。

DNS DNS_QUERY 143 0 :  U:10.102.27.70#61297:10.102.27.73#53/22142/Q/
(RD)/NO/1/0/0/0#test.com./1#

DNS 応答セクションロギング

アプライアンスがクライアントに送信するDNS応答のすべての応答セクションを記録するように、Citrix ADCアプライアンスを構成できます。DNS Answer Section のログ記録は、Citrix ADC が DNS リゾルバーとして構成されている場合、または GLSB の使用例として構成されている場合に非常に便利です。

DNS 応答セクションログの例を次に示します。

DNS DNS_RESPONSE 6678 0 :  U:100.100.100.210#32776:100.100.100.10#
53/61373/Q/(RD,AA,RA,R)/NO/1/1/2/4#n1.citrix.com1./
28#ANS#AAAA/120/1111:2345:6789:ffab:abcd:effa:1234:3212##

DNS 拡張ロギング

DNS応答の権限セクションと追加セクションをログに記録するようにCitrix ADCアプライアンスを構成するには、応答セクションのログによる拡張ログを有効にします。

: クエリまたは応答の処理中にエラーが発生した場合、DNS プロファイルでこのオプションが設定されていると、エラーがログに記録されます。

次に、キャッシュルックアップが完了し、応答がパケットに埋め込まれているときにログに記録されるメッセージの例を示します。

DNS DNS_RESPONSE 2252 0 :  T:100.100.100.118#21411:100.100.100.10
#53/48537/Q/(RD,AA,CD,RA,R)/NO/1/1/2/6#a1.citrix.com1./1#ANS#A/
120/1.1.1.1##AUTH#citrix.com1/NS/120/n2.citrix.com1#n1.citrix.com1##ADD#n1.citrix.com1
/A/120/1.1.1.1#1.1.1.2##n1.citrix.com1/AAAA/120/
1111:2345:6789:ffab:abcd:effa:1234:3212##n2.citrix.com1/A/120/2.1.1.2
##n2.citrix.com1/AAAA/120/2222:faff:3212:8976:123:1241:64:ff9b##OPT/0/1280/DO##

DNS エラーログ

Citrix ADCアプライアンスは、DNSクエリまたは応答を処理するときに発生するエラーまたは障害をログに記録するように構成できます。これらのエラーについては、アプライアンスはDNSヘッダー、質問セクション、OPTレコードをログに記録します。

次に、DNS 要求または応答の処理中にエラーが発生したときに記録されるメッセージの例を示します。

DNS DNS_ERROR 149 0 :  U:10.102.27.70#27832:10.102.27.73#53/61153/Q/
(RD)/NO/1/0/0/0#test.com./1140#Packet Dropped

ポリシーベースのロギング

DNS ポリシー、書き換え、またはレスポンダーポリシーで logAction を構成することで、DNS 式に基づいてカスタムログを構成できます。特定の DNS ポリシーが true と評価された場合にのみロギングが行われるように指定できます。詳しくは、「DNS のポリシーベースのログ記録を構成する」を参照してください。

Citrix ADC Syslog ログメッセージの形式を理解する

Citrix ADCアプライアンスは、DNS要求と応答を次のSyslog形式で記録します。

<transport> :<client IP>#<client ephemeral port>:<DNS endpoint IP>#<port>
 : <query id> /opcode/header flags/rcode/question section count/answer section count
/ auth section count / additional section count #<queried domain name>
/<queried type>#...
  • <transport>:
    • T = TCP
    • U = UDP
  • <client IP>#< client ephemeral port >: DNS クライアントの IP アドレスとポート番号

  • <DNS endpoint IP># <port>: Citrix ADC DNS エンドポイントの IP アドレスとポート番号

  • <query id>: クエリ ID

  • <opcode>:作業コード。サポートされる値:

    • Q: クエリ
    • I: 逆クエリ
    • S: ステータス
    • X0: 未割り当て
    • N: 通知
    • U: 更新
    • X1-10: 未割り当ての値
  • <header flags>: フラグ。サポートされる値:

    • RD: 再帰が必要です
    • TC: 切り捨て
    • AA: 権限のある応答
    • CD: チェック無効
    • AD: 認証済みデータ
    • Z: 未割り当て
    • RA: 再帰が使用可能
    • R: 応答
  • <rcode>: 応答コード。サポートされる値:

    • NO: エラーなし
    • F フォーマットエラー
    • S: サーバ障害
    • NX: 存在しないドメイン
    • NI: 実装されていません
    • R: クエリが拒否されました
    • YX: 名前が存在しない場合
    • YXR: RR セットが存在しない場合
    • NXR: 存在する必要がある RR セットが存在しない
    • NAS: ゾーンに対して権限のないサーバ
    • NA: 承認されていません
    • NZ: ゾーンに名前が含まれていません
    • X1-5: 未割り当て
  • //question section count/answer section count/auth section count/additional section count: 質問セクション、権限セクション数、DNS リクエストの追加セクション数

  • <queried domain name>/ <queried type>:DNS 要求でクエリされたドメインとクエリされたタイプ

  • #ANS # <record type>/<ttl> /.. #AUTH # <domain name>/<record type>/<ttl>.. #ADD #<domain name>/<record type>/<ttl>…:

    DNS応答の場合:

    DNS プロファイルで応答セクションのログが有効になっている場合は、応答セクションがログに記録されます。DNS プロファイルで拡張ログが有効になっている場合は、[権限] セクションと [追加] セクションがログに記録されます。ログ形式は、レコードの種類によって異なります。詳細については、「レコードログ形式について」を参照してください。

    • ANS: 回答セクション
    • 自動:権限
    • 追加:追加セクション
  • OPT/<edns version>/UDP max payload size/DO: DNS ログの OPT レコード形式

  • OPT/<EDNS version>/<UDP payload size>/<“DO”or empty based on whether DNSSEC OK bit is set or not>/<value of RDLEN>/ECS/<Q/R>/<option length>/<Family>/<Source Prefix-Length>/<Scope Prefix-Length>/<ECS Address>:

    DNS クエリまたは応答に EDNS クライアントサブネット (ECS) オプションが含まれている場合は、OPT レコード形式で DNS ログファイルに記録されます。

    IPv4 アドレスまたは IPv6 アドレスのいずれかを含む ECS オプションを持つ DNS クエリが送信されると、ECS オプションはログ内の値がクエリからのものであることを示す「ECS/Q」、またはログ内の値が応答からのものであることを示す「ECS/R」のいずれかで記録されます。

    [スコーププレフィックス-長さ] の値も適切に設定されます。DNSクエリの場合はゼロに設定され、応答の場合は計算値に設定されます。

    次の表では、さまざまなシナリオでログに記録される詳細について説明します。

シナリオ DNS クエリに設定された ECS オプション DNS 応答に設定された ECS オプション ログに記録された詳細
クエリー・ロギングと拡張ロギングの両方が有効になっている はい はい ECS オプションは、文字列「ECS/R/」でログに記録され、スコーププレフィックス-長さが計算された値に設定されます。
クエリー・ロギングと拡張ロギングの両方が有効になっている はい いいえ ECS オプションは、文字列「ECS/Q」でログに記録され、スコーププレフィクス-長さがゼロに設定されます。
クエリー・ロギングは有効だが、拡張ロギングは有効にならない はい はい ECS オプションは、文字列「ECS/Q/」でログに記録され、スコーププレフィクス-長さがゼロに設定されます。
クエリログと拡張ログが有効になっていません はい はい ECS オプションはログに記録されません。
クエリー・ロギングは有効だが、拡張ロギングは有効にならない はい いいえ ECS オプションは、文字列「ECS/Q/」でログに記録され、スコーププレフィクス-長さがゼロに設定されます。
クエリー・ロギングは有効になっていないが、拡張ロギングは有効になっている はい はい ECS オプションは、文字列「ECS/R/」でログに記録され、スコーププレフィックス-長さが計算された値に設定されます。
クエリー・ロギングは有効になっていないが、拡張ロギングは有効になっている はい いいえ ECS オプションはログに記録されません。

レコードロギング形式を理解する

次に、Syslog メッセージのレコードロギング形式の例を示します。

<domainname>/<record type>/ <record ttl> / <resource record data>#<resource record data>#......##

各項目の意味は次の通りです:

レコードタイプ サンプル形式 リソースレコードデータ/形式
Address (A) レコード A/5/1.1.1.1#1.1.1.2#1.1.1.3## IPv4 アドレス
AAAAレコード AAAA/5/1::1#1::2#1::3## IPv6アドレス
SOAレコード SOA/3600/ns1.dnslogging.test./root.dnslogging.test./100/3600/3/3600/5## 元のサーバー、連絡先、およびその他の詳細。リソースレコードの形式:<originServer>//<contact>/<serial number>/<refresh rate>/<retry>//<expire>/<minimum> ##
NSレコード NS/5/ns1.dnslogging.test ネームサーバーのホスト名。
MXレコード #MX/5/10/host1.dnslogging.test.#11/host2.dnslogging.test.## 優先設定に続いてメール交換サーバーのホスト名
CNAME レコードロギング CNAME/5/host1.dnslogging.test.## 標準名
SRVレコード SRV/5/1/2/3/host1.dnslogging.test.#4/5/6/host2.dnslogging.test.## リソースレコード形式:<priority>//<weight>/<port>/<target> #
TXTレコード TXT/5/dns+logging## データは、すべてのテキストを含みます。
NAPTRレコード NAPTR/5/10/11////dnslogging#20/21/R/SIP//sip.dnslogging.test## リソースレコード形式:<order>//<preference>/<glags>//<services>/<regular expression>/<replacement string> #
DNSKEYレコード DNSKEY/5/1/3/5/AwEAAanP0K+i5bfv5SU478L760EjDjnPqI2Ccx6JZgiDBZhSONP29GfO2bkP056xp7+9Wz8X2oo5sANaDwSzUVR0YtZdPw23gAaktH6pFvnwcIHa/PTFw5VcXyiUaDc+AnaOhNNYOPp7iQ6uTdT9cyuGWJ1OfZ0JRt+8EyX6iwRsLk7WSpz8KidvKs2ij9IXZ3OzaVEEMGY4SMfHIlLhqIho1fyADlbAoSsLEbr/7eqKv1/PLXSuVV9elwkH0pqWALUaSEBbmp49/jbCbc8cZKxzaON9p2jp2j4iodfC8cnEHAS2/4W1FEPpRTyYtcdBq6Uc2orBaaxjhsZELvRcWMr+pDc=#1/3/5/AwEAAbJhKdI21LP0pPxv0k1pFBNClZW97TB4FlCW4e4Fuyq7rY7+aiYdDVxV8N9ZXt4RT3MdNznMVMl/R1ldWLjbCf5bFu9khaM1ME8I25HPTS3J2wK5rjj4HMFRMycUKZCK0UOgyUzd6Fm5b3G04wMIAoqkDHeqlwe7yWGaw94NbZuL## リソースレコード形式:<glags>//<protocol>/<algorithm>/<public key in base64 encoding> #
PTRレコード PTR/3600/test.com.#test4.com.## ドメイン名

DNS ログ記録の制限

DNS ログには、次の制限があります。

  • 応答ロギングが有効な場合、次のレコードタイプのみがログに記録されます。

    • Address (A) レコード
    • AAAAレコード
    • SOAレコード
    • NSレコード
    • MXレコード
    • CNAMEレコード
    • SRVレコード
    • TXTレコード
    • NAPTRレコード
    • DNSKEYレコード
    • PTRレコード

    他のすべてのレコードタイプでは、L3/L4 パラメータ、DNS ヘッダー、および質問セクションのみがログに記録されます。

  • RRSIG レコードは、応答ロギングが有効になっている場合でもログに記録されません。

  • DNS64 はサポートされていません。

  • DNS プロアクティブ更新要求または応答は、既定のプロファイルの設定に従ってログに記録されます。

  • 仮想サーバーで、セッションレスオプションおよび応答ロギングが有効になっている場合、応答ではなく L3/L4 パラメータ、DNS ヘッダー、および DNS クエスチョンセクションがログに記録されます。

  • syslog メッセージの最大サイズは 1024 バイトです。

  • アクションタイプのRewrite Responseを持つDNSポリシーにDNSプロファイルを設定した場合、Citrix ADCアプライアンスはクエリや操作された応答を記録しません。必要な情報をログに記録するには、DNS ポリシーで監査メッセージアクションを使用する必要があります。

  • DNS 監視トラフィックが原因の DNS トランザクションはログに記録されません。

DNS ロギングの設定

DNS ロギングの設定の概要を次に示します。

  1. Syslog アクションを作成し、アクションで DNS を有効にします。
  2. Syslog ポリシーを作成し、ポリシーで Syslog アクションを指定します。
  3. Syslogポリシーをグローバルにバインドして、すべてのCitrix ADCシステムイベントのログを有効にします。または、特定の負荷分散仮想サーバーに Syslog ポリシーをバインドします。
  4. DNS プロファイルを作成し、有効にする次のタイプのロギングを定義します。
    • DNS クエリーロギング
    • DNS 応答セクションのロギング
    • DNS 拡張ロギング
    • DNS エラーロギング
  5. 要件に応じて、次のいずれかを設定します。
    • DNS サービスおよび DNS 用の仮想サーバー
    • ADNS サービス
    • フォワーダとしての Citrix ADC
    • リゾルバとしてのCitrix ADC
  6. 作成した DNS プロファイルを DNS エンティティの 1 つに設定します。

CLIを使用してDNSプロキシとして構成されたCitrix ADC DNSログを構成する

  1. syslog アクションを追加し、アクションで DNS を有効にします。コマンドプロンプトで、次のように入力します。

    add audit syslogAction <name> (<serverIP> | -lbVserverName <string>) [-serverPort <port>] -logLevel <logLevel> ... [-dateFormat <dateFormat>] [-logFacility <logFacility>] [-tcp ( NONE | ALL )] [-acl ( ENABLED | DISABLED )] [-timeZone ( GMT_TIME | LOCAL_TIME )] [-userDefinedAuditlog ( YES | NO )] [-appflowExport ( ENABLED |DISABLED )] [-lsn ( ENABLED | DISABLED )] [-alg ( ENABLED | DISABLED )] [-transport ( TCP | UDP )] [-tcpProfileName <string>] [-maxLogDataSizeToHold <positive_integer>] [-dns ( ENABLED | DISABLED)]
    

    :

    add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME -dns ENABLED

  2. syslog ポリシーを作成し、作成した syslog アクションをポリシー内で指定します。コマンドプロンプトで、次のように入力します。

    add audit syslogPolicy <name> <rule> <action>

    :

    add audit syslogPolicy syslogpol1 ns_true nssyslogact1

  3. syslog ポリシーをグローバルにバインドします。コマンドプロンプトで、次のように入力します。

    bind system global [<policyName> [-priority <positive_integer>]]

    :

    bind system global syslogpol1

  4. DNS プロファイルを作成し、構成する次の種類のログのいずれかを有効にします。

    • DNS クエリーロギング
    • DNS 応答セクションのロギング
    • DNS 拡張ロギング
    • DNS エラーロギング

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

    add dns profile <dnsProfileName> [-dnsQueryLogging ( ENABLED | DISABLED )] [-dnsAnswerSecLogging ( ENABLED | DISABLED )] [-dnsExtendedLogging (ENABLED | DISABLED )] [-dnsErrorLogging ( ENABLED | DISABLED )] [-cacheRecords ( ENABLED | DISABLED )] [-cacheNegativeResponses ( ENABLED | DISABLED )]

    :

    add dns profile dnsprofile1 -dnsQueryLogging ENABLED

  5. DNS タイプのサービスを構成します。コマンドプロンプトで、次のように入力します。

    add service <name> <serverName> <serviceType> <port>

    :

    add service svc1 10.102.84.140 dns 53

  6. サービスタイプ DNS の負荷分散仮想サーバーを構成します。

    add lb vserver <name> <serviceType> <ip> <port>

    :

    add lb vserver lb1 dns 100.100.100.10 53

  7. サービスを仮想サーバーにバインドします。コマンドプロンプトで、次のように入力します。

    bind lb vserver <name> <serviceName>

    :

    bind lb vserver lb1 svc1

  8. 作成した DNS プロファイルを仮想サーバーに設定します。コマンドプロンプトで、次のように入力します。

    set lb vserver <name> [ - dnsProfileName <string>]

    :

    set lb vserver lb1 –dnsProfileName dnsprofile1

DNSプロキシとして構成されたCitrix ADCアプライアンスのDNSログ設定例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel
CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone
LOCAL_TIME -dns ENABLED
Done
> add audit syslogPolicy syslogpol1 ns_true nssyslogact1
Done
> bind system global syslogpol1
Done
> add dns profile dnsprofile1 -dnsqueryLogging ENABLED
Done
> add lb vserver lb1 dns 100.100.100.10 53 –dnsProfileName dnsprofile1
Done
> add service svc1 10.102.84.140 dns 53
Done
> bind lb vserver lb1 svc1
Done

ADNSとして構成されたCitrix ADCアプライアンスのDNSログ構成例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL
ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME
-dns ENABLED
Done
> add audit syslogPolicy syslogpol1 ns_true nssyslogact1
Done
> bind system global syslogpol1
Done
> add dns profile dnsprofile1 -dnsqueryLogging ENABLED
Done
> add lb vserver lb1 dns 100.100.100.10 53 –dnsProfileName dnsprofile1
Done
> add service svc1 10.102.84.140 dns 53
Done
> bind lb vserver lb1 svc1
Done

フォワーダーとして構成されたCitrix ADCアプライアンスのDNSログ設定の例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL
ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME
-dns ENABLED
Done
> add audit syslogPolicy syslogpol1 ns_true nssyslogact1
Done
> bind system global syslogpol1
Done
> add dns profile dnsprofile1 -dnsqueryLogging ENABLED
Done
> add dns nameserver 8.8.8.8 –dnsProfileName dnsprofile1
Done

セソルバーとして構成されたCitrix ADCアプライアンスのDNSログ設定の例

> add audit syslogAction nssyslogact1 10.102.151.136
-logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4
-timeZone LOCAL_TIME -dns ENABLED
Done
> add audit syslogPolicy syslogpol1 ns_true nssyslogact1
Done
> bind system global syslogpol1
Done
> add dns profile dnsprofile1 -dnsqueryLogging ENABLED
Done
> set dns parameter -recursion enABLED
Done
> add nameserver 1.1.1.100 -local dnsProfileName dnsprofile1
Done

DNS のポリシーベースのログ記録を構成する

ポリシーベースのロギングでは、ログメッセージの形式を指定できます。ログメッセージの内容は、デフォルトの構文式を使用して定義されます。ポリシーで指定されたメッセージアクションが実行されると、Citrix ADCアプライアンスは式からログメッセージを作成し、ログファイルにメッセージを書き込みます。特定の DNS ポリシーが True と評価された場合にのみログを記録するようにアプライアンスを設定できます。

リクエスト側のDNSプロファイルを使用してDNSポリシーを設定した場合、Citrix ADCアプライアンスはクエリのみをログに記録します。

DNS ポリシーのポリシーベースのロギングを設定するには、まず監査メッセージアクションを設定する必要があります。監査メッセージアクションの設定の詳細については、「監査ログ用にNetScaler アプライアンスを構成する」を参照してください。監査メッセージアクションを設定したら、DNS ポリシーでメッセージアクションを指定します。

CLI を使用して DNS ポリシーのポリシーベースのログ記録を構成する

コマンドプロンプトで次のコマンドを入力して、DNS ポリシーのポリシーベースのログを構成し、構成を確認します。

-  add dns action <actionName> <actionType> [-IPAddress <ip_addr|ipv6_addr> ... | -viewName <string> | -preferredLocList <string> ...] [-TTL <secs>] [-dnsProfileName <string>]
-  set dns policy <name> [<rule>] [-actionName <string>] [-logAction <string>]
-  show dns policy [<name>]

例1:

GSLB 展開で、特定のサブネットからのクライアント要求に異なる IP アドレスで応答する場合、一般的な目的で使用される IP アドレス (内部ユーザーの IP アドレスなど) で応答するのではなく、アクションタイプを DNS ビューとして DNS ポリシーを設定できます。この場合、特定の応答を記録できるように、指定された DNS アクションで DNS ロギングを設定できます。

> add dns profile dns_prof1 -dnsqueryLogging enABLED -dnsanswerSecLogging enABLED
 Done
> add dns view dns_view1
 Done
> add dns action dns_act1 viewName -view dns_view1 –dnsprofilename dns_prof1
 Done
> add dns policy dns_pol1 "CLIENT.IP.SRC.APPLY_MASK(255.255.255.0).EQ(100.100.100.0)”
dns_act1
 Done
> bind dns global dns_pol1 100 -gotoPriorityExpression END -type REQ_DEFAULT
 Done
> bind gslb service site_1_svc -viewName dns_view1 123.1.1.1
 Done
> bind gslb service site_5_svc -view dns_view1 132.1.1.1
 Done

注: 上記の設定では、GSLB 仮想サーバーで構成されたドメイン ( sampletest.com など) に対してクエリを実行すると、サブネット 100.100.100.0/24 のすべての内部ユーザーに DNS ビュー IP アドレスが提供され、応答がログに記録されます。他のサブネットに対するクライアント要求はログに記録されません。

例2:

ドメイン example.comのクエリのみをログに記録する場合は、クエリログを有効にした DNS プロファイルを作成し、アクションタイプ NOOPで DNS プロファイルを DNS アクションに設定してから、DNS ポリシーを作成し、DNS アクションを設定します。例:

>add dns profile query_logging -dnsqueryLogging ENABLED
Done
>add dns action dns_act1 NOOP -dnsprofileName query_logging
Done
>add dns policy dns_pol1 DNS.REQ.QUESTION.DOMAIN.EQ("example.com")  dns_act1
Done