CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

时间:2022-09-17 15:47:01

内网服务器穿透的服务器搭建,ngrok服务器搭建起来,还是比较费事的,因为坑还是不少的,1、go的版本问题,2、bin/go-bindata:命令未找到,3、没有公网ip,也可以通过修改hosts的方式进行实验。

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

下载地址

##官方地址
https://github.com/inconshreveable/ngrok

##俺的七牛下载地址
http://yellowcong.qiniudn.com/ngrok-master.zip

安装准备

1、Centos之Go语言安装-yellowcong ,我当时装的是1.7的版本,但是执行编译,还是需要配置go1.4的版本
2、编译依赖安装

yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++

3、Git安装

#由于使用go进行编译的时候,会从github下载代码的
yum intall -y git

配置go 1.4

#安装依赖包,编译1.4所需要的
yum install gcc glibc-devel

#下载1.4.的安装包
tar -zxvf go1.4.2.linux-amd64.tar.gz

#建立文件夹
mkdir -p /root/go1.4

tar -zxvf 

#到1.4的src目录
cd /root/go1.4/go/src

#编译
./all.bash      // 也可简单运行 './make.bash'

#拷贝go目录到 go1.4
cp -rf  go /root/go1.4

root的目录结构,注意go1.4目录下面,直接就是编译好的文件了
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

解压、配置务器端

#下载安装包
wget http://yellowcong.qiniudn.com/ngrok-master.zip

#解压安装包
unzip ngrok-master.zip -d ngrok

#指定域名
export NGROK_DOMAIN="yellowcong.com"

#查看设定的域名
echo $NGROK_DOMAIN

#给域名yellowcong.com 生成证书(在哪个目录运行的命令,就会在哪个目录生成证书)
openssl genrsa -out rootCA.key 2048 
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem openssl genrsa -out server.key 2048 
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr 
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000

#拷贝证书到ngrok加压目录的assets
#/usr/local/ngrok/server/ngrok/assets
cp rootCA.pem assets/client/tls/ngrokroot.crt 
cp server.crt assets/server/tls/snakeoil.crt 
cp server.key assets/server/tls/snakeoil.key

#修改logger.go 配置文件
vim src/ngrok/log/logger.go
log "github.com/keepeye/log4go"

生成的证书
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

证书拷贝的目录地址
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

修改logger,人家说是国内服务器,必须修改,反正无所谓,修改呗
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

编译服务端

#查看go语言的环境
go env

#进入到go语言的src目录下,就是自己的go语言目录,是1.7的那个
cd /usr/local/go/go/src

#linux64位, 这个是在go的src目录下
GOOS=linux GOARCH=amd64 ./make.bash

#到ngrok的服务器目录下
cd /usr/local/ngrok/server/ngrok

#拷贝go-bindata 文件,如果不拷贝,就会导致找不到go-bindata包
mkdir bin
cp -rf  /usr/local/go/go/bin/go-bindata /usr/local/ngrok/server/ngrok/bin/

#编译
GOOS=linux GOARCH=amd64 make release-server

#win服务端 386(32) amd64(64) 
#GOOS=windows GOARCH=amd64 make release-server 

#到go的bin目录下,查看是否编译成功
cd $GOBIN

#启动服务端
ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"

查看go语言的安装环境
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

go语言的src目录,进行编译1.7的go语言
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

编译ngrok服务端,编译完成后,编译文件在$GOBIN目录下
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

$GOBIN目录下有一个ngrokd这个玩意,就是我们的服务器端了
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

启动服务
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

客户端编译

#到ngrok的服务器目录下
cd /usr/local/ngrok/server/ngrok

#编译64位客户端(前提是拷贝了go-bindata 文件)
GOOS=linux GOARCH=amd64 make release-client

#编译好的文件,存在于go的bin目录
cd $GOBIN

#创建一个配置文件ngrok.cfg,内容如下:
vim ngrok.cfg
#4443是ngrok的服务端口
#yellowcong.com 是服务器所在地址
server_addr: "yellowcong.com:4443"
trust_host_root_certs: false

#执行ngrok:
#xxxx 表示ide是xx.yellowcong.com
#confgi 配置文件
#80 表示端口号
ngrok -subdomain solr -config=ngrok.cfg 8080

#下面你是连接情况
Tunnel Status                 reconnecting
Version                       1.7/
Web Interface                 127.0.0.1:4040
# Conn 0
Avg Conn Time                 0.00ms

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

启动成功后
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

访问地址
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

通过ip来访问
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

在演示过程中,我没有公网ip

由于我没有公网ip,但是又要做实验,所以弄了一个修改hosts的方式来做

window的hosts文件修改

我修改了windows的etc的hosts文件

C:\Windows\System32\drivers\etc\hosts

#添加域名解析
192.168.66.100  yellowcong.com
192.168.66.100  solr.yellowcong.com

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

linux修改 /etc/hosts

vim  /etc/hosts
192.168.66.100 yellowcong.com

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

错误集合

1、make: * 没有规则可以创建目标“release-server”。 停止。

这个问题是目录应该是go语言的src目录,所以不要弄错了
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

2、Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.

这个问题是由于需要安装1.4版本的,然后再安装高版本的,低版本的是C语言写的

##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find /root/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4. 

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

解决办法

#安装依赖包,编译1.4所需要的
yum install gcc glibc-devel

#下载1.4.的安装包
tar -zxvf go1.4.2.linux-amd64.tar.gz

#建立文件夹
mkdir -p /root/go1.4

tar -zxvf 

#到1.4的src目录
cd /root/go1.4/go/src

#编译
./all.bash      // 也可简单运行 './make.bash'

#拷贝
cp -rf  go /root/go1.4

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

root的目录结构,注意go1.4目录下面,直接就是编译好的文件了
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

3、bin/go-bindata:命令未找到

我的go的bin目录绝对有go-bindata 这个玩意,但是就是识别不到,解决办法是,拷贝go语言的go-bindata到ngrok的bin目录下

#创建目录
mkdir bin

#拷贝go-bindata 文件
cp -rf  /usr/local/go/go/bin/go-bindata /usr/local/ngrok/server/ngrok/bin/

CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

创建bin目录,并拷贝go-bindata
CentOs之搭建自己的内网穿透服务器(Ngrok)-yellowcong

参考文章

http://blog.csdn.net/gebitan505/article/details/48176763
http://www.sunnyos.com/article-show-48.html