我尝试让 Netscaler 记录发往 Netscaler 的所有流量的源 IP。这可能吗?
需要明确的是,我不想将客户端 IP 转发到后端服务器,我想将到达 Netscaler 的所有流量的源 IP 记录在 Netscaler 上的日志中,然后可能将其发送到系统日志服务器。如果可以在特定 VIP 上执行此操作,那就太好了。
谢谢
答案1
根据您想要记录的流量类型和您正在使用的组件,您有一些不同的选择。
一切从以下内容开始:
创建一个Message Action
(在System
--> Auditing
-->下Message actions
),并使用以下表达式:
CLIENT.IP.SRC
您还必须定义log level
应在何种级别下记录消息。我建议至少使用级别INFORMATIONAL
,因为DEBUG
随着时间的推移会生成大量日志条目。
当然,可以向日志消息中添加额外的数据。
其次,如果您想将消息推送到外部系统日志服务器,您还应该添加系统日志服务器:
- 转到
System
-->Auditing
-->Syslog
-->Servers
并添加服务器。 - 确保您启用了该选项:
"User Configurable Log Messages"
。 - 接下来,创建
logging policy
,并将其设置为true
。
如果您正在使用内容切换,则可以在编辑策略时在下拉框中选择适当的消息,将日志消息附加到内容切换策略。
如果您使用的是普通负载平衡,则可以创建一个响应策略,将策略表达式设置为true
,在下拉框中选择日志消息,最后但并非最不重要的一点:将操作设置为NOOP
。
然后,您可以将响应器策略绑定到需要记录客户端源 IP 的负载均衡器。
注意:小心 NAT,因为它可能会混淆真正的客户端 IP!
答案2
要以典型的 NetScaler 方式执行此操作,可以使用 IPFIX(NetFlow 的更现代版本),或者 Citrix 称之为“AppFlow”——它是在 IPFIX 中定义的一组模板。您需要一些东西来收集它(最新版本的 Logstash 可以使用 logstash-codec-netflow 来做到这一点),但它会为您提供足够的信息来构建完整的前后端连接日志,不仅针对 HTTP,还针对 TCP。
... 不过,道路选择有点长。
您还可以将其用于 Web 日志(即 HTTP 访问日志)。