frp 内网穿透从零搭建指南
之前搭了个 frp 把本地的 stable-diffusion-webui 暴露到公网上,当时在那篇隐藏 cmd 窗口的文章里简单提了一嘴 frp,但没细讲怎么配。后来有不少同学私信问 frp 咋搭的,干脆写一篇从零开始的完整教程吧。
本文基于 frp v0.52.0+ 版本,使用 TOML 格式配置文件。旧版的 INI 格式(frps.ini / frpc.ini)已经不推荐使用了,新功能只能在 TOML/YAML/JSON 格式下生效。
什么是内网穿透?
简单说,
frp 的架构
frp 分两个角色:
- frps(Server):部署在有公网 IP 的服务器上,负责接收外部请求并转发
- frpc(Client):部署在你的内网机器上,负责把本地服务注册到 frps 上
1 | 外网用户 --> 公网服务器(frps) --> 内网机器(frpc) --> 本地服务 |
就这么简单,下面直接上配置。
一、服务端部署(frps)
1. 下载安装
去 GitHub Releases 页面下载对应平台的版本。服务器一般是 Linux amd64:
1 | # 下载(以 v0.61.1 为例,去 GitHub 看最新版本号) |
2. 配置 frps.toml
1 | # 服务端监听地址 |
auth.token 一定要改成一个强密码!别用 12345678 这种,被人扫到就完蛋了。同理 Dashboard 的密码也要改。
3. 用 systemd 管理 frps
创建 service 文件:
1 | sudo vim /etc/systemd/system/frps.service |
写入以下内容:
1 | [Unit] |
启动并设为开机自启:
1 | sudo systemctl daemon-reload |
4. 开放防火墙端口
别忘了开防火墙,不然 frpc 连不上:
1 | # 如果用的 ufw |
云服务器(阿里云、腾讯云等)除了系统防火墙,还要去控制台的安全组里放行端口,很多人卡在这一步。
二、客户端配置(frpc)
1. 下载安装
跟服务端一样,去 GitHub Releases 下载对应你本地机器平台的版本。Windows 的话下载 frp_x.x.x_windows_amd64.zip,解压就行。
2. 配置 frpc.toml
假设我们要把本地的 Web 服务(比如 SD WebUI 跑在 127.0.0.1:7860)暴露到公网服务器的 6000 端口:
1 | # 服务端地址 |
配置好之后启动:
1 | # Linux |
看到 login to server success 就说明连上了。这时候访问 http://你的服务器IP:6000 就能打开你本地的 Web 服务了。
3. 多个服务怎么办?
直接多加几个 [[proxies]] 就行:
1 | [[proxies]] |
三、安全注意事项
这个话题很重要,
1. Token 认证必须配
frp 默认使用 token 认证(auth.method = "token"),
2. Dashboard 密码要改
Dashboard 默认账号密码是 admin / admin,127.0.0.1,通过 SSH 隧道访问,不要直接暴露到公网。
3. 不要暴露敏感端口
千万不要把 3389(RDP)、22(SSH,除非你知道自己在干嘛)、3306(MySQL)等端口直接暴露到公网。如果非要暴露,至少改掉默认端口号,并且配合 allowPorts 限制可用端口范围。暴露数据库端口到公网 = 裸奔。
4. 服务端限制端口范围
在 frps.toml 中可以限制客户端能使用的端口范围:
1 | # 只允许这些端口范围 |
5. TLS 加密
frp 从 v0.50.0 开始 transport.tls.force = true),客户端与服务端之间的通信是加密的。如果需要强制要求 TLS,可以在 frps.toml 中加上:
1 | transport.tls.force = true |
四、Windows 下 frpc 开机自启
Windows 下 frpc 是个命令行程序,直接写 bat 自启动的话每次开机都会弹一个黑框,关了就没了。
关于如何在 Windows 下开机自启动命令行程序并隐藏 cmd 窗口,我之前专门写过一篇文章,详细介绍了用 VBS 脚本隐藏窗口的方法,详见这篇文章。
简单说就是写一个 VBS 脚本来启动 frpc:
1 | Set ws = CreateObject("Wscript.Shell") |
保存为 start_frpc.vbs,然后把这个 VBS 文件的快捷方式丢到启动文件夹里:
1 | C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup |
或者用任务计划程序(Task Scheduler)也行,设置触发器为「计算机启动时」,操作选启动那个 VBS 脚本,勾选「不管用户是否登录」。
五、常用排错命令
1 | # 查看 frps 状态 |




