客户端使用IPV6地址,访问CLB后端的IPv4服务,后端服务器如何获取到真实IP?
客户端使用IPv6地址访问阿里云CLB后端的IPv4服务场景下,需要在CLB四层监听及后端服务上开启Proxy Protocol来获取客户端真实IP地址。
前置条件
启用Proxy Protocol之前,请确保您的后端服务器支持Proxy Protocol v2版本,否则会导致新建连接失败。
Nginx Plus R16及以后版本或者开源Nginx 1.13.11及以后版本支持Proxy Protocol v2版本。
如果实例的多个CLB监听挂载同一组后端服务器,必须将所有实例的监听都开启Proxy Protocol功能。
CLB侧配置
在监听详情页面,查看到ProxyProtocol配置字段为通过ProxyProtocol协议携带客户端源地址到后端服务器。如果未显示该字段,可单击编辑监听在配置页面中开启该功能。

💡注意:该功能不支持在线平滑迁移,切换到Proxy Protocol需要业务停服升级,请谨慎配置。
后端服务器配置
nginx配置需要修改的地方:
# 日志
'"proxy_protocol_addr":"$proxy_protocol_addr",'
# 监听端口
listen 80 proxy_protocol;
# 后端获取的ip字段
proxy_set_header X-Real-IP $proxy_protocol_addr;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
proxy_set_header REMOTE-HOST $proxy_protocol_addr;然后reload nginx:
nginx -t
systemctl reload nginx关于Proxy Protocol补充
Proxy Protocol工作在传输层(TCP之上),在连接建立初期就发送一个包含客户端信息的头部:
客户端发起连接
负载均衡器接收连接
负载均衡器在与后端服务器建立连接前,先发送Proxy Protocol头
后端服务器解析这个头,获取真实客户端信息
服务器处理请求,记录真实IP
0