最近搬了新工作室,原本以为申请了动态公网IP就万事大吉,结果陷入了联通运营商的“断网黑洞”。每10分钟断一次,后台主动剔除连接,理由竟然是“上行流量过大”。

作为AI领域的开发者,每天同步几百GB的模型镜像文件是刚需,公网IP频繁变动直接导致Git同步和远程调试崩溃。

在折腾了Tailscale、NPS后,我最终回归了最稳、最灵活的方案:FRP内网穿透

【方案架构】 利用一台具有公网IP的VPS作为“跳板”,将内网NAS、算力服务器的服务映射出去。

一、 为什么选择 FRP 架构?

  1. 解决无公网 IP 痛点:通过云服务器(VPS)中转流量,让内网设备秒变公网服务器,实现远程办公与开发。
  2. 极简原生:纯 TCP 端口直连模式,无损耗、极度清爽,一次配置永久省心。
  3. 安全与性能兼顾:统一通过云端安全组管理入口,无需在主路由开启大量 DMZ 映射,配合域名解析更优雅。

二、 服务端(VPS)下载与解压

在 Ubuntu 系统里用命令行搞定。打开 VPS 的 SSH 终端,依次执行:

三、 编写服务端配置 (纯净版)

如果你安装了宝塔面板,强烈建议直接去宝塔网页端操作,比命令行更直观:

  1. 打开宝塔面板 -> 左侧菜单“文件”。
  2. 进入 /usr/local/frp 目录。
  3. 找到 frps.toml,双击编辑它。
  4. 清空里面的默认内容,粘贴以下核心配置并保存:

四、 配置 Systemd 守护进程与启动

回到 SSH 终端,执行下面这行命令打开编辑器:

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

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

五、 客户端部署方案 A:群晖 NAS(保姆级极详版)

【注:如果你选择用群晖做主穿透节点,请执行此步骤。】

  1. 本地编写配置文件:在你的电脑桌面上新建一个文本文件,重命名为 frpc.toml(注意后缀必须是 .toml,不是 txt)。用记事本或 VSCode 打开它,填入你的穿透规则(具体代码见第七节),然后保存。
  2. 上传至群晖:打开群晖系统里的 File Station,在 docker 共享文件夹下新建一个名为 frpc 的文件夹。将你刚才在电脑上写好的 frpc.toml 上传到这个 /docker/frpc/ 目录中。
  3. 下载 Docker 镜像:打开群晖 Container Manager,点击左侧“注册表”,搜索 fatedier/frpc,双击下载最新版(latest)。
  4. 配置网络模式(极度重要):在“映像”里选中刚下载的镜像点击运行。在“网络”设置页面,务必勾选“使用与 Docker Host 相同的网络”(即 host 模式)。只有这样,容器才能跨过群晖访问到家里的 PVE、Ubuntu 等其他局域网设备。
  5. 挂载配置文件:在“存储空间设置”页面,点击 “添加文件”(注意是添加文件,千万别点成添加文件夹),选中你刚才上传的 docker/frpc/frpc.toml 文件。在右侧的“装载路径/挂载路径”中手动填写:/etc/frp/frpc.toml,并建议勾选“只读”。
  6. 启动与检查:一路下一步完成创建并启动容器。在“容器”列表中点击它,进入“日志”选项卡,如果看到绿色的 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

九、 架构师级避坑与维护小贴士

  1. 配置生效机制:每次修改服务端的 frps.toml 后,必须在 VPS 的 SSH 终端执行 systemctl restart frps 才能生效。客户端同理,修改后需重启 Docker 容器或进程。
  2. Nginx 域名配合:如果穿透了宝塔里的网站服务,需在宝塔该站点的“域名管理”中添加 绑定的域名:外网端口(例如 api.test.com:2095)才能正常访问,否则会报“未找到站点”。
  3. RustDesk 必开 UDP:若穿透 RustDesk 远程桌面,其对应的 remotePort 必须同时在阿里云安全组中开启 TCP 和 UDP 协议。
  4. 实时状态监控:访问 你的VPS公网IP:7500 查看控制台,确认对应的 Proxy 是否全部显示为绿色的 Online

【坑位提醒】

  • 安全组问题: 阿里云/腾讯云的安全组必须双重放行(云平台后台+宝塔面板)。

  • 服务重启: 修改 .toml 文件后必须重启容器,否则配置不生效。

哪怕未来运营商恢复了我的公网,我也会保留FRP作为备用,毕竟“跳板”方案在跨网段稳定性上更有优势。

详细教程地址https://www.aihubpro.cn/33356.html

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐