原版地址:https://github.com/fatedier/frp
我这边把几篇关于 FRP 的零散笔记合并整理成一篇,方便后面直接查。整篇还是围绕我平时最常用的几个场景来写:基础反向代理、边界主机回连、配合 Proxifier/Proxychains 做流量转发、以及常见排错。
FRP(Fast Reverse Proxy)本质上就是一个反向代理工具。它支持 TCP、UDP、HTTP、HTTPS 等多种协议,在我平时做内网穿透、远程调试、授权测试环境流量转发的时候都比较常用。简单理解,就是通过一台公网机器做中转,让我从外部能够继续访问内网目标。
一、我通常怎么理解 FRP
- 公网 VPS 跑
frps,负责监听和接收连接 - 边界主机或内网主机跑
frpc,主动回连到 VPS - 我需要访问什么服务,就在客户端配置里把对应端口映射出来
所以它最适合的就是:公网打不进来,但目标主机能主动出网 的场景。
二、编译与准备
如果我要自己编译 frp,首先会准备 Go 环境。Go 环境安装教程可以参考:
https://www.runoob.com/go/go-environment.html
如果是在中国大陆网络环境下,拉依赖有时比较慢,我一般会先配置模块代理:
https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md
go env -w GOPROXY=https://goproxy.cn,direct
进入源码目录以后,再根据当前版本的 README 或 Makefile 来执行构建。老版本里也有人直接用:
sh ./package.sh
不同版本的构建方式不完全一样,所以我这里还是建议以当前仓库的说明为准。
三、FRP 下载地址
如果不准备自己编译,直接下载官方 Release 即可:
https://github.com/fatedier/frp/releases
常见平台版本一般都能在 Release 页面找到,例如:
Windows amd64
Windows 386
Linux amd64
Linux 386
四、最基础的反向代理
这是我最常用的场景:一台公网 VPS 做服务端,一台边界主机做客户端。
1. 公网侧启动 frps
frps -p 9090
如果用配置文件,我一般会直接写成:
# frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = your-strong-token
然后启动:
frps.exe -c frps.ini
2. 内网侧启动 frpc
边界主机主动回连到公网服务端:
# frpc.ini
[common]
server_addr = 45.76.153.192
server_port = 7000
token = your-strong-token
[socks]
type = tcp
remote_port = 6000
plugin = socks5
启动客户端:
frpc.exe -c frpc.ini
这样我在本地只要访问公网服务器的对应端口,就能通过 FRP 转到内网侧提供的代理能力。
五、我怎么配合 Proxifier / Proxychains 使用
很多时候,我并不是单纯映射一个 Web 端口,而是希望把整段流量通过 SOCKS 代理走过去。这时我一般会配合 Proxifier 或 Proxychains 来使用。
1. Proxifier
- 代理地址填写公网 VPS 地址
- 代理端口填写 FRP 映射出来的 SOCKS5 端口
- 协议选 SOCKS5
这样本地不支持代理的软件,也可以被强制走代理。
2. Proxychains
Linux 下我更常用 Proxychains。把配置文件里加上:
socks5 公网IP 端口
之后像下面这样运行即可:
proxychains curl http://ip-api.com/json/?lang=zh-CN
如果返回的出口 IP 已经变成目标链路,那说明代理通了。
六、一个典型内网场景
我平时常见的场景是这样的:
- VPS:100.20.14.14
- 边界 Web 服务器:42.41.52.13 / 192.168.10.10
- 内网其他主机:192.168.10.20、192.168.10.30
这时候我会把边界 Web 服务器作为 FRP 客户端,让它主动连到 VPS。等隧道建立之后,我再通过 VPS 转发到边界主机,进一步访问内网其它地址。这样整个链路会比较清晰,也方便我统一管理。
七、常见问题排查
1. 连不上服务端
- 先看服务端端口是否真的开放
- 再看安全组、防火墙是否放行
- 确认 token 是否一致
- 确认 frps 和 frpc 版本不要差太多
2. 隧道建立了,但业务流量不通
- 先确认客户端本地服务本身能不能访问
- 再确认 remote_port 是否被占用
- 如果配合 Proxifier / Proxychains,要检查代理协议是否填对
3. 访问慢或者不稳定
- 优先检查链路质量,而不是一上来就怀疑工具
- 日志里重点看重连、超时和鉴权失败
- 必要时把配置精简,只保留当前确实要用的映射
八、补充说明
- 如果只是正常部署,我优先建议直接用官方 Release
- 正式环境建议开启 token 和 TLS,不要裸奔
- 如果要开 SOCKS5,记得做好账号、端口和来源控制
- Dashboard 不建议直接暴露到公网
九、总结
我自己把几篇 FRP 相关内容合并之后,核心其实就两件事:
- 让内网主机主动回连公网服务端,建立稳定隧道
- 再配合 Proxifier / Proxychains,把需要的流量转进去
只要把这两层关系理顺,FRP 的用法就不会乱。后面如果我要继续扩展 HTTP、HTTPS、域名转发或者多端口映射,也都是在这个基础上往上叠。

















暂无评论内容