ADC

配置 DNS 日志记录

您可以将 Citrix ADC 设备配置为记录其处理的 DNS 请求和响应。设备以 SYSLOG 格式记录 DNS 请求和响应。您可以选择记录 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#
<!--NeedCopy-->

DNS 应答部分日志记录

您可以将 Citrix ADC 设备配置为记录设备发送给客户端的 DNS 响应中的所有应答部分。当 Citrix ADC 配置为 DNS 解析器时,或者在 GLSB 使用案例中,DNS 应答部分日志记录非常有用。

以下是 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##
<!--NeedCopy-->

DNS 扩展日志记录

要将 Citrix ADC 设备配置为记录 DNS 响应中的授权和 其他 部分,请启用带应答部分日志记录的扩展日志记录。

注意:如果在处理查询或响应过程中发生错误,如果在 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##
<!--NeedCopy-->

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
<!--NeedCopy-->

基于策略的日志记录

您可以通过配置 DNS 策略、重写或响应程序策略的日志操作来配置基于 DNS 表达式的自定义日志记录。您可以指定只有在特定 DNS 策略的计算结果为 true 时才会发生日志记录。有关更多信息,请参阅为 DNS 配置基于策略的日志记录

了解 Citrix ADC 系统日志消息格式

Citrix ADC 设备以下系统日志格式记录 DNS 请求和响应:

<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>#...
<!--NeedCopy-->
  • <transport>:
    • T = TCP
    • U = UDP
  • **<client IP>#< client ephemeral port >: DNS 客户端 IP 地址和端口号

  • **<DNS endpoint IP># <port>:Citrix ADC DNS 端点 IP 地址和端口号

  • **<query id>: 查询编号

  • **<opcode>:操作代码。支持的值:

    • 问:查询
    • I:反向查询
    • S:状态
    • X0:未分配
    • N: 通知
    • U:更新
    • X1-10:未分配的值
  • **<header flags>:旗帜。支持的值:

    • RD:需要递归
    • TC:截断
    • AA:权威回应
    • CD:已禁用检查
    • AD:经过身份验证的数据
    • Z:未分配
    • RA:递归可用
    • R:回应
  • **<rcode>:回复代码。支持的值:

    • 不:没错
    • 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 配置文件中启用了扩展日志记录,则会记录授权和其他部分。日志格式因记录类型而异。有关详细信息,请参阅了解记录日志记录格式。

    • 答案部分
    • 身份验证:权威
    • 添加:其他部分
  • 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) 选项,则该选项也会在 DNS 日志文件中以 OPT 记录格式记录。

    当发送带有包含 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>#......##
<!--NeedCopy-->

其中:

记录类型 样本格式 资源记录数据/格式
地址 (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## 源服务器、联系人和其他详细信息。资源记录格式为://////##
NS 记录 NS/5/ns1.dnslogging.test 域名服务器的主机名。
墨西哥记录 #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.## 资源记录格式:///#
TXT 唱片 TXT/5/dns+logging## 数据包括所有文本。
NAPTR 唱片 NAPTR/5/10/11////dnslogging#20/21/R/SIP//sip.dnslogging.test## 资源记录格式://///#
DNSKey 记录 DNSKEY/5/1/3/5/AwEAAanP0K+i5bfv5SU478L760EjDjnPqI2Ccx6JZgiDBZhSONP29GfO2bkP056xp7+9Wz8X2oo5sANaDwSzUVR0YtZdPw23gAaktH6pFvnwcIHa/PTFw5VcXyiUaDc+AnaOhNNYOPp7iQ6uTdT9cyuGWJ1OfZ0JRt+8EyX6iwRsLk7WSpz8KidvKs2ij9IXZ3OzaVEEMGY4SMfHIlLhqIho1fyADlbAoSsLEbr/7eqKv1/PLXSuVV9elwkH0pqWALUaSEBbmp49/jbCbc8cZKxzaON9p2jp2j4iodfC8cnEHAS2/4W1FEPpRTyYtcdBq6Uc2orBaaxjhsZELvRcWMr+pDc=#1/3/5/AwEAAbJhKdI21LP0pPxv0k1pFBNClZW97TB4FlCW4e4Fuyq7rY7+aiYdDVxV8N9ZXt4RT3MdNznMVMl/R1ldWLjbCf5bFu9khaM1ME8I25HPTS3J2wK5rjj4HMFRMycUKZCK0UOgyUzd6Fm5b3G04wMIAoqkDHeqlwe7yWGaw94NbZuL## 资源记录格式:///#
PTR 紀錄 PTR/3600/test.com.#test4.com.## 域名

DNS 日志记录的限制

DNS 日志记录有以下限制:

  • 如果启用了响应日志记录,则仅记录以下记录类型:

    • 地址 (A) 记录
    • AAAA 记录
    • SOA 记录
    • NS 记录
    • 墨西哥记录
    • CNAME 记录
    • SRV 记录
    • TXT 唱片
    • NAPTR 唱片
    • DNSKey 记录
    • PTR 紀錄

    对于所有其他记录类型,只记录 L3/L4 参数、DNS 标头和问题部分。

  • 即使启用了响应日志记录,也不会记录 RRSIG 记录。

  • 不支持 DNS64。

  • 根据默认配置文件中的设置记录 DNS 主动更新请求或响应。

  • 在虚拟服务器上,如果启用了无会话选项和响应日志记录,则会记录 L3/L4 参数、DNS 标头和 DNS 问题部分而不是响应。

  • 系统日志消息的最大大小为 1024 字节。

  • 如果您已为具有操作类型 “重写响应” 的 DNS 策略设置了 DNS 配置文件,则 Citrix ADC 设备不会记录查询或被操纵的响应。要记录所需信息,您必须在 DNS 策略中使用审计消息操作。

  • 不记录由 DNS 监视流量引起的 DNS 事务。

配置 DNS 日志记录

以下是配置 DNS 日志记录的概述:

  1. 创建一个系统日志操作并在操作中启用 DNS。
  2. 创建 Syslog 策略并在策略中指定 Syslog 操作。
  3. 全局绑定 Syslog 策略以启用所有 Citrix ADC 系统事件的日志记录。或者,将 Syslog 策略绑定到特定的负载平衡虚拟服务器。
  4. 创建 DNS 配置文件并定义要启用的以下任何类型的日志记录:
    • DNS 查询日志记录
    • DNS 应答部分日志记录
    • DNS 扩展日志记录
    • DNS 错误日志记录
  5. 根据您的要求配置以下任一项:
    • DNS 服务和虚拟服务器
    • ADNS 服务
    • Citrix ADC 作为转发器
    • Citrix ADC 作为解析器
  6. 将创建的 DNS 配置文件设置为其中一个 DNS 实体。

使用 CLI 为配置为 DNS 代理的 Citrix ADC 配置 DNS 日志记录

  1. 添加系统日志操作并在操作中启用 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)]
    <!--NeedCopy-->
    

    例如

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

  2. 创建系统日志策略并在策略中指定创建的系统日志操作。在命令提示符下,键入:

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

    例如

    add audit syslogPolicy syslogpol1 ns_true nssyslogact1

  3. 全局绑定系统日志策略。在命令提示符下,键入:

    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
<!--NeedCopy-->

配置为 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
<!--NeedCopy-->

配置为转发器的 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
<!--NeedCopy-->

配置为解析器的 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
<!--NeedCopy-->

为 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>]
<!--NeedCopy-->

示例 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
<!--NeedCopy-->

注意: 在上述配置中,如果您查询 GSLB 虚拟服务器(例如 sampletest.com)上配置的域,则子网 100.100.100.0/24 的所有内部用户都将使用 DNS 视图 IP 地址,并记录响应。不记录其他子网的客户端请求。

示例 2:

如果要仅记录域 example.com的查询,则可以创建启用了查询日志记录的 DNS 配置文件,并将 DNS 配置文件设置为具有操作类型 NOOP的 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
<!--NeedCopy-->