雨云服务器搭建ngrok内网穿透

NAS/远程桌面/本地开发一键暴露公网

​无需公网IP!成本仅需一台轻量云服务器+域名,永久免费替代花生壳。​

我的真实应用场景

  1. ​全平台NAS访问​
  2. 将家用NAS穿透公网,手机/公司电脑直接挂载磁盘同步文件
  3. → 本地NAS管理页
  4. ​远程办公​
  5. 穿透公司Win电脑的3389端口 + Linux服务器的SSH端口
  6. → 办公机远程桌面
  7. ​异地调试协作​
  8. 本地开发微信小程序时,实时分享给异地同事测试
    9.→ 本机Web服务

​其他适用场景​​:内网OA/ERP系统、视频监控、FTP/SVN服务器、智能家居控制…

关键概念科普

术语 通俗解释
​​内网穿透​​ 让没有公网IP的本地服务(如192.168.1.100)获得一个公网地址,实现远程访问
​​Ngrok​​ 开源的反向代理工具,建立「公网服务器↔本地服务」的安全加密隧道(GitHub源码)
​​替代方案​​ Frp(性能更强)、ZeroTier(组网神器)、花生壳(免部署但收费)

技术本质:Ngrok客户端在本地运行 → 连接自建Ngrok服务端→ 将公网请求转发到内网指定端口。

自建Ngrok准备工作

资源 要求
​​云服务器​​ 1核1G+(推荐雨云服务器,月付¥25)
​​域名​​ 已备案域名(可用二级域名,国外服务器不需要)

:gear: 关键域名解析

# 必须操作:double_exclamation_mark:

*.域名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. 生成自签名证书(关键:double_exclamation_mark:替换你的域名)

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

:white_check_mark: 看到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 &

安全加固必做项

  1. ​禁用默认端口​
  2. 修改-tunnelAddr=":4443"为非常用端口(如23456)
  3. ​防火墙放行​
  4. 仅开放自定义的隧道端口 + SSH端口
  5. ​HTTPS加密(进阶)​
  6. 用Let’s Encrypt部署泛域名证书

:high_voltage: 效果实测

  • 访问NAS:→ 直达本地NAS界面
  • 远程桌面:mstsc 公网IP:33889→ 连接办公电脑
  • 实时监控日志:
  • tail -f ngrok.log # 查看连接状态
1 个赞

ps:其实可以直接放完整的url,不会出问题的