概述
启用您的源服务器支持的协议版本。将客户端的原始IP和端口信息中继到您的源服务器。
代理协议v1:仅支持 TCP,使用文本格式头部。
代理协议v2:支持 TCP 和UDP,使用二进制格式头部,兼容更多元数据。
简单代理协议:专为 UDP 开发的轻量级协议,获取客户端源 IP 和端口信息。
启用 TCP代理协议v1
1、进入IP防护管理页面,选择“绑定”。
2、找到“协议类型”,选择“TCP”,配置好“地址类型”、“边缘端口”以及“源服务器IP”。
3、在“代理协议”选项中选择“代理协议v1”。
当TCP 应用程序配置为使用代理协议v1时,本站将在每个入站 TCP 连接前面添加代理协议纯文本标头。
代理协议v1 标头
代理协议会在每个连接前添加一个标头,报告客户端的 IP 地址和端口。PROXY 协议纯文本标头的格式如下:
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 192.0.2.0 192.0.2.255 42300 443\r\n |
IPv6 地址的代理协议行示例如下所示:
PROXY TCP6 2001:db8:: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 42300 443\r\n |
启用 TCP/UDP 代理协议v2
1、进入IP防护管理页面,选择“绑定”。
2、找到“协议类型”,选择“TCP”或“UDP”,配置好“地址类型”、“边缘端口”以及“源服务器IP”。
3、在“代理协议”选项中选择“代理协议v2”。
当 TCP 应用程序配置为使用代理协议v2时,本站将在每个入站 TCP 连接前面添加代理协议二进制标头。
当 UDP 应用程序配置为使用代理协议v2时,本站将在流上的第一个UDP 数据报前面添加代理协议二进制头。
代理协议v2 标头
代理协议在每个连接前面添加一个报告客户端 IP 地址和端口的标头。
IPv4 传入地址的代理协议二进制标头具有以下格式:
IPV6 传入地址的代理协议二进制标头具有以下格式:
启用UDP简单代理协议
1、进入IP防护管理页面,选择“绑定”。
2、找到“协议类型”,选择“UDP”,配置好“地址类型”、“边缘端口”以及“源服务器IP”。
3、在“代理协议”选项中选择“简单代理协议”。
简单代理协议(SIP)规定,源服务器也必须在发往客户端的数据包前添加相同的报头,包括原始客户端源信息。这样做是为了验证传入的数据包确实是发往客户端的。
简单代理协议标头
客户端源 IP 和端口被编码在固定长度、38 个八位字节长的标头中,并以下面描述的格式添加到每个代理 UDP 数据报的有效负载前面。
标题内容如下:
神奇数字:对于 SPP,16 位固定值设置为 0x56EC。此字段应用于标识 SPP 协议及其 38 字节 SPP 标头。
客户地址:代理 UDP 数据报的发起方(即客户端)的 128 位地址。如果客户端使用 IPv6 寻址,则为 IPv6 地址;如果客户端使用 IPv4 寻址,则为 IPv4映射的 IPv6 地址。
代理地址:代理 UDP 数据报接收方(即代理)的 128 位地址。其内容的解释方式应与客户端地址相同。
客户端端口:代理 UDP 数据报的 16 位源端口号。换句话说,就是客户端发送数据报的 UDP 端口号。
代理端口:代理 UDP 数据报的 16 位目标端口号。换句话说,就是代理接收数据报的 UDP 端口号。
有效载荷:数据报携带的报头后面的数据。魔数、地址和端口号按网络字节顺序编码。
描述标题的相应 C 结构是:
struct { uint16_t magic; uint8_t client_addr[16]; uint8_t proxy_addr[16]; uint16_t client_port; uint16_t proxy_port; }; |