服务端操作系统:centos7
使用到的命令:
- yum install gcc -y 安装编译环境
- yum install git -y 安装git 下载代码用的
-
yum install golang 安装golang语言 如果提示没有安装包则先执行
rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO 和
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
然后再执行 yum install golang就好了
- git clone https://github.com/tutumcloud/ngrok.git ngrok 下载ngrok代码
- cd ngrok 切换到代码目录
生成证书
- NGROK_DOMAIN="tunnel.test.com" 设置你的域名,这里test.com就是你的顶级域名,不建议直接设置顶级域名,免得影响别的子域名使用
- openssl genrsa -out base.key 2048 生成客户端RSA私钥 无加密
- openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem 生成客户端公钥
- openssl genrsa -out server.key 2048 生成服务端RSA私钥 无加密
- openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr 生成服务端公钥
- openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt 生成签名
生成证书结束
- cp base.pem assets/client/tls/ngrokroot.crt 替换现有证书
- make release-server release-client 编译生成服务器文件ngrokd和客户端文件ngrok
上面命令生成的客户端只能在和服务器环境一样的系统上使用,我们可以根据客户端使用的系统重新编译客户端执行文件,比如:
GOOS=linux GOARCH=arm make release-client 生成安卓系统客户端
GOOS=darwin GOARCH=amd64 make release-client 生成mac系统客户端
GOOS=windows GOARCH=386 make release-client 生成windows客户端
GOOS 表示运行系统, GOARCH 表示系统架构
- scp 用户名@服务器ip:服务器文件路径 本地存放路径 #将客户端文件下载到本地
域名解析
不建议直接解析顶级域名,免得影响别的子域名使用,假设test.com为顶级域名,我们使用tunnel作为穿透的二级域名
将tunnel.test.com 解析到服务器,记录类型为A,记录值填写服务器ip
-
将*.tunnel.test.com 解析到服务器,记录类型为CNAME,记录值为tunnel.test.com
- ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你生成证书时填的域名" -httpAddr=":8081" -httpsAddr=":8082" 服务器端启动命令 端口任意填,没被占用和能外网访问就行
18.编辑客户端配置文件,比如下面配置
-
ngrok -config ngrok.cfg start 隧道名1 隧道名2 ...... 客户端启动命令,windows把命令里面的ngrok替换为ngrok.exe,然后在ngrok.exe所在目录使用cmd终端执行,出现下图表示成功
本教程视频实操版,地址:https://www.bilibili.com/video/BV1r5411n77K/,搭配食用更香哦。