配置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 # # | 资源记录格式: |
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日志的概述:
- 创建一个Syslog动作,并在动作中启用DNS功能。
- 创建Syslog日志策略,并在策略中指定Syslog日志动作。
- 全局绑定Syslog策略,启用所有Citrix ADC系统事件的日志记录。或者,将Syslog策略绑定到指定的负载均衡虚拟服务器。
- 创建DNS配置文件并定义您想要启用的以下任何类型的日志记录:
- DNS查询日志
- DNS应答部分日志
- DNS扩展日志
- DNS错误日志
- 根据您的需求配置以下任意项:
- DNS服务和DNS虚拟服务器
- 与服务
- 思杰ADC作为货代
- Citrix ADC作为解析器
- 将创建的DNS配置文件设置为DNS实体之一。
该任务指导软件调测工程师通过CLI,为配置为DNS Proxy的Citrix ADC配置DNS日志
添加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
创建syslog日志策略,并在策略中指定创建的syslog日志动作。在命令提示符下,输入:
add audit syslogPolicy
例子:
add audit syslogPolicy syslogpol1 ns_true nssyslogact1 .使用实例
全局绑定syslog日志策略。在命令提示符下,输入:
bind system global [
[-priority ]] 例子:
绑定全局syslogpol1
创建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
配置DNS类型的服务。在命令提示符下,输入:
add service
例子:
添加服务svc1 10.102.84.140 DNS 53
配置业务类型为DNS的负载分担虚拟服务器。
add lb vserver
例子:
添加lb vserver lb1 DNS 100.100.100.10 53
将服务绑定到虚拟服务器。在命令提示符下,输入:
绑定lb vserver
例子:
绑定lb vserver lb1 svc1
配置创建的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完成