Citrix 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# 

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## 

DNS扩展日志

将Citrix ADC设备配置为记录权限和额外的部分中,使用回答部分日志记录启用扩展日志记录。

请注意:如果在处理查询或响应期间发生错误,如果在DNS配置文件中设置了此选项,则记录错误。

以下是在缓存查找完成并将响应嵌入到数据包中时记录的消息示例:

DNS DNS_RESPONSE 2252 0:师:100.100.100.118 # 21411:100.100.100.10 # 53/48537 / Q / (RD、AA、CD、RA、R) /不/ 1/1/2/6 # a1.citrix.com1. / 1 #和# / 120/1.1.1.1 # # AUTH # citrix.com1 / NS / 120 / n2.citrix.com1 # n1.citrix.com1 # # # n1.citrix.com1 /添加/ 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 / / 120/2.1.1.2 # # n2.citrix.com1 AAAA / 120/2222:小题大作:3212:8976:123:1241:64:ff9b # # # # OPT / 0/1280 /做< !——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 

策略日志

通过配置DNS策略、Rewrite策略和Responder策略的logAction,可以配置基于DNS表达式的自定义日志记录。您可以指定仅当特定DNS策略的计算结果为true时才发生日志记录。有关更多信息,请参见为DNS配置基于策略的日志记录

了解Citrix ADC的syslog日志格式

Citrix ADC设备以以下Syslog格式记录DNS请求和响应:

:#:#:< query id> /opcode/header flags/rcode/question section count/answer section count/ auth section count/ additional section count #<查询的域名> /<查询的类型>#…< !——NeedCopy >
  • < >运输:
    • TCP协议
    • U = udp
  • <客户端IP>#<客户端临时端口>:DNS客户端IP地址和端口号

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

  • <查询id >:查询ID

  • <操作码>:操作代码。支持的价值观:

    • 问:查询
    • I:逆查询
    • S:状态
    • X0:未赋值的
    • 护士:通知
    • U:更新
    • X1-10:未赋值
  • <标题>旗帜:旗帜。支持的价值观:

    • RD:需要递归
    • TC:截断
    • AA:权威回应
    • CD:检查已禁用
    • AD:认证数据
    • Z:未赋值的
    • RA:可用递归
    • 接待员:响应
  • < rcode >:响应代码。支持的价值观:

    • NO:无错误
    • F格式错误
    • S:服务器故障
    • NX:不存在的域名
    • NI:未实现
    • R:查询被拒绝
    • YX:名字在不应该存在的时候存在
    • YXR: RR集不存在时存在
    • NXR:必须存在的RR集不存在
    • NAS:服务器对区域不具有权威性
    • NA:未授权
    • NZ:名称不包含在分区中
    • X1-5:未赋值的
  • /问题部分计数/答案部分计数/验证部分计数/附加部分计数:问题部分,权威部分计数,和额外的部分计数在DNS请求中

  • <查询域名>/<查询类型>:DNS请求中查询的域和类型

  • #和# <记录类型> / < ttl > / . .#AUTH#<域名>/<记录类型>/..#ADD#<域名>/<记录类型>/

    在DNS响应中:

    如果在DNS配置文件中启用了回答部分日志记录,则记录回答部分。权威和额外的如果在DNS配置文件中启用了扩展日志记录,则记录部分。日志格式将根据记录的类型而有所不同。有关详细信息,请参见了解记录日志格式。

    • ANS:答案部分
    • 身份验证:权力
    • 添加:额外的部分
  • OPT//UDP最大有效载荷大小/DO:DNS日志中OPT记录格式

  • OPT///<“DO”或根据DNSSEC OK位是否设置为空>/< RDLEN值>/ECS//<选项长度>/<族>/<源前缀长度>/<范围前缀长度>/:

    如果DNS查询或响应包含EDNS客户端子网(ECS)选项,那么它也以OPT记录格式记录在DNS日志文件中。

    当一个包含IPv4或IPv6地址的ECS选项的DNS查询被发送时,ECS选项被记录为以下选项之一;

    • “ECS/Q”表示日志中的值来自查询
    • “ECS/R”表示日志中的值来自响应。

    Scope Prefix-Length的值也要设置得合适。DNS查询时设置为0,响应时设置为计算值。

    不同场景下的日志详细信息如下表所示:

场景 DNS查询中设置的ECS选项 DNS响应中设置的ECS选项 记录详细信息
同时启用查询日志记录和扩展日志记录 是的 是的 ECS选项以字符串“ECS/R/”记录,范围前缀长度设置为计算值。
同时启用查询日志记录和扩展日志记录 是的 没有 ECS选项以字符串“ECS/Q”记录,范围前缀长度设置为零。
启用了查询日志记录,但未启用扩展日志记录 是的 是的 ECS选项以字符串“ECS/Q/”记录,范围前缀长度设置为零。
未启用查询日志和扩展日志 是的 是的 没有记录ECS选项。
启用了查询日志记录,但未启用扩展日志记录 是的 没有 ECS选项以字符串“ECS/Q/”记录,范围前缀长度设置为零。
未启用查询日志记录,但启用了扩展日志记录 是的 是的 ECS选项以字符串“ECS/R/”记录,范围前缀长度设置为计算值。
未启用查询日志记录,但启用了扩展日志记录 是的 没有 没有记录ECS选项。

了解记录日志格式

下面是Syslog消息中记录日志格式的示例:

/<记录类型>/<记录ttl> /<资源记录数据>#<资源记录数据>#......# # < !——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记录 # 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 / 5 / dns +日志# # 数据包括所有文本。
NAPTR记录 NAPTR / 5/10/11 / / / / dnslogging # 20/21 / R / SIP / / sip.dnslogging.test # # 资源记录格式:////<正则表达式>/<替换字符串>#
DNSKEY记录 DNSKEY / 5/1/3/5 AwEAAanP0K + i5bfv5SU478L760EjDjnPqI2Ccx6JZgiDBZhSONP29GfO2bkP056xp7 + 9 wz8x2oo5sanadwszuvr0ytzdpw23gaakth6pfvnwciha / PTFw5VcXyiUaDc + AnaOhNNYOPp7iQ6uTdT9cyuGWJ1OfZ0JRt + 8 eyx6iwrslk7wspz8kidvks2ij9ixz3ozaveemgy4smfhillhqiho1fyadlbaosslebr / 7 eqkv1 / PLXSuVV9elwkH0pqWALUaSEBbmp49 / jbCbc8cZKxzaON9p2jp2j4iodfC8cnEHAS2/4W1FEPpRTyYtcdBq6Uc2orBaaxjhsZELvRcWMr + pDc = # 1/3/5 / AwEAAbJhKdI21LP0pPxv0k1pFBNClZW97TB4FlCW4e4Fuyq7rY7 + aiYdDVxV8N9ZXt4RT3MdNznMVMl / R1ldWLjbCf5bFu9khaM1ME8I25HPTS3J2wK5rjj4HMFRMycUKZCK0UOgyUzd6Fm5b3G04wMIAoqkDHeqlwe7yWGaw94NbZuL # # 资源记录格式:///< base64 encoding>#的公钥
PTR记录 PTR / 3600 / test4.com test.com。# # # 域名

DNS日志的限制

DNS日志记录有以下限制:

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

    • 地址(A)记录
    • AAAA级记录
    • SOA记录
    • NS记录
    • MX记录
    • CNAME记录
    • SRV记录
    • 三种记录
    • NAPTR记录
    • DNSKEY记录
    • PTR记录

    对于所有其他记录类型,只记录L3/L4参数、DNS Header和Question部分。

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

  • 不支持DNS64。

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

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

  • 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虚拟服务器
    • 与服务
    • 思杰ADC作为货代
    • Citrix ADC作为解析器
  6. 将创建的DNS配置文件设置为DNS实体之一。

该任务指导软件调测工程师通过CLI,为配置为DNS Proxy的Citrix ADC配置DNS日志

  1. 添加syslog动作,并在动作中启用DNS功能。在命令提示符下,输入:

    add audit syslogAction  ( | -lbVserverName ) [-serverPort ] -logLevel …[-dateFormat ] [-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 ] [-maxLogDataSizeToHold ] [-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

    例子

    add audit syslogPolicy syslogpol1 ns_true nssyslogact1 .使用实例

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

    bind system global [ [-priority ]]

    例子

    绑定全局syslogpol1

  4. 创建DNS配置文件,并启用您想要配置的以下任何类型的日志:

    • DNS查询日志
    • DNS应答部分日志
    • DNS扩展日志
    • DNS错误日志

    在命令提示符下,输入:

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

    例子

    添加dns配置文件dnsprofile1 -dnsQueryLogging ENABLED

  5. 配置DNS类型的服务。在命令提示符下,输入:

    add service

    例子

    添加服务svc1 10.102.84.140 DNS 53

  6. 配置业务类型为DNS的负载分担虚拟服务器。

    add lb vserver

    例子

    添加lb vserver lb1 DNS 100.100.100.10 53

  7. 将服务绑定到虚拟服务器。在命令提示符下,输入:

    绑定lb vserver

    例子

    绑定lb vserver lb1 svc1

  8. 配置创建的DNS配置文件为虚拟服务器。在命令提示符下,输入:

    set lb vserver [- dnsProfileName ]

    例子

    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 dnsprofile 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 dnsprofile 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 completed > add audit syslogPolicy syslogpol1 ns_true nssyslogact1 Done > bind system global syslogpol1 Done > add dnsprofile 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已完成> add audit syslogPolicy syslogpol1 ns_true nssyslogact1已完成> bind system global syslogpol1已完成> add dnsprofile dnsprofile1 -dnsqueryLogging ENABLED已完成> set dns parameter - recursive ENABLED已完成> 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   [- ipaddress …]| -viewName  | -preferredLocList …[- ttl ] [- dnsprofilename ] - set dns policy  [] [- actionname ] [- logaction ] - show dns policy [] 

示例1:

在GSLB部署中,如果希望使用不同的IP地址响应来自特定子网的客户机请求,而不是使用一般用途的IP地址(例如内部用户的IP地址)进行响应,则可以将操作类型配置为DNS视图的DNS策略。在这种情况下,您可以在指定的DNS操作上配置DNS日志记录,以便记录特定的响应。

>添加dns配置dns_prof1 -dnsqueryLogging启用-dnsanswerSecLogging启用完成>添加dns视图dns_view1做>添加dns操作dns_act1 viewName视图dns_view1 -dnsprofilename dns_prof1做>添加域名策略dns_pol1”CLIENT.IP.SRC.APPLY_MASK (255.255.255.0) .EQ(100.100.100.0)”dns_act1做>绑定域名100年全球dns_pol1 -gotoPriorityExpression结束类型REQ_DEFAULT做>绑定gslb服务site_1_svc -viewName dns_view1 123.1.1.1做>绑定gslb服务site_5_svc视图dns_view1132.1.1.1完成

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

示例2:

如果您只想记录域的查询example.com,可以创建启用查询日志记录功能的DNS配置文件,并将DNS配置文件设置为动作类型的DNS动作无操作,然后创建DNS策略,并设置DNS动作。例如:

>添加dns操作dns_act1 NOOP -dnsprofileName query_logging完成>添加dns策略dns_pol1 dns . req . question.domain.eq ("example.com") dns_act1完成

配置DNS策略的日志动作为日志客户端IP地址

日志操作可以使用以下表达式记录DNS查询的源ip,并将其作为DNS策略的日志操作的一部分。

> add audit messageaction log_act_custom INFORMATIONAL "\"ClientIP:\"CLIENT.IP。Src \" ecs ip:\"+((dns.req.opt.ecs.ip)。typecast_text_t ALT \"NONE\")"做< !——NeedCopy >

前面的表达式既捕获IP头中的源IP,也捕获DNS ECS选项中的ECS IP,根据需要可以排除其中任何一个。

用于记录客户端IP地址的Citrix ADC设备的示例DNS日志记录配置

如果希望对DNS查询的日志记录进行采样,可以使用以下表达式完成。这将记录10个查询中的一个。

> add audit messageaction log_action_srcip_1of10 INFORMATIONAL "\"OneOf10:源IP: \"+client.ip。src"完成>添加响应器策略logsrcip_1of10 "sys.random.mul(10).lt(1)"NOOP -logAction log_action_srcip_1of10完成