如何用VPS搭建ngrok服务器?_内网穿透服务搭建教程与常见问题解决
如何在VPS上搭建ngrok服务器实现内网穿透?
| 项目 | 内容 |
|---|---|
| 主要用途 | 内网穿透、本地服务外网访问、微信开发调试 |
| 所需环境 | VPS服务器、域名、Go语言环境、Git工具 |
| 适用系统 | CentOS、Ubuntu等Linux发行版 |
| 核心组件 | ngrokd(服务端)、ngrok(客户端) |
| 网络协议 | HTTP、HTTPS、TCP |
| 优势特点 | 支持自定义域名、配置相对简单、开源免费 |
邯郸百度SEO优化需要多少钱?_ - 包含内容创作和媒体推广的全案服务费用较高
# 如何在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,执行以下命令。
```bash
# 安装GCC编译器和Git
yum install gcc git -y
# 安装Go语言环境(CentOS系统)
yum install golang -y
# 验证安装是否成功
go version
git --version
```
### 步骤二:域名解析配置
**操作说明**:
将域名解析到VPS服务器IP地址,需要同时解析主域名和通配符域名。
**使用工具提示**:
在域名服务商的管理后台进行DNS解析设置。
```bash
# 假设基础域名为 tunnel.example.com
# 需要解析的记录:
# tunnel.example.com → VPS_IP
# *.tunnel.example.com → VPS_IP
```
### 步骤三:获取ngrok源码
**操作说明**:
从GitHub克隆ngrok的源代码到VPS服务器。
```bash
# 进入root目录并克隆源码
cd /root
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/root/ngrok
```
### 步骤四:生成SSL证书
**操作说明**:
为自定义域名生成自签名的SSL证书。
```bash
# 进入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)。
```bash
# 编译服务端(Linux)
make release-server
# 编译Windows客户端
GOOS=windows GOARCH=amd64 make release-client
# 编译完成后,客户端文件位置:
# ngrok/bin/windows_amd64/ngrok.exe
```
### 步骤六:启动ngrok服务
**操作说明**:
启动ngrok服务端并配置防火墙规则。
```bash
# 启动ngrok服务端
./bin/ngrokd -domain="tunnel.example.com" -httpAddr=":8080" -httpsAddr=":8081"
# 如果使用systemd管理服务,创建服务文件
vi /etc/systemd/system/ngrok.service
```
```ini
[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客户端。
```bash
# 创建ngrok配置文件 ngrok.cfg
server_addr: "tunnel.example.com:4443"
trust_host_root_certs: false
```
### 启动客户端连接
**操作说明**:
使用客户端连接自建的ngrok服务器。
```bash
# 使用自定义子域名访问
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 | 网络不稳定或服务端配置问题 | 检查服务端运行状态,确认域名解析正确 |
### 服务端启动命令详解
```bash
甘肃短视频SEO优化推广如何操作?_智能手机配合稳定器即可满足基本需求,重点应放在内容质量而非设备投入。
# 完整的服务端启动命令
./bin/ngrokd -domain="tunnel.example.com" -httpAddr=":8080" -httpsAddr=":8081" -tunnelAddr=":4443"
```
**参数说明**:
- `-domain`:基础域名,必须与证书域名一致
- `-httpAddr`:HTTP服务监听端口
- `-httpsAddr`:HTTPS服务监听端口
- `-tunnelAddr`:客户端连接端口
通过以上步骤,您就可以成功在VPS上搭建自己的ngrok服务器,实现稳定可靠的内网穿透服务。这种自建方式相比使用公共服务,在速度和稳定性方面都有明显优势。
发表评论