记录下F5日志记录方法
刚建立一个到F5的连接触发
#刚建立一个到F5的连接触发
when CLIENT_ACCEPTED {
#将客户端连接的VIP:Port赋值给vip
set vip [IP::local_addr]:[TCP::local_port]
}
F5成功建立到服务器之后触发
-
SERVER_CONNECTED事件仅表示TCP连接已经建立,但还没有数据交换
-
当启用了SNAT Map(或SNAT Automap)功能时,SERVER_CONNECTED事件中的[IP::client_addr]将显示原始客户端的IP地址,而不是SNAT转换后的地址。SERVER_CONNECTED事件是在TCP连接建立时触发的,此时SNAT转换尚未发生
#成功建立到服务器连接之后触发
when SERVER_CONNECTED {
#赋值客户端源地址
set client "[IP::client_addr]:[TCP::client_port]"
#赋值后台服务器地址
set node "[IP::server_addr]:[TCP::server_port]"
#记录seflip
set selfip "[IP::local_addr]:[TCP::local_port]"
#记录日志
log local0. "Client $client -> VIP: $vip ->Snat: $selfip -> Node: $node"
Client 192.168.1.1:35800 -> VIP: 100.1.1.100:9090 ->Snat: 10.10.10.10:62000 -> Node: 100.1.1.110:9090
}
获取SNAT Automap转换后的地址
- 使用[IP::client_addr]变量。这个变量在HTTP_REQUEST事件中通常表示经过SNAT转换后的客户端IP地址
- [IP::translated_src_addr]变量。这个变量会返回SNAT转换后的源地址,即使在SNAT转换发生在HTTP_REQUEST事件之前
HTTP请求到达后端服务器之前触发HTTP_REQUEST事件
when HTTP_REQUEST {
# 获取经过SNAT转换后的源地址
local translated_src_addr = [IP::translated_src_addr]
#如果translated_src_addr为空,则回退到使用client_addr
if { [IP::translated_src_addr] == "" } {
set translated_src_addr [IP::client_addr]
}
# 记录日志
log local0. "SNATTranslated Source Address: $translated_src_addr"
}