被运营商断网折腾疯了?技术人自建FRP服务端+客户端保命指南
最近搬了新工作室,原本以为申请了动态公网IP就万事大吉,结果陷入了联通运营商的“断网黑洞”。每10分钟断一次,后台主动剔除连接,理由竟然是“上行流量过大”。


作为AI领域的开发者,每天同步几百GB的模型镜像文件是刚需,公网IP频繁变动直接导致Git同步和远程调试崩溃。
在折腾了Tailscale、NPS后,我最终回归了最稳、最灵活的方案:FRP内网穿透。
【方案架构】 利用一台具有公网IP的VPS作为“跳板”,将内网NAS、算力服务器的服务映射出去。
一、 为什么选择 FRP 架构?
- 解决无公网 IP 痛点:通过云服务器(VPS)中转流量,让内网设备秒变公网服务器,实现远程办公与开发。
- 极简原生:纯 TCP 端口直连模式,无损耗、极度清爽,一次配置永久省心。
- 安全与性能兼顾:统一通过云端安全组管理入口,无需在主路由开启大量 DMZ 映射,配合域名解析更优雅。
二、 服务端(VPS)下载与解压
在 Ubuntu 系统里用命令行搞定。打开 VPS 的 SSH 终端,依次执行:

三、 编写服务端配置 (纯净版)
如果你安装了宝塔面板,强烈建议直接去宝塔网页端操作,比命令行更直观:
- 打开宝塔面板 -> 左侧菜单“文件”。
- 进入
/usr/local/frp目录。 - 找到
frps.toml,双击编辑它。 - 清空里面的默认内容,粘贴以下核心配置并保存:

四、 配置 Systemd 守护进程与启动
回到 SSH 终端,执行下面这行命令打开编辑器:

在窗口里鼠标右键粘贴以下内容(按 Ctrl+O 回车保存,Ctrl+X 退出):

依次执行以下三条命令启动服务:

五、 客户端部署方案 A:群晖 NAS(保姆级极详版)
【注:如果你选择用群晖做主穿透节点,请执行此步骤。】
- 本地编写配置文件:在你的电脑桌面上新建一个文本文件,重命名为
frpc.toml(注意后缀必须是.toml,不是 txt)。用记事本或 VSCode 打开它,填入你的穿透规则(具体代码见第七节),然后保存。 - 上传至群晖:打开群晖系统里的 File Station,在
docker共享文件夹下新建一个名为frpc的文件夹。将你刚才在电脑上写好的frpc.toml上传到这个/docker/frpc/目录中。 - 下载 Docker 镜像:打开群晖 Container Manager,点击左侧“注册表”,搜索
fatedier/frpc,双击下载最新版(latest)。 - 配置网络模式(极度重要):在“映像”里选中刚下载的镜像点击运行。在“网络”设置页面,务必勾选“使用与 Docker Host 相同的网络”(即 host 模式)。只有这样,容器才能跨过群晖访问到家里的 PVE、Ubuntu 等其他局域网设备。
- 挂载配置文件:在“存储空间设置”页面,点击 “添加文件”(注意是添加文件,千万别点成添加文件夹),选中你刚才上传的
docker/frpc/frpc.toml文件。在右侧的“装载路径/挂载路径”中手动填写:/etc/frp/frpc.toml,并建议勾选“只读”。 - 启动与检查:一路下一步完成创建并启动容器。在“容器”列表中点击它,进入“日志”选项卡,如果看到绿色的
login to server success,说明群晖已经成功与云服务器握手!
六、 客户端部署方案 B:Ubuntu 虚拟机【二选一】
【注:如果你不打算用群晖,而是想在独立的 Ubuntu 虚拟机(如 PVE 下的虚拟机)里跑客户端,请直接在虚拟机的 SSH 终端执行以下操作。】

七、 客户端(FRPC)穿透规则规划代码
无论你用方案 A 还是方案 B,你的 frpc.toml 文件内容结构都是一样的。注意:remotePort(外网端口)必须唯一,不可冲突:

八、 云厂商与宝塔安全组放行准则
因为走纯端口直连,所有的业务端口都直接暴露在公网上,防火墙放行是最关键的一步。
请去宝塔面板 -> 安全(以及阿里云/腾讯云后台的“安全组”),将以下端口全部放行:
- 8700 (FRP 隧道通信必开)
- 7500 (FRP 后台管理面板必开)
- 8006 (给 PVE 预留)
- 5000 (给 NAS 预留)
- 2095 (给宝塔网站 80 端口预留)
- (以及你在
frpc.toml里配置的其他所有自定义remotePort)
九、 架构师级避坑与维护小贴士
- 配置生效机制:每次修改服务端的
frps.toml后,必须在 VPS 的 SSH 终端执行systemctl restart frps才能生效。客户端同理,修改后需重启 Docker 容器或进程。 - Nginx 域名配合:如果穿透了宝塔里的网站服务,需在宝塔该站点的“域名管理”中添加
绑定的域名:外网端口(例如api.test.com:2095)才能正常访问,否则会报“未找到站点”。 - RustDesk 必开 UDP:若穿透 RustDesk 远程桌面,其对应的
remotePort必须同时在阿里云安全组中开启 TCP 和 UDP 协议。 - 实时状态监控:访问
你的VPS公网IP:7500查看控制台,确认对应的 Proxy 是否全部显示为绿色的 Online。
【坑位提醒】
-
安全组问题: 阿里云/腾讯云的安全组必须双重放行(云平台后台+宝塔面板)。
-
服务重启: 修改
.toml文件后必须重启容器,否则配置不生效。
哪怕未来运营商恢复了我的公网,我也会保留FRP作为备用,毕竟“跳板”方案在跨网段稳定性上更有优势。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)