很多朋友在远程办公、内网调试或者自用网络实验时,都会遇到一个经典需求:把手里的内网机器变成一个可以远程连接的 socks5 代理。本文要介绍的 frp,就是完成这件事最常用的工具之一——它免费、开源、配置简单,配合内置的 socks5 插件,几行配置就能搞定。下面我们从头到尾走一遍完整流程。
frp 是什么?为什么能用它做 socks5 代理
frp 是一款开源的内网穿透工具,由服务端 frps 和客户端 frpc 两部分组成。它的工作原理可以简单概括为:内网机器主动连接公网服务器,建立一条隧道,让外部用户能够通过公网服务器访问到内网的服务。
很多人以为 frp 只能把内网网站暴露到公网,其实它还内置了丰富的插件机制,其中就包括 socks5 插件。也就是说,你不需要在本地额外安装任何代理软件,只要在 frpc 的配置文件里加上插件配置,这条隧道就会自动变成一个 socks5 代理服务。
典型的使用场景包括:远程访问公司或家里的内网设备、调试本机开发的网络服务、让出差在外的电脑"连回"内网环境等。
准备工作:搭建前你需要什么
整个方案只需要两台机器和一份程序包,清单如下:
| 准备项 | 用途说明 |
|---|---|
| 一台公网服务器 | 部署 frps 服务端,接收外部流量并转发 |
| 一台内网设备 | 运行 frpc 客户端和 socks5 插件 |
| frp 程序包 | 在官方发布页下载对应平台的版本 |
| 两个端口号 | 7000 用于隧道通信,1080 用于代理连接 |
两个小提醒:一是服务器需要在安全组或防火墙中放行上述端口;二是 frp 服务端和客户端的版本建议保持一致,避免出现兼容性问题。
配置流程总览:四步搞定
整个流程可以归纳为四步:下载解压 → 配置服务端 → 配置客户端 → 启动测试。下面逐步展开。
第一步:配置服务端 frps
登录你的公网服务器,下载 frp 并解压,编辑 frps.toml:
# frps.toml
bindPort = 7000
auth.token = "your_token_here"
bindPort 是 frpc 连接 frps 的通信端口;auth.token 用于客户端鉴权,请改成你自己的强口令。旧版本 INI 格式对应 [common] 段下的 bind_port 和 token 两项,含义相同。保存后启动:
./frps -c ./frps.toml
看到启动成功的日志说明服务端已就绪。生产环境建议用 systemd 托管进程,实现开机自启和崩溃自动重启。
第二步:客户端 frpc 启用 socks5 插件
在内网设备上编辑 frpc.toml(本文以 0.52 及以上版本的 TOML 格式为例):
serverAddr = "你的服务器公网IP"
serverPort = 7000
auth.token = "your_token_here"
[[proxies]]
name = "socks5-proxy"
type = "tcp"
remotePort = 1080
[proxies.plugin]
type = "socks5"
username = "user"
password = "pass123"
几个关键参数的含义:
- remotePort:外部用户连接代理时使用的端口,可自行更换,注意在安全组放行;
- plugin:填 socks5 表示启用内置插件,无需额外安装代理软件;
- username / password:代理的连接账号密码,务必设置强密码,否则端口暴露在公网上很容易被扫描滥用。
如果你还在使用旧版 INI 配置格式,对应写法如下:
[socks5-proxy]
type = tcp
remote_port = 1080
plugin = socks5
plugin_user = user
plugin_passwd = pass123
拿不准字段时,可以直接参考压缩包里自带的 frpc_full_example.toml 完整示例文件,对照修改即可。
第三步:启动并测试代理
在内网设备上执行:
./frpc -c ./frpc.toml
Windows 系统下命令为 frpc.exe -c frpc.toml。当控制台出现 "start proxy success" 之类的日志时,说明隧道已建立。此时用 curl 快速验证代理是否生效:
curl -x socks5://user:pass123@服务器IP:1080 http://cip.cc
如果返回的 IP 是你公网服务器的地址,而不是本机宽带的出口 IP,说明代理已经正常工作。浏览器、采集程序或业务代码中,也可以按同样的方式填入代理地址:服务器 IP + 1080 端口 + 账号密码。
安全加固与合规提醒
socks5 端口一旦暴露在公网,就是扫描器眼中的"猎物",以下几件事一定要做:
- 设置强密码:账号密码是第一道防线,避免流量被陌生人白嫖甚至溯源到你的服务器;
- 收紧安全组:如果只有固定设备使用,可以在云服务器安全组中限制来源 IP;
- 开启隧道加密:在客户端配置中加上 transport.tls.enable = true,让隧道流量加密传输;
- 定期查看日志:发现异常连接及时更换端口和密码。
同时提醒:自建代理只能用于合法合规的用途,例如远程办公、内网调试等,请遵守所在网络环境的相关规定,不要用于任何违法违规的场景。
自建太重?这些场景更适合现成的代理 IP 服务
自己动手搭建 frp socks5 代理,收获的是折腾的快乐和完全的掌控权,但它也有明显的短板:出口 IP 只有服务器这一个,业务量一上来就容易触发目标网站的访问限制;服务器、带宽、日常运维都要自己操心,长期算下来并不轻松。
如果你的真实需求其实是"业务里需要大量稳定可用的国内代理 IP",比如数据采集、舆情分析、营销推广、价格监测等场景,那么直接使用专业的代理服务商反而更划算。以天启HTTP为例,它是国内 IP 代理服务商,提供动态代理、静态代理等多种类型,拥有丰富的国内 IP 资源,注册后在控制台自助获取即可接入业务,无需购买服务器、无需写配置、无需日常运维。
需要注意的是,天启HTTP 面向的是国内业务场景,如果你的使用场景需要海外 IP,则不适用。
| 对比项 | 自建 frp socks5 | 天启HTTP 代理服务 |
|---|---|---|
| IP 资源 | 仅服务器自身 IP,数量有限 | 海量国内 IP 池,动态静态可选 |
| 上手成本 | 需购服务器、写配置、排错 | 注册即用,控制台自助获取 |
| 稳定性 | 依赖个人运维水平 | 专业团队维护,高可用 |
| 并发能力 | 受单台服务器带宽限制 | 支持高并发业务请求 |
| 综合成本 | 服务器+带宽+时间 | 按需付费,灵活可控 |
常见问题 Q&A
Q:用 frp 搭的 socks5 代理,出口 IP 是什么?
是公网服务器(frps 所在机器)的 IP,而不是内网设备的 IP。想要不同的出口 IP,就需要准备多台服务器。
Q:连接代理后超时或无法上网怎么办?
按顺序排查:安全组是否放行 1080 端口 → 账号密码是否输入正确 → frpc 与 frps 的 token 是否一致 → 服务器本地防火墙是否拦截。绝大多数问题都出在这四处。
Q:socks5 代理和 HTTP 代理有什么区别?
socks5 工作在会话层,转发的是原始数据包,支持的流量类型更广泛;HTTP 代理则针对 HTTP/HTTPS 请求做转发。业务程序支持哪种协议,就选择对应的代理类型。
Q:自建 socks5 代理合法吗?
frp 是开源工具,自建代理本身并不违法,但用途必须合法合规,例如远程办公、内网调试等。切勿将代理用于任何违法违规活动。
Q:不想自己维护服务器,有没有更省心的方案?
如果你的需求是大量国内代理 IP,可以直接使用天启HTTP这类国内代理服务商,在官网注册后即可在控制台获取代理 IP,省去服务器采购、配置和运维的全部环节。具体支持的协议和产品类型,可在天启HTTP官网查看。





