如何用VPS自建ngrok服务器?_一步步教你搭建内网穿透服务

如何通过VPS自建ngrok服务器实现内网穿透?

项目 内容
核心功能 内网穿透、端口映射
适用场景 本地开发测试、远程访问NAS、IoT设备管理
主要优势 自主控制、配置灵活、数据安全
技术要求 Linux基础、域名解析、防火墙配置
常用工具 Go语言环境、Git、域名服务商控制台

如何用VPS自建ngrok服务器?

内网穿透技术让开发者能够从外部网络访问本地服务,而自建ngrok服务器可以提供更好的控制和安全性。本文将详细介绍在VPS上搭建ngrok服务器的完整流程。

搭建步骤概览

步骤 操作内容 预计耗时
1 准备VPS和域名 10分钟
2 安装Go语言环境 5分钟
3 编译ngrok服务端 10分钟
4 生成SSL证书 5分钟
5 配置域名解析 5分钟
6 启动ngrok服务 2分钟
7 配置客户端连接 3分钟

详细操作流程

步骤1:环境准备

操作说明 准备一台具有公网IP的VPS服务器,并确保拥有一个可用的域名。建议使用Ubuntu或CentOS系统。 使用工具提示
  • VPS控制台
  • 域名管理后台
# 更新系统包
sudo apt update && sudo apt upgrade -y

安装必要工具

sudo apt install -y git build-essential

步骤2:安装Go语言环境

操作说明 ngrok使用Go语言编写,需要先安装Go环境。
# 下载并安装Go
wget https://golang.org/dl/go1.19.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.19.linux-amd64.tar.gz

配置环境变量

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc echo 'export GOPATH=$HOME/go' >> ~/.bashrc source ~/.bashrc

步骤3:获取并编译ngrok

操作说明 从GitHub获取ngrok源码并进行编译。
# 克隆ngrok源码
git clone https://github.com/inconshreveable/ngrok.git
cd ngrok

生成自签名证书(替换为你的域名)

export NGROKDOMAIN="ngrok.yourdomain.com" openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROKDOMAIN" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=$NGROKDOMAIN" -out device.csr openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

复制证书到指定位置

cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key

编译服务端和客户端

make release-server release-client

步骤4:配置域名解析

操作说明 在域名服务商处添加两条A记录解析。
ngrok.yourdomain.com    A    YOURVPSIP
*.ngrok.yourdomain.com  A    YOURVPSIP

步骤5:启动ngrok服务

操作说明 启动ngrok服务端,指定监听端口和域名。
# 启动服务端(后台运行)
sudo ./bin/ngrokd -domain="ngrok.yourdomain.com" -httpAddr=":8080" -httpsAddr=":8081" -tunnelAddr=":4443" &

步骤6:客户端配置与连接

操作说明 在需要穿透的内网机器上配置客户端。
# 创建客户端配置文件 ngrok.cfg
echo "serveraddr: ngrok.yourdomain.com:4443
trusthostroot_certs: false" > ngrok.cfg

启动客户端连接

./ngrok -config=ngrok.cfg -subdomain=example 80

常见问题与解决方案

问题 原因 解决方案
客户端连接失败 防火墙未开放端口 开放VPS的4443、8080、8081端口
域名无法访问 DNS解析未生效 等待DNS生效或检查解析配置
证书验证错误 自签名证书不被信任 将rootCA.pem导入客户端信任证书库
服务启动失败 端口被占用 更换监听端口或停止占用端口的进程
子域名冲突 子域名已被使用 更换唯一的子域名或使用随机分配

通过以上步骤,你可以成功搭建属于自己的ngrok服务器,实现安全可靠的内网穿透服务。记得定期更新系统和ngrok版本,以确保服务的安全性。

发表评论

评论列表