配置PROXY protocol
1. 为什么拿不到真实 IP
数据经过 FRP 转发后,您的本地服务看到的来源地址是运行 frpc 的那台机器(通常是 127.0.0.1),而不是访客。
通常所有依赖来源 IP 的功能都会失效,例如 IP Ban 和 fail2ban。
让本地服务重新拿到访客 IP 有两种做法:
| 方案 | 适用隧道 | 需要做什么 |
|---|---|---|
X-Forwarded-For | 仅 HTTP | 面板无需配置,本地服务读取请求头,见 Apache 与 NGINX 配置 |
PROXY protocol | TCP、UDP、HTTP(S) | 隧道与本地服务同时开启,见第 2 节 |
您部署的服务不一定支持PROXY protocol,请在配置前先查阅您的服务是否支持PROXY protocol,如果不支持,则需要其他方法。
2. 在面板启用 PROXY protocol
2.1 打开隧道详情
从左侧隧道-隧道管理进入,点开需要配置的隧道。

2.2 编辑配置
在配置信息卡片中点击编辑。

2.3 选择版本
在高级配置中找到PROXY protocol,按本地服务支持的版本选择v1或v2。


| 版本 | 说明 |
|---|---|
v1 | 文本协议,兼容性最好 |
v2 | 二进制协议,开销更小;UDP 隧道只能用它 |
v2。选中后会提示风险,确认本地服务已经支持后再确认保存。

保存后重新启动隧道,frpc 会在启动时拉取新配置。
3. 本地服务必须同时开启
开启后,本地服务的端口通常只接受带 PROXY protocol 头的连接。请确保已经被防火墙拒绝了来自外部的Header,否则可能被伪造真实IP造成安全风险。
您在本地或内网直接访问该端口(浏览器访问、客户端连 127.0.0.1:端口)都会失败,这是正常现象,因为本地的访问(如浏览器)不会添加 PROXY protocol 的头部。
4. 常见服务配置
通常支持PROXY protocol的,我们都会直接写在对应的服务配置指南内。
如果文档没有的,可以自行搜索关键字 PROXY protocol + 您的服务名称。
5. 常见问题
5.1 开启后完全连不上
按顺序排查:
- 本地服务是否也开启了 PROXY protocol
- 版本是否与本地服务一致,
UDP隧道是否误选了v1 - 保存后是否重启了隧道
- 本地服务是否真的在监听隧道配置的本地端口
5.2 一部分人能连、一部分人连不上
服务端强制握手时,只有走隧道的连接带 PROXY protocol 头。如果有玩家或客户端走了直连(例如同局域网访问、或另有一条未开启 PROXY protocol 的隧道),就会被判为非法连接。
5.3 我想在本地调试
临时把服务和frpc的 PROXY protocol 改回 关闭 并重启隧道;
如果是生产环境或者无法重新配置,可以在本地起一个frps和frpc,frpc指向本地的服务,然后打开PROXY protocol并连接本地的frps暴露的端口。