bigip添加DNS解析日志irule的步骤
1.新建一个pool
在Local Traffic中新建一个pool,设置检测方式,设置Members,我理解这里是发送日志服务器的地址及端口。
2.新建一个iRules
when DNS_REQUEST {
set clientip [IP::client_addr]
set clientport [UDP::client_port]
set listenerip [IP::local_addr]
set requestid [DNS::header id]
set qname [DNS::question name]
set qtype [DNS::question type]
}
when DNS_RESPONSE {
#elap_pool_sq 这里是刚才新建的pool
set hsl [HSL::open -proto UDP -pool elap_pool_sq]
set timestamp [clock format [clock seconds] -format "%Y-%m-%dT%T.000%z"]
set status [DNS::header rcode]
set origin [DNS::origin]
# set elkdata "$static::tcl_platform(machine) $clientip $clientport $listenerip $requestid $qname $qtype $status $origin"
set elkdata "{ \
\"timestamp\": \"$timestamp\", \
\"data_type\": \"\", \
\"clientip\": \"$clientip\", \
\"clientport\": $clientport, \
\"queryid\": \"$requestid\", \
\"status\": \"$status\", \
\"origin\": \"$origin\", \
\"F5hostname\": \"$static::tcl_platform(machine)\", \
\"viewname\": \"ANY\", \
\"queryname\": \"$qname\", \
\"querytype\": \"$qtype\", \
\"listenervs\": \"$listenerip\", \
\"F5Reponsehostname\": \"$static::tcl_platform(machine)\", \
\"responsecode\": \"\", \
\"responseflag\": \"\", \
\"responsename\": \"\", \
\"answer\": \"\", \
\"emptyresponse\": \"\" \
}"
#log local0. $elkdata
HSL::send $hsl $elkdata
}
上述规则为参考github所得,用于获取DNS解析日志。
3.新建Log Destinations
此处关联pool,不懂,摸索着前进。
4.新建Log Publishers
此处关联Log Destinations,仍是不懂,但是日志已经返回了。
5.效果
6.反思
设置的思路我自己认为:
iRules中的DNS_REQUEST、DNS_RESPONSE会抓取解析过程的数据,然后传输给pool上,pool通过系统的日志转发到日志服务器。
没有正规的渠道学习,通过官方文档、百度资料、客户的设置参考、公司之前设置的参考,强行配置,仍是不懂。