搭建一个 Ngrok 服务器和小伙伴联网打CS

使用 ngrok 来实现“局域网”

CS配置:https://jingyan.baidu.com/article/48b558e32c91b77f38c09aa7.html

此博文只是简单记录一下博主搭建 ngrok 的经历,并不能保证一定成功,毕竟会遇到各种未知情况,仅提供给师兄师弟们参考

自己的服务器,TX的,最垃圾配置,自己的 .me 域名

域名这块有个坑,自己的域名必须是泛解析

服务器系统 CentOS7

1. 安装GCC和依赖包

如果安装过了 可以跳过步骤

sudo yum -y install gcc glibc-devel 

2. 安装Git

如果已安装,跳过

sudo yum -y install git

3. 安装Golang编译环境

这里我遇到一个坑(由于博主是主搞 Java 的所以不太懂 Go),在 1.4 版本后的 Go 环境源码,编译环境也必须是 Go。可能我表达不清楚,反正大概意思就是在1.4版本前,golang环境源码可以使用gcc编译,在1.4版本后,源码要使用 go 编译,自己编译自己源码!当然 1.4 版本后的golang源码也可以使用 gcc 编译,但是如果新 go 环境源码使用 gcc 编译后,go 的特色“编译成其他平台可执行文件”就无法成功了,我不知道说得对不对,反正这坑我搭建的时候是遇上了... 

我只是用 go 编译一下 ngrok 源码,所以安装的是 老版本 go1.4.2 环境

wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
#wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz

解压并且到 go 的 src 目录下执行

#解压
tar -zxvf go1.4.2.linux-amd64.tar.gz

#解压后可以移动到其他地方去
#解压完成后再到 src 目录下执行
./all.bash

配置环境变量

# /usr/local/go1.4 是我解压的目录
export GOROOT=/usr/local/go1.4
export GOBIN=$GOROOT/bin
export GOPATH=/usr/local/gopath
#export GOROOT_BOOTSTARP=/usr/local/go1.4
export PATH=$PATH:$GOPATH:$GOBIN

#变更一下
source ~/.bash_profile

看看是否成功

go version

4. 配置golang多环境编译(交叉编译)

到 go 的 src 目录下执行

GOOS=linux GOARCH=amd64 ./make.bash

GOOS=linux GOARCH=amd64 是我的系统和多少位

不清楚的话使用下面的命令查看

go env

这样执行后是让go编译环境编译出的东西 是在 linux 64位系统上运行的(我猜的  

32位:GOARCH=386

GOOS=linux GOARCH=amd64  
GOOS=darwin GOARCH=amd64 #MACOS
GOOS=windows GOARCH=amd64 #windows 

5. Ngrok 配置

git clone https://github.com/inconshreveable/ngrok.git

生证书,生成完后建议保存到一个位置放着

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj '/CN=你的域名' -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj '/CN=你的域名' -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

我这里跟其他博客的有点不一样,他们都是把域名配置到环境变量里面,我觉得没必要所以没配置

复制并替换到 ngrok 的目录下面的证书

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

使用 go 编译 ngrok 服务端 和 客户端

#在 ngrok 目录下执行
GOOS=linux GOARCH=amd64 make release-server release-client

#编译 windows 客户端
GOOS=windows GOARCH=amd64 make release-client

#可以看看本上面的

编译完成后的东西在 go 的 bin 下面 :ngrokd (服务端)和 ngrok (客户端)

windows 的是 windows_amd64 文件夹下 ngrok.exe

配置并启动服务端(Linux)

./ngrokd -domain="你的域名"  -httpAddr=":1117" -httpsAddr=":1118" -tunnelAddr=":1119"

#后台启动,具体参阅 nohup 命令
#nohup ./bin/ngrokd -domain="qq.cn"  -httpAddr=":1117" -httpsAddr=":1118" -tunnelAddr=":1119" > ~/nohup.out &

启动成功后如图:

配置并启动客户端(windows)

创建一个 ngrok.cfg 文件

server_addr: "你的域名:1119"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "banan"
    proto:
      http: "18080"
      
  https:
    subdomain: "banan"
    proto:
      https: "80"
 
  ssh:
    remote_port: 12222
    proto:
      tcp: "22"

在dos启动

ngrok.exe -log ngrok.log -config ngrok.cfg start http https ssh

Tunnel Status online 表示成功

别人通过http协议访问 “banan.你的域名:1117” 这个地址会自动转到 你本地配置的那个端口

到这里就结束了,本文仅能作为参考,不能保证一定可以成功!(反正我的是配置成功了

如果配置失败可能的情况:

1. go编译环境没有安装正确

2. 没有正确配置go的环境变量,导致使用 make 命令的时候 仍旧是 gcc 的 make

4. go 的交叉编译环境没有配置好,原因可能不是go1.4或1.4+的版本没有使用go1.4编译

3. go是谷歌的,你懂得

注意:go语言版本的 ngrok 1.7 (我现在安装的就是1.7版)有内存泄漏的bug!

我不知道会不会内存泄漏,都是在全球最大的同性交友网站github上看到的,不过本人不建议长期挂起跑,偶尔跑一跑游戏私服和网站调试还是可以滴,现在已经出现有Python稳定版的了,如果长期想跑建议装Python版的,不过我准备有自己写一个 Java 版的 

 

转载于:https://my.oschina.net/medvin/blog/1477062

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值