肝了两个晚上,好几小时,踩了无数坑,从NPS折腾到FRP,从腾讯云服务器折腾到本地NAS,从centOS折腾到win,终于搞出来一套成功的内网穿透方案。此笔已被追溯和后续运维修改配置。
一开始在腾讯云服务器上(centOS 7.9 , 宝塔环境(php,mysql,apache,phpmyadmin)),用宝塔应用商店的内网frp穿透插件,还参看了宝塔官网论坛的教材,各种稀奇古怪的问题,白天防火墙, 腾讯云安全组,最在AI辅助下一直说我的toml配置文件编码问题,AI来回无数个方案最终高还是没有解决,遂浪费2小时。
然后换nps,还是在腾讯云上搞,在AI的配合下,肝了两小时,老是因为443端口的问题(最后才知道和宝塔有冲突), 整到AI无语,直接让我升级版本避免现行版本的bug,结果没有新版本了,猝。AI建议我用frp , 遂浪费2小时
第二天一早,突然想到能不能服务端也用win , AI回复可以。我决定在我的NAS上启个虚拟机,虚拟机里面安装win10。跟着AI教程一步一步肝2小时,最终成功了。
目标:通过公网 Win10(带花生壳动态域名)实现外网访问内网 Win10 的 Web 服务与远程桌面 . 一个跑在NAS上的虚拟机上的win10
服务机:Windows 10,已安装花生壳,绑定动态域名myhost.com
客户内网机:Windows 10,运行多个本地服务(Web、RDP 等)
工具:frp(v0.58+)、NSSM(服务管理)、Windows 防火墙
一、整体架构
1[内网 Win10]
├─ Web 服务 A:http://127.0.0.1:7860 → 映射到公网 :78604
├─ Web 服务 B:http://127.0.0.1:5005 → 映射到公网 :78615
├─ 文件服务器:http://127.0.0.1:8023 → 映射到公网 :80236
├─ 远程桌面:3389 → 映射到公网 :60017│8
└─ frpc(客户端)──TCP 加密隧道─
│myhost.com:7000│[公网 Win10 上的 frps(服务端)]
│外网用户通过 myhost.com:7860 / :7861 / :8023 访问 Web
│外网用户通过 myhost.com:6001 连接远程桌面
二、服务端配置(公网 Win10)
1. 下载与目录
- 下载 frp Windows 版:https://github.com/fatedier/frp/releases
- 解压至:C:\frp-server
2. 配置文件 C:\frp-server\frps.toml
1[common]2bind_port=7000# frpc 连接端口3dashboard_addr=0.0.0.0# 允许外网访问 Dashboard4dashboard_port=8090# Dashboard 端口5dashboard_user="admin"6dashboard_pwd="YourStrongPassword"# ← 务必修改!7token="YourSecureToken"# 客户端必须一致8log_level=info9log_max_days=3
🔐安全提示:
- 密码和 token 必须加双引号(避免数字开头被误解析,血泪啊 win 下面解析异常,)
- 不要使用默认密码
- 启动命令cmd下:切换到frps目录: frps.exe -c frps.toml
3. 设置开机自启(使用 NSSM)
- 下载 NSSM,解压
-
管理员 CMD 执行:
Cmd编辑
1nssm install frps
- Path: C:\frp-server\frps.exe
- Startup directory: C:\frp-server
- Arguments: -c frps.toml
-
启动服务:
Cmd编辑
1net start frps
4. 防火墙放行端口
- 控制面板 → 高级防火墙 → 入站规则 → 新建规则
- 放行 TCP 端口:
- 7000(frp 控制通道)
- 8090(Dashboard)
- 7860, 7861, 8023, 6001(所有 remote_port)
5. 路由器做端口转发规则并生效
三、客户端配置(内网 Win10)
1. 下载与目录
- 同样下载 frp Windows 版
- 解压至:D:\frp-client
2. 配置文件 D:\frp-client\frpc.toml
1[common]2server_addr=myhost.com# 花生壳动态域名3server_port=70004token="YourSecureToken"# 必须与服务端一致56# Web服务7[web_qimage]8type=tcp9local_ip=127.0.0.110local_port=786011remote_port=78601213# web1平台14[web_ops]15type=tcp16local_ip=127.0.0.117local_port=500518remote_port=78611920# CHFS 文件服务器21[file_server]22type=tcp23local_ip=127.0.0.124local_port=802325remote_port=80232627# 远程桌面(RDP)28[rdp]29type=tcp30local_ip=127.0.0.131local_port=338932remote_port=6001
⚠️关键注意:
- 每个 [xxx] 名称必须全局唯一
- 不要在配置行末加 # 注释,会导致域名解析失败 (血泪啊,不要加注释)
- 所有 remote_port 必须避开 Chrome 不安全端口(如 6000),推荐使用 7000+ 或 80xx (血泪啊,6000段的端口死活不同,最后才知道和浏览器有关系)
- 启动命令cmd下:切换到frpc目录: frpc.exe -c frpc.toml
3. 设置开机自启(同样用 NSSM)
- 安装服务 frpc,指向 D:\frp-client\frpc.exe -c frpc.toml
- 启动:net start frpc
四、验证与访问方式
| 服务 | 外网访问地址 |
|---|---|
| Qimage-edit | http://myhost.com:7860 |
| 运维平台 | http://myhost.com:7861 |
| CHFS 文件服务器 | http://myhost.com:8023 |
| 远程桌面 | 使用“远程桌面连接” → 输入 myhost.com:6001 |
| Dashboard(监控) | http://myhost.com:8090(账号/密码见 frps.toml) |
✅ 建议在外网(如手机 4G)测试,避免本地回环干扰
五、常见问题与解决
| 问题现象 | 原因 | 解决方案 |
|---|---|---|
| Dashboard 循环登录 | 密码未加引号或以数字开头 | dashboard_pwd = "pwd" |
| no such host | 配置文件行尾有 # 注释 | 删除所有行尾注释 |
| 浏览器报 ERR_UNSAFE_PORT | 使用了 Chrome 黑名单端口(如 6000) | 改用 7860、8080、8023 等安全端口 |
| 某个端口不通 | 防火墙未放行 / 本地服务未启动 | 检查 netstat、放行端口、确认服务运行 |
| 代理未生效 | 代理名称重复(如两个 [app]) | 确保每个 [xxx] 唯一 |
六、维护建议
- 定期检查花生壳客户端是否在线,确保 myhost.com 解析正确
- 升级 frp 到最新版,修复安全与兼容性问题
- 不要暴露高危端口(如 3389、3306)到公网,除非必要
- 可通过 Dashboard(:8090)实时监控连接状态与流量
📌备注:本方案适用于家庭宽带、无固定公网 IP 场景,成本低、配置灵活,适合个人开发、远程办公、NAS 访问等场景。
✅当前状态:全部服务正常运行
one more thing:
没想到有了腾讯云固定公网IP的服务,折腾了数小时没成功,最终还是靠NAS。
All in one FnNAS is very good 。
本文由
bigwei08028 创作,除注明转载/出处外,均为本站原创,转载前请务必署名
最后编辑时间为: 2025-12-31 11:33 Wednesday