栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

ngrok内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ngrok内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】

前言:微信公众号,小程序、钉钉等开发需要内网穿透工具。
1、经过不断的摸索和调试,完成ngrok内网穿透的工具的搭建,对于微信公众号,小程序、钉钉等开发提供便利性。
2、搭建环境Linux centos8 备案域名 域名证书(Let’s encrypt免费证书)
3、搭建步骤
1)安装git 拉取ngrok源码

yum install -y gcc gcc-c++ git zlib-devel openssl-devel perl

2)安装go,因为ngrok是使用GO语言编写

wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.8.linux-amd64.tar.gz

3)配置环境变量

 vi /etc/profile

#在最后添加

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

更新环境变量让配置生效

source /etc/profile

验证是否安装正确

go version
[root@localhost bin]# go version
go version go1.16.12 linux/amd64

4)下载ngrok源码 有三种方式
a、使用git直接clone (可能存在版本更新)

cd /usr/local/  
git clone https://github.com/inconshreveable/ngrok.git

b、前辈已经处理好的ngrok 和相关的依赖 https://github.com/haungjianli/ngrok

cd /usr/local/  
git clone https://github.com/haungjianli/ngrok

c、因为ngrok可能存在更新,直接把本次源码下载并且提交资源:已上传的ngrok源码下载
执行解压操作

tar -xvf ./ngrok.tar.gz

5)创建证书 注意这里是为了安装创建的证书,正式使用必须使用正式发布的签名证书

#进入ngrok目录
cd /usr/local/ngrok
#使用openssl创建证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.yxt.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.yxt.cn" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

当前目录下有创建好的证书

6)将证书移动到 sever 和 client 执行一下命令 提示是否覆盖?按 y 覆盖

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

7)生成服务端(这里会很慢,GitHub拉取数据太慢,需要多试几次,抛出fatal: unable to access ‘https://github.com/keepeye/log4go/’: Empty reply from server错误,不用担心)

cd /usr/local/ngrok/
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
GOOS=linux GOARCH=amd64 make release-server

这里可能出现一个错误 【log4go 会提示访问不到,修改源码,将该包改为 github 上的地址】
GOOS=“” GOARCH=“” go get github.com/jteeuwen/go-bindata/go-bindata
go get: module github.com/jteeuwen/go-bindata/go-bindata: Get “https://proxy.golang.org/github.com/jteeuwen/go-bindata/go-bindata/@v/list”: dial tcp 142.251.43.17:443: i/o timeout
make: *** [Makefile:22: bin/go-bindata] Error 1

解决:

#进入到log目录
cd /usr/local/ngrok/src/ngrok/log
#修改参数值 
#将原来的 log "github.com/alecthomae/log4go" 改为 log "github.com/keepeye/log4go"
vi  ./logger.go

将原来的 log “github.com/alecthomae/log4go” 改为 log “github.com/keepeye/log4go”

再次执行生成服务端

cd /usr/local/ngrok/
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
GOOS=linux GOARCH=amd64 make release

可能再次出现错误:
go get ngrok/…: malformed module path “ngrok”: missing dot in first path element
make: *** [Makefile:8: deps] Error 1

解决:

#处理异常
go env -w GO111MODULE=off

再次执行生成服务端

cd /usr/local/ngrok/
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
GOOS=linux GOARCH=amd64 make release

未报错即为成功
8)生成客户端 自己按照客户端系统来选 我是windows 64位

cd /usr/local/ngrok/
#windows 64位
GOOS=windows GOARCH=amd64 make release-client
#windows 32位
GOOS=windows GOARCH=amd64 make release-client 
#Mac OS 32位
GOOS=darwin GOARCH=386 make release-client        
#Mac OS 64位
GOOS=darwin GOARCH=amd64 make release-client    
#Linux  64位  
GOOS=linux GOARCH=amd64 make release-client    
#ARM 平台   
GOOS=linux GOARCH=arm  make release-client

9)执行完之后 /usr/local/ngrok/bin 会自动生成两个文件
a、windows_amd64 -> ngrok.exe(将其下载下来,本地PC需要其建立映射通道)
b、ngrokd (启动ngrok服务执行程序)
10)启动服务端

cd /usr/local/ngrok/bin
#执行命令 注意 开放端口 80 443 4443 域名和证书保持一致
ngrokd -domain="ngrok.yxt.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

成功输出日志

-domain 域名和证书保持一致
-httpAddr http端口
-httpsAddr https 端口
-tunnerlAddr 客户端ngrok.exe连接端口

服务器后台保持运行

cd /usr/local/ngrok/bin
#执行命令 注意 开放端口 80 443 4443 域名和证书保持一致
nohup ngrokd -domain="ngrok.yxt.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &

本地PC电脑接入
将/usr/local/ngrok/bin下的windows_adm64下的 ngrok.exe 下载到PC电脑上,并创建ngrok.cfg文件和start.bat文件

配置连接信息
a、修改ngrok.cfg

server_addr: "ngrok.yxt.top:4443" 
trust_host_root_certs: false

b、修改start.bat

ngrok -config ngrok.cfg -subdomain yangdouya 127.0.0.1:8080

点击start.bat开启连接 连接失败

服务器日志抛出异常 因为我们使用的是自己创建的安全证书,计算机会认为是不安全 导致连接失败
remote error: tls: bad certificate

这里要先修改ngrok的文件 默认配置文件域名和我们使用域名不一样

#修改配置文件
cd /usr/local/ngrok/ngrok/src/ngrok/client
#修改参数
vi ./model.go

解决办法 使用正式签名证书 这里我是使用免费的证书 (Let’s encrypt免费证书)
配置方法为:
a、使用Let’s encrypt生成的证书有以下的pem
cert.pem
chain.pem
fullchain.pem
privkey.pem
将这些pem证书文件上传到服务器后进行操作:
a、privkey.pem重命名为snakeoil.key,fullchain.pem的重命名为snakeoil.crt ,生成的snakeoil.crt 复制命名为 ngrokroot.crt

cp ./privkey.pem ./snakeoil.key
cp ./fullchain.pem snakeoil.crt
cp ./snakeoil.crt ./ngrokroot.crt

b、复制并且覆盖掉ngrok现有证书 提示后 按 y 确认覆盖

cp ./ngrokroot.crt /usr/local/ngrok/assets/client/tls/ngrokroot.crt
cp ./snakeoil.crt /usr/local/ngrok/assets/server/tls/snakeoil.crt
cp ./snakeoil.key /usr/local/ngrok/assets/server/tls/snakeoil.key

重新编译生成服务端和客户端

cd /usr/local/ngrok/
#编译生成服务端
GOOS=linux GOARCH=amd64 make release-server
#编译生成客户端
GOOS=windows GOARCH=amd64 make release-client

开启服务端

cd /usr/local/ngrok/bin
#执行命令 注意 开放端口 80 443 4443 域名和证书保持一致
nohup ngrokd -domain="ngrok.yxt.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &

使用ngrok客户端进行连接即可

搭建遇到很多坑,欢迎大家一起讨论

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号