ngrok内网穿透服务器搭建

ngrok内网穿透服务器搭建
1、安装golang
我安装为go1.18版本,下载安装包,直接在/usr/local/下面解压
go1.18.linux-amd64
在这里插入图片描述
如果找到命令则配置系统变量:
vim /etc/profile
// 添加
export GOROOT=/usr/local/go
export PATH= P A T H : PATH: PATH:GOROOT/bin
重新加载环境变量
source /etc/profile

2、安装服务端
这里需要下载源码,编译出服务端和客户端。
下载源码
git clone https://github.com.inconshreveable/ngrok.git

证书需要SANs版本因为用的go1.18版本的,所以有能力就第三方编译证书,没能力自行编译(https://letsencrypt.org/zh-cn/docs/)这个网址可以为自行编译提供帮助,我们公司是由阿里编译。

编译后的证书,放到服务器(证书文件,链证书,秘钥)希望你能分的清楚分不清楚请自行百度。拷贝过去时会提示是否覆盖,直接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 (秘钥)

返回ngrok目录生成服务端和客户端(温馨提示,编译异常慢,也可能出现超时失败。解决方法,把需要编译的包从gihub上直接拉下来上传到服务器)
#linux服务端
GOOS=linux GOARCH=386 make release-server (32位)
GOOS=linux GOARCH=amd64 make release-server(64位)
#linux客户端
GOOS=linux GOARCH=386 make release-client (32位)
GOOS=linux GOARCH=amd64 make release-client(64位)

#Mac OS服务端
GOOS=darwin GOARCH=386 make release-server
GOOS=darwin GOARCH=amd64 make release-server
#Mac OS客户端
GOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client

#windows服务端
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=amd64 make release-server
#windows客户端
GOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client

编译成功提示(下面有对应包的地址已经服务器上需要放在哪里,请仔细看)编译完以后会在ngrok的目录下生成bin目录,所有的文件都在bin目录下生成
GOOS=“” GOARCH=“” go get github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=release
-debug=false
-o=src/ngrok/client/assets/assets_release.go
assets/client/…
bin/go-bindata -nomemcopy -pkg=assets -tags=release
-debug=false
-o=src/ngrok/server/assets/assets_release.go
assets/server/…
go get -tags ‘release’ -d -v ngrok/…
github.com/inconshreveable/mousetrap (download)
github.com/rcrowley/go-metrics (download)
Fetching https://gopkg.in/inconshreveable/go-update.v0?go-get=1
Parsing meta tags from https://gopkg.in/inconshreveable/go-update.v0?go-get=1 (status code 200)
get “gopkg.in/inconshreveable/go-update.v0”: found meta tag main.metaImport{Prefix:“gopkg.in/inconshreveable/go-update.v0”, VCS:“git”, RepoRoot:“https://gopkg.in/inconshreveable/go-update.v0”} at https://gopkg.in/inconshreveable/go-update.v0?go-get=1
gopkg.in/inconshreveable/go-update.v0 (download)
github.com/kardianos/osext (download)
github.com/kr/binarydist (download)
Fetching https://gopkg.in/inconshreveable/go-update.v0/check?go-get=1
Parsing meta tags from https://gopkg.in/inconshreveable/go-update.v0/check?go-get=1 (status code 200)
get “gopkg.in/inconshreveable/go-update.v0/check”: found meta tag main.metaImport{Prefix:“gopkg.in/inconshreveable/go-update.v0”, VCS:“git”, RepoRoot:“https://gopkg.in/inconshreveable/go-update.v0”} at https://gopkg.in/inconshreveable/go-update.v0/check?go-get=1
get “gopkg.in/inconshreveable/go-update.v0/check”: verifying non-authoritative meta tag
Fetching https://gopkg.in/inconshreveable/go-update.v0?go-get=1
Parsing meta tags from https://gopkg.in/inconshreveable/go-update.v0?go-get=1 (status code 200)
Fetching https://gopkg.in/yaml.v1?go-get=1
Parsing meta tags from https://gopkg.in/yaml.v1?go-get=1 (status code 200)
get “gopkg.in/yaml.v1”: found meta tag main.metaImport{Prefix:“gopkg.in/yaml.v1”, VCS:“git”, RepoRoot:“https://gopkg.in/yaml.v1”} at https://gopkg.in/yaml.v1?go-get=1
gopkg.in/yaml.v1 (download)
github.com/inconshreveable/go-vhost (download)
github.com/alecthomas/log4go (download)
github.com/nsf/termbox-go (download)
github.com/mattn/go-runewidth (download)
github.com/gorilla/websocket (download)
go install -tags ‘release’ ngrok/main/ngrokd

3、写一个服务端启动文件
vim startup.sh
#进入后增加如下内容
sudo ./bin/ngrokd -domain=“xxx.com(你的域名)” -httpAddr=“:80” -httpsAddr=“:443”
端口设置:
-httpAddr=“:80” http服务的访问端口 默认80
-httpsAddr=“:443” https服务的访问端口 默认443
-tunnelAddr=“:4443” 客户端连接服务端的端口 默认4443
启动成功提示
[INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[20:56:55 CST 2018/10/29] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80
[20:56:55 CST 2018/10/29] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[20:56:55 CST 2018/10/29] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
[20:56:55 CST 2018/10/29] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

4、启动客户端
在本地创建 ngrok 文件夹,将生成出来的 exe 文件复制到该文件夹
并在同级下创建 ngrok.cfg 文件加入下面这段代码
server_addr: “xxx.com(你的域名):4443”
trust_host_root_certs: false
启动命令
./ngrok -config=ngrok.cfg -subdomain wx 80
# wx为访问的二级域名,比如访问wx.ngrok.xxx.com时就会映射到我们本地 80是本地端口
在这里插入图片描述
安装使用后可能出现的问题
1、客户端连接服务端提示对方主机拒绝访问。原因是你的服务端没有起来,可以查看端口是否已经启动。该服务要一直运行的不像其他服务启动就行,需要在终端一直跑,但是可以选择后台运行。
2、客户端连接日志报错证书需要SANs这个是因为你用的go是1.15以上的版本,所以老的证书不能用,需要你重新编译新的证书或者有能力申请一下新证书。

这些是我在使用的时候出现问题,其他常见问题可以参考其他博主提供的解决方案。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值