如何用VPS搭建ngrok服务器?_内网穿透服务搭建教程与常见问题解决

如何在VPS上搭建ngrok服务器实现内网穿透?

项目 内容
主要用途 内网穿透、本地服务外网访问、微信开发调试
所需环境 VPS服务器、域名、Go语言环境、Git工具
适用系统 CentOS、Ubuntu等Linux发行版
核心组件 ngrokd(服务端)、ngrok(客户端)
网络协议 HTTP、HTTPS、TCP
优势特点 支持自定义域名、配置相对简单、开源免费

如何在VPS上搭建ngrok服务器实现内网穿透?

内网穿透是现代开发中经常遇到的需求,特别是在微信开发、本地服务演示等场景中。ngrok作为一款优秀的内网穿透工具,通过自建服务器可以获得更好的稳定性和自定义功能。

搭建前的准备工作

在开始搭建之前,需要准备以下资源:
  • VPS服务器:推荐使用腾讯云、阿里云等云服务商,系统建议选择CentOS 7.2或以上版本
  • 域名:最好是已经备案的域名,便于后续配置
  • 远程连接工具:Xshell、Xftp等SSH客户端
  • 基础软件:Git、Go语言环境

主要搭建步骤

步骤 操作内容 预计时间
1 环境准备与依赖安装 10分钟
2 域名解析配置 5分钟
3 获取ngrok源码 5分钟
4 生成SSL证书 5分钟
5 编译服务端与客户端 15分钟
6 启动ngrok服务 2分钟

详细操作流程

步骤一:环境准备与依赖安装

操作说明: 首先需要在VPS上安装必要的依赖包,包括Go语言环境和Git工具。 使用工具提示: 使用SSH客户端连接VPS,执行以下命令。
# 安装GCC编译器和Git
yum install gcc git -y

安装Go语言环境(CentOS系统)

yum install golang -y

验证安装是否成功

go version git --version

步骤二:域名解析配置

操作说明: 将域名解析到VPS服务器IP地址,需要同时解析主域名和通配符域名。 使用工具提示: 在域名服务商的管理后台进行DNS解析设置。
# 假设基础域名为 tunnel.example.com

需要解析的记录:

tunnel.example.com → VPSIP

*.tunnel.example.com → VPSIP

步骤三:获取ngrok源码

操作说明: 从GitHub克隆ngrok的源代码到VPS服务器。
# 进入root目录并克隆源码
cd /root
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/root/ngrok

步骤四:生成SSL证书

操作说明: 为自定义域名生成自签名的SSL证书。
# 进入ngrok目录
cd ngrok

生成证书,替换为你的域名

openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=tunnel.example.com" -days 5000 -out rootCA.pem openssl genrsa -out device.key 2048 openssl req -new -key device.key -subj "/CN=tunnel.example.com" -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

步骤五:编译服务端与客户端

操作说明: 编译生成ngrok服务端(ngrokd)和客户端(ngrok)。
# 编译服务端(Linux)
make release-server

编译Windows客户端

GOOS=windows GOARCH=amd64 make release-client

编译完成后,客户端文件位置:

ngrok/bin/windowsamd64/ngrok.exe

步骤六:启动ngrok服务

操作说明: 启动ngrok服务端并配置防火墙规则。
# 启动ngrok服务端
./bin/ngrokd -domain="tunnel.example.com" -httpAddr=":8080" -httpsAddr=":8081"

如果使用systemd管理服务,创建服务文件

vi /etc/systemd/system/ngrok.service
[Unit]
Description=ngrok
After=network.target
[Service]
Type=simple
ExecStart=/root/ngrok/bin/ngrokd -domain=tunnel.example.com -httpAddr=:8080 -httpsAddr=:8081
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

客户端配置与使用

Windows客户端配置

操作说明: 在本地Windows电脑上配置ngrok客户端。
# 创建ngrok配置文件 ngrok.cfg
serveraddr: "tunnel.example.com:4443"
trusthostroot_certs: false

启动客户端连接

操作说明: 使用客户端连接自建的ngrok服务器。
# 使用自定义子域名访问
ngrok -config=ngrok.cfg -subdomain=myapp 80

使用自定义完整域名访问

ngrok -config=ngrok.cfg -hostname=app.example.com 80

常见问题与解决方案

问题 原因 解决方案
连接超时或失败 防火墙未开放相应端口 开放4443、8080、8081端口:firewall-cmd --add-port=4443/tcp --permanent
证书验证失败 自签名证书不被信任 将生成的rootCA.pem安装到客户端系统的受信任根证书中
编译过程中出错 Git版本过低或Go环境问题 升级Git到1.7.9.5以上版本,重新配置Go环境变量
域名解析问题 DNS配置错误或未生效 检查域名解析记录,等待DNS生效
客户端显示reconnecting 网络不稳定或服务端配置问题 检查服务端运行状态,确认域名解析正确

服务端启动命令详解

# 完整的服务端启动命令
./bin/ngrokd -domain="tunnel.example.com" -httpAddr=":8080" -httpsAddr=":8081" -tunnelAddr=":4443"
参数说明
  • -domain:基础域名,必须与证书域名一致
  • -httpAddr:HTTP服务监听端口
  • -httpsAddr:HTTPS服务监听端口
  • -tunnelAddr:客户端连接端口
通过以上步骤,您就可以成功在VPS上搭建自己的ngrok服务器,实现稳定可靠的内网穿透服务。这种自建方式相比使用公共服务,在速度和稳定性方面都有明显优势。

发表评论

评论列表