F5 负载平衡器:防火墙和服务器将源显示为客户端机器 IP,而不是 F5 IP

网络工程 网络 f5
2021-07-30 01:22:16

我们有两个独立的 Weblogic 实例(在 AIX 环境中)由 F5 负载平衡器进行负载平衡。

在客户端机器上,我们正在运行一个 Java 实用程序,它使 JNDI 调用部署在应用程序服务器上的 ejb 之一。此调用使用 t3 协议并连接到 F5 IP。

如果我们在单个应用程序服务器上执行 netstat,它会显示来自客户端计算机的连接,而不是来自 F5 的连接。此外,防火墙日志将与应用程序服务器的连接源显示为客户端计算机的 IP,而不是 F5。

为了测试从 Utility 机器到服务器的连接是否通过 F5 路由而不是直接路由到单个服务器,我们在防火墙中创建了一个规则来阻止到单个服务器 IP 的连接。应用此规则后,实用程序无法再进行 JNDI 连接。

我的实用程序不知道各个应用程序服务器的 IP。我的问题是:上述行为是否正确?或者这是否意味着连接实际上是直接与单个应用程序服务器建立的?如果不是,那么为什么源 IP 是客户端机器的 IP?

3个回答

F5 上的负载平衡可以以这种方式工作,如果您将其配置为这样做,但如果没有任何配置详细信息,则无法判断此处是否是这种情况。

在许多情况下,首选查看后端节点上的实际 IP 地址,例如在生成访问者统计信息或实施 IP 访问列表时。

F5 虚拟服务器的默认行为不是对客户端源地址进行 NAT。您可以在虚拟服务器上配置 SNAT Automap,这会将客户端地址转换为 F5 的传出接口。

在 F5 上,您可以运行tmsh show sys connection以显示 ltm 连接。这将输出以下信息,这些信息对于找出 F5 的实际作用非常有用:

  • cs-client-addr - 连接客户端的(客户端)源 IP 地址
  • cs-client-port - 连接客户端的(客户端)源端口
  • cs-server-addr - 连接客户端的(服务器)目标 IP 地址(即虚拟服务器 IP 地址)
  • cs-server-port - 连接客户端的(服务器)目标端口(即虚拟服务器端口)
  • ss-client-addr - 连接服务器端的(客户端)源 IP 地址(即 SNAT 地址)
  • ss-client-port - 连接服务器端的(客户端)源端口(即 SNAT 端口)
  • ss-server-addr - 连接服务器端的(服务器)目标 IP 地址(即池成员地址)
  • ss-server-port - 连接服务器端的(服务器)目标端口(即池成员端口)