首页 负载均衡 传统型负载均衡CLB 实践教程 CLB四层监听如何获取客户端真实IP

CLB四层监听如何获取客户端真实IP

更新时间: 2023-10-31 10:09:28

本文为您介绍传统型负载均衡CLB的四层监听如何获取客户端真实IP,及通过Proxy Protocol获取客户端真实IP的场景及配置教程。

CLB四层监听如何获取客户端真实IP

image.png
  • 正常情况下,CLB四层监听通过源地址透传,在后端服务器上获取的源IP即为客户端真实IP,您无需在监听开启Proxy Protocol。

  • 客户端使用IPv6地址访问CLB后端的IPv4服务场景下,CLB四层监听无法实现源地址透传,您需要在四层监听开启Proxy Protocol来获取客户端真实IP。

    说明

    CLB四层监听支持通过Proxy Protocol携带原始连接信息(源IP、目的IP、源端口、目的端口等)并添加到TCP或UDP数据头中,且不会丢弃或覆盖任何原有数据,CLB仅支持Proxy Protocol v2版本。更多信息,请参见The PROXY protocol

CLB四层监听通过Proxy Protocol获取客户端真实IP的配置教程

前提条件

  • 您已创建了CLB实例。具体操作,请参见创建CLB实例

  • 您已经创建可用的服务器,用于在创建监听时添加为CLB实例的后端服务器。

    • 后端服务器已部署应用服务。本文以后端服务器已部署Nginx服务为例,具体操作,请参见部署LNMP环境(CentOS 7)

    • 启用Proxy Protocol之前,请确保您的后端服务器支持Proxy Protocol v2版本,否则会导致新建连接失败。

      Nginx Plus R16及以后版本或者开源Nginx 1.13.11及以后版本支持Proxy Protocol v2版本。

  • 如果实例的多个CLB监听挂载同一组后端服务器,必须将所有实例的监听都开启Proxy Protocol功能。

步骤一:创建TCP或UDP监听

您可以在创建监听或者修改监听时,开启Proxy Protocol。本文以创建监听为例开启Proxy Protocol,如果您已经为目标CLB实例添加监听但未开启Proxy Protocol,您可以在修改监听时开启Proxy Protocol。

  1. 登录传统型负载均衡CLB控制台
  2. 在顶部菜单栏,选择CLB实例所属的地域。

  3. 实例管理页面,找到目标实例,在操作列单击监听配置向导

  4. 根据配置向导,完成监听配置。

    • 选择负载均衡协议:选择TCP或者UDP

    • ProxyProtocol配置:在高级配置右侧单击修改,选中通过ProxyProtocol协议携带客户端源地址到后端服务器,选中我确认知晓上述风险,单击下一步

    更多配置说明,请参见添加TCP监听添加UDP监听

步骤二:为后端服务器的监听服务开启Proxy Protocol

在监听开启Proxy Protocol 后,后端服务器的监听服务也需要开启Proxy Protocol,否则将出现转发不通或健康检查失败等问题。

登录后端服务器,执行以下命令,配置Proxy Protocol获取源地址功能。

http {
    #...
    server {
        listen 80   proxy_protocol;
        listen 443  ssl proxy_protocol;
        #...
    }
}
   
stream {
    #...
    server {
        listen 12345 proxy_protocol;
        #...
    }
}

步骤三:获取客户端真实源IP地址

  • 携带客户端IPv4地址的Proxy Protocol v2二进制头格式如下所示:IPv4

  • 携带客户端IPv6地址的Proxy Protocol v2二进制头格式如下所示:IPv6

相关文档

阿里云首页 负载均衡 相关技术圈