文档首页/ 弹性负载均衡 ELB/ 最佳实践/ 高级功能/ 在四层独享型ELB转发下获取客户端真实IP
更新时间:2025-08-28 GMT+08:00

在四层独享型ELB转发下获取客户端真实IP

应用场景

在使用弹性负载均衡进行业务转发时,您可能需要获取客户端请求的真实IP地址进行进一步分析,特别是在安全防护、数据分析、用户行为分析和故障排查等典型业务场景。

使用ELB进行四层业务转发时,默认情况下ELB实例与后端服务器之间直接使用客户端的IP地址通信,后端服务器可以直接获取客户端真实IP地址。但是在ELB实例与IP类型后端通信、TCP或UDP监听器开启IPv4/IPv6地址转换、使用TLS监听器进行转发等场景,客户端真实IP经过独享型ELB实例时会发生转换,您可以参考本文获取四层业务转发场景的客户端真实IP地址。

约束与限制

  • 如果请求经过NAT网关,则只能获取到NAT转换后的IP地址,无法获取NAT转化前的IP地址。
  • 如果请求客户端为容器,则只能获取到容器所在主机的IP地址,无法获取容器的IP地址。
  • 四层监听器(TCP/UDP)默认开启“获取客户端IP”功能,不支持同一台服务器既作为后端服务器又作为客户端的场景。

    如果后端服务器和客户端使用同一台服务器,则后端服务器会根据报文源IP为本地IP判定该报文为本机发出的报文,无法将应答报文返回给ELB,最终导致回程流量不通。

四层服务获取客户端真实IP方法介绍

独享型ELB的四层协议监听器(TCP/UDP)默认支持“获取客户端IP”功能,ELB实例与后端服务器之间直接使用客户端真实的IP地址通信。

部分特殊场景,监听器的“获取客户端IP”功能失效,您可以参考表1在四层业务转发场景获取客户端真实IP。

表1 四层监听获取客户端真实IP方法总结

监听器

监听器的“获取客户端IP”功能

特殊场景获取客户端真实IP

TCP监听器

TCP/UDP监听器默认支持“获取客户端IP”

以下场景监听器的“获取客户端IP”功能失效,您可以通过配置TOA插件通过ProxyProtocol协议获取客户端真实IP:

  • TCP监听器与IP类型后端通信。
  • TCP监听器开启IPv4/IPv6地址转换开关后,客户端IP地址发生转换。

UDP监听器

TCP/UDP监听器默认支持“获取客户端IP”

以下场景无法获取客户端真实IP:

  • ELB实例与IP类型后端通信。
  • UDP监听器开启IPv4/IPv6地址转换。

TLS监听器

不支持

通过ProxyProtocol协议获取客户端真实IP

TCP/UDP监听器默认支持“获取客户端IP”

TCP和UDP监听器的业务转发场景,ELB实例与后端服务器之间直接使用客户端的真实IP地址通信。您无需进行额外设置,通过查看后端服务器的日志记录即可判断是否获取到客户端真实IP。

当Nginx作为后端服务器,您可以参考以下步骤进行验证。

  1. 修改http配置块,为Nginx配置访问日志,您可以参考执行以下命令。
    http {  
          log_format main '$remote_addr- $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';     
          } 
    图1 配置访问日志
  2. 查看Nginx的访问日志,您可以直接获取客户端请求的真实IP。
    cat /path/server/nginx/logs/access.log

    日志记录中,第一个IP地址即为客户端的真实IP地址。

    图2 查看Nginx的日志

TCP监听器转发下配置TOA插件获取客户端真实IP

TOA内核模块主要用来获取ELB实例转发过的客户端真实IP地址(仅支持IPv4),该插件安装在ELB后端服务器,详细过程请参考TOA插件配置

通过ProxyProtocol协议获取客户端真实IP

您可以通过在监听器上开启ProxyProtocol功能开关,并确保后端服务器具有解析ProxyProtocol协议的能力来获取客户端真实IP。

  • TCP监听器在以下场景“获取客户端IP”功能失效:
    • TCP监听器与IP类型后端通信。
    • TCP监听器开启IPv4/IPv6地址转换开关后进行转发。
  • TLS监听器:仅支持通过ProxyProtocol协议获取客户端真实IP。

详细过程请参考以下操作步骤。