通过 PROXY Protocol v1/v2 协议获取客户端真实 IP

更新时间:2025-04-08 02:07:15

在使用代理服务器时,原始连接的参数(如原始IP地址、原始端口等)可能会丢失,因为代理服务器会重新封装并转发请求,导致目标服务器只能看到代理服务器的信息,而PROXY Protocol通过在连接建立初期传递客户端的真实信息来解决这一问题,从而提高安全性、准确性和合规性。

协议介绍

PROXY Protocol协议用于在TCP连接建立时获取客户端的真实IP地址。需要您在控制台选择该协议,功能打开后,加速服务器和源站将建立TCP连接,并在发送用户请求前,先通过PROXY Protocol协议传递客户端IP信息。

协议差异

协议

PROXY Protocol v1

PROXY Protocol v2

协议

PROXY Protocol v1

PROXY Protocol v2

格式

ASCII文本格式。

二进制格式。

支持协议

支持TCP。

支持TCPUDP。

安全性

无加密或认证机制,数据容易被篡改,安全性相对较低。

引入了TLS握手信息,安全性较高。

灵活性

固定格式,扩展性有限,灵活性较低。

可变长度,支持多种扩展信息,灵活性较高。

场景

只需要简单的 TCP 代理并且对安全性要求不高,可以选择Proxy Protocol V1

需要支持 TCP或者需要更高的安全性,建议使用Proxy Protocol V2

TCP启用代理协议PROXY Protocol v1

ESA 会在每个入站 TCP 连接的前面添加代理协议 PROXY Protocol v1标头

  1. ESA控制台,选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择四层代理 > 配置

  3. 单击创建应用,配置四层应用参数。代理规则区域的协议设置为TCP客户端IP传递设置为PROXY Protocol v1

    image

  4. 单击确认

代理协议 PROXY Protocol v1标头

PROXY Protocol 协议在每个连接的开头附加一个纯文本标头,用于报告客户端的 IP 地址和端口号。格式为:

Plaintext
PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"

IPv4地址的示例:

PROXY TCP4 10.10.10.10 192.168.0.1 12345 80\r\n

IPv6地址的示例:

PROXY TCP6 2001:db8:: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 12345 443\r\n

参数

说明

参数

说明

PROXY

协议标头。

TCP4

传输协议。

TCP6

10.10.10.10

客户端真实IP地址。

2001:db8::

192.XXX.0.1

目标服务器的IP地址。

2001:db8:ffff:ffff:ffff:ffff:ffff:ffff

12345

客户端源端口号。

80

目标服务器端口号。

443

\r\n

标头的结束。

TCP启用代理协议PROXY Protocol v2

边缘安全加速 ESA会在每个入站 TCP 连接的前面添加代理协议 PROXY Protocol v2 标头

  1. ESA控制台,选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择四层代理 > 配置

  3. 单击创建应用,配置四层应用参数。代理规则区域的协议设置为TCP客户端IP传递设置为PROXY Protocol v2

    image

  4. 单击确认

代理协议 PROXY Protocol v2 标头

PROXY 协议在每个连接的开头附加一个报告客户端地址和端口的标头。

IPv4地址的PROXY 协议二进制标头格式

image

IPv6地址的PROXY 协议二进制标头格式

image

  • 本页导读
  • 协议介绍
  • 协议差异
  • TCP启用代理协议PROXY Protocol v1
  • 代理协议 PROXY Protocol v1标头
  • TCP启用代理协议PROXY Protocol v2
  • 代理协议 PROXY Protocol v2 标头
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等