在使用代理服务器时,原始连接的参数(如原始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。 | 支持TCP和UDP。 |
安全性 | 无加密或认证机制,数据容易被篡改,安全性相对较低。 | 引入了TLS握手信息,安全性较高。 |
灵活性 | 固定格式,扩展性有限,灵活性较低。 | 可变长度,支持多种扩展信息,灵活性较高。 |
场景 | 只需要简单的 TCP 代理并且对安全性要求不高,可以选择 | 需要支持 TCP或者需要更高的安全性,建议使用 |
TCP启用代理协议PROXY Protocol v1
ESA 会在每个入站 TCP 连接的前面添加代理协议 PROXY Protocol v1标头。
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择 。
单击创建应用,配置四层应用参数。将代理规则区域的协议设置为TCP、客户端IP传递设置为PROXY Protocol v1。
单击确认。
代理协议 PROXY Protocol v1标头
PROXY Protocol 协议在每个连接的开头附加一个纯文本标头,用于报告客户端的 IP 地址和端口号。格式为:
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 标头。
在ESA控制台,选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择 。
单击创建应用,配置四层应用参数。将代理规则区域的协议设置为TCP、客户端IP传递设置为PROXY Protocol v2。
单击确认。
代理协议 PROXY Protocol v2 标头
PROXY 协议在每个连接的开头附加一个报告客户端地址和端口的标头。
IPv4地址的PROXY 协议二进制标头格式:
IPv6地址的PROXY 协议二进制标头格式:
- 本页导读
- 协议介绍
- 协议差异
- TCP启用代理协议PROXY Protocol v1
- 代理协议 PROXY Protocol v1标头
- TCP启用代理协议PROXY Protocol v2
- 代理协议 PROXY Protocol v2 标头