NAS/远程桌面/本地开发一键暴露公网
无需公网IP!成本仅需一台轻量云服务器+域名,永久免费替代花生壳。
我的真实应用场景
- 全平台NAS访问
- 将家用NAS穿透公网,手机/公司电脑直接挂载磁盘同步文件
- → 本地NAS管理页
- 远程办公
- 穿透公司Win电脑的3389端口 + Linux服务器的SSH端口
- → 办公机远程桌面
- 异地调试协作
- 本地开发微信小程序时,实时分享给异地同事测试
9.→ 本机Web服务
其他适用场景:内网OA/ERP系统、视频监控、FTP/SVN服务器、智能家居控制…
关键概念科普
| 术语 | 通俗解释 |
|---|---|
| 内网穿透 | 让没有公网IP的本地服务(如192.168.1.100)获得一个公网地址,实现远程访问 |
| Ngrok | 开源的反向代理工具,建立「公网服务器↔本地服务」的安全加密隧道(GitHub源码) |
| 替代方案 | Frp(性能更强)、ZeroTier(组网神器)、花生壳(免部署但收费) |
技术本质:Ngrok客户端在本地运行 → 连接自建Ngrok服务端→ 将公网请求转发到内网指定端口。
自建Ngrok准备工作
| 资源 | 要求 |
|---|---|
| 云服务器 | 1核1G+(推荐雨云服务器,月付¥25) |
| 域名 | 已备案域名(可用二级域名,国外服务器不需要) |
关键域名解析
# 必须操作![]()
*.域名A记录 → 服务器公网IP # 泛解析支持自定义子域名
️ 服务端部署全流程
首先,话不多说,低价服务器,上图,没有注册的,通过以下链接注册 官网直达 注册时优惠码b3547 有一个首月5折的优惠券
由于本屌不想备案,所以选择美国服务器,大家也可以选择大陆的
美国9929优化 1核1G 上传给了100M 流量1T 一个月只要25(优惠前),这个性价比也是很顶了
操作系统选Ubuntu Server 24.04 LTS
用SSH连上服务器,然后开始部署
1. 安装基础依赖
yum -y install zlib-devel openssl-devel git go wget gcc
2. 克隆源码(国内用户可用Gitee镜像加速,去掉空格)
git clone https:// gitee. com /mirrors/ngrok.git/data/ngrokcd/data/ngrok
3. 生成自签名证书(关键
替换你的域名)
NGROK_DOMAIN=“ngrok.你的域名”
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj “/CN=$NGROK_DOMAIN” -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj “/CN=$NGROK_DOMAIN” -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
4. 替换默认证书cp rootCA.pem assets/client/tls/ngrokroot.crtcp device.crt assets/server/tls/snakeoil.crtcp device.key assets/server/tls/snakeoil.key
5. 编译服务端(生成ngrokd)
make release-server
6. 启动服务(后台运行)nohup ./bin/ngrokd -domain=“$NGROK_DOMAIN” -httpAddr=“:8000” -httpsAddr=“:443” -tunnelAddr=“:4443” > /dev/null 2>&1 &
7. 验证端口监听
netstat -tunlp | grep ngrokd
看到0.0.0.0:4443和0.0.0.0:8000即成功!
客户端配置(Windows/Linux/Mac通用)
1. 编译客户端(在服务端操作)
# 根据设备类型选择(示例为Windows 64位)
GOOS=windows GOARCH=amd64 make release-client # 生成文件:/data/ngrok/bin/windows_amd64/ngrok.exe
2. Windows配置示例
- 创建ngrok.cfg
server_addr: “你的域名:443”
trust_host_root_certs: false
tunnels:
nas: # 隧道名称
subdomain: “nas” # 访问nas
proto:
http: 80 # 映射本地80端口
rdp:
remote_port: 33889 # 自定义公网端口
proto:
tcp: 3389 # 映射本机RDP
- 启动脚本start.bat
@echo offD:\ngrok\ngrok.exe -config=D:\ngrok\ngrok.cfg start nas rdp
pause
3. Linux客户端后台运行
nohup ./ngrok -log=ngrok.log -config=ngrok.cfg start nas > /dev/null 2>&1 &
安全加固必做项
- 禁用默认端口
- 修改-tunnelAddr=":4443"为非常用端口(如23456)
- 防火墙放行
- 仅开放自定义的隧道端口 + SSH端口
- HTTPS加密(进阶)
- 用Let’s Encrypt部署泛域名证书
效果实测
- 访问NAS:→ 直达本地NAS界面
- 远程桌面:mstsc 公网IP:33889→ 连接办公电脑
- 实时监控日志:
- tail -f ngrok.log # 查看连接状态
