ngrok 有更新!

  |   0 评论   |   1,285 浏览

一、编译服务端客户端

1. git安装

搭建环境:阿里云Centos6.5

更新Git、及其它依赖(高于1.7即可)

[root@slave1 ~]# yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

Loaded plugins: fastestmirror, refresh-packagekit, security

Determining fastest mirrors

base                                                                                                           | 3.7 kB     00:00     

extras                 

 

 

go没有安装成功,另外安装配置

2. 安装go

官网下载go安装包,解压到/usr/local

[root@slave1 boom]# rz

rz waiting to receive.

 zmodem trl+C ȡ

 

  100%  101804 KB 16967 KB/s 00:00:06       0 Errors.gz...

 

[root@slave1 boom]# ll

总用量 198208

-rw-r--r--. 1 root root 104247844 1月   7 02:11 go1.9.2.linux-amd64.tar.gz

-rw-r--r--. 1 root root  35197662 5月  11 2017 kafka_2.10-0.10.1.1.tgz

drwxr-xr-x. 7 root root      4096 1月   9 15:25 ngrok

-rw-r--r--. 1 root root  28460530 5月  11 2017 scala-2.11.7.tgz

-rw-r--r--. 1 root root  35042811 5月   9 2017 zookeeper-3.4.10.tar.gz   

[root@slave1 boom]# tar -C /usr/local/ -zxf go1.9.2.linux-amd64.tar.gz   

[root@slave1 boom]# ll /usr/local/go/

总用量 176

drwxr-xr-x.  2 root root  4096 10月 26 02:34 api

 

 

3. 配置环境变量

[root@slave1 boom]# vi /etc/profile

# /etc/profile

 

# System wide environment and startup programs, for login setup

# Functions and aliases go in /         

...

 

unset i

unset -f pathmunge

export JAVA_HOME=/usr/program/jdk

export HADOOP_HOME=/usr/program/hadoop

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

export PATH=$PATH:/usr/program/scala/bin

export SPARK_HOME=/usr/program/spark202

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin

"/etc/profile" 85L, 2091C written

[root@slave1 boom]# source /etc/profile

[root@slave1 boom]# go

Go is a tool for managing Go source code.

 

Usage:

 

 

4. 下载ngrok

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

[root@slave1 boom]# git clone https://github.com/inconshreveable/ngrok.git

Initialized empty Git repository in /root/boom/ngrok/.git/

remote: Counting objects: 2732, done.

 

5. 生成自签名证书

在生成证书时需要一个解析到服务器上的主域名,以"line.jbomo.com"为例:

cd ngrok

NGROK_DOMAIN="line.jbomo.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 device.key 2048

openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

 

[root@slave1 ngrok]# ll ./assets/client/tls/

总用量 8

-rw-r--r--. 1 root root 1521 1月   9 15:20 ngrokroot.crt

-rw-r--r--. 1 root root 1822 1月   9 15:20 snakeoilca.crt

[root@slave1 ngrok]# ll ./assets/server/tls/

总用量 8

-rw-r--r--. 1 root root 1809 1月   9 15:20 snakeoil.crt

-rw-r--r--. 1 root root 3243 1月   9 15:20 snakeoil.key

[root@slave1 ngrok]# NGROK_DOMAIN="line.jbomo.com"         

[root@slave1 ngrok]# openssl genrsa -out rootCA.key 2048

Generating RSA private key, 2048 bit long modulus

........................................+++

..+++

e is 65537 (0x10001)

[root@slave1 ngrok]# openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem

[root@slave1 ngrok]# openssl genrsa -out device.key 2048

Generating RSA private key, 2048 bit long modulus

.+++

......+++

e is 65537 (0x10001)

[root@slave1 ngrok]# openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

[root@slave1 ngrok]# openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

Signature ok

subject=/CN=line.jbomo.com

Getting CA Private Key

将新生成的证书,替换掉assets/client/tls下的证书

[root@slave1 ngrok]# cp rootCA.pem assets/client/tls/ngrokroot.crt

cp:是否覆盖"assets/client/tls/ngrokroot.crt"? y

[root@slave1 ngrok]# cp device.crt assets/server/tls/snakeoil.crt

cp:是否覆盖"assets/server/tls/snakeoil.crt"? y

[root@slave1 ngrok]# cp device.key assets/server/tls/snakeoil.key

cp:是否覆盖"assets/server/tls/snakeoil.key"? y

 

6. 编译服务端

cd到ngrok目录

//指定环境变量位64位linux版本

GOOS=linux GOARCH=amd64 make release-server

#如果是32位系统,这里 GOARCH=386,如果是windows指定GOOS=windows

[root@slave1 boom]# cd /root/boom/ngrok/

[root@slave1 ngrok]# GOOS=windows GOARCH=amd64 make release-server

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

 

如果报错:-bash: make: command not found

因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接yum安装即可:yum -y install gcc automake autoconf libtool make

正常情况下,在ngrok/bin/下会有ngrokd文件,这就是我们的服务端了。

 

7. 编译客户端

cd到ngrok目录

1)若是客户端使用与服务器相同系统可直接使用 make release-client指令。

2)若是不同系统,则需要通过go中的make.bash手工编译出跨编译工具。

$GOROOT/src目录下找到make.bash文件,通过设置GOOS和GOARCH来完成生成跨编译工具:

#linux

make release-client

#windows

GOOS=windows GOARCH=amd64 make release-client

#mac

GOOS=darwin GOARCH=amd64 make release-client

正常情况下,在cd bin/windows_amd64/下,有刚生成的ngrok.exe,下载到windows备用。

 

[root@master ngrok]# GOOS=windows GOARCH=amd64 make release-client

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/...

go install -tags 'release' ngrok/main/ngrok

[root@master ngrok]# 

 

8. 部署服务端

拷贝ngrokd.exe,上述生成的snakeoil.crt,snakeoil.key三个文件。新建一个bat启动文件。

 

bat内容如下:

ngrokd.exe -tlsKey="snakeoil.key" -tlsCrt="snakeoil.crt" -domain="line.jbomo.com" -httpAddr=":801" -httpsAddr=":802"

9. 部署客户端

拷贝ngrok.exe即可,新建ngrok.cfg,配置代理信息

 

server_addr: "line.jbomo.com:4443"

trust_host_root_certs: false

tunnels:

  http:

    subdomain: "ddwww"

    proto:

      http: "8081"

client.bat:

ngrok.exe -config ngrok.cfg start http

运行成功如下:

 

 

其它配置参考:

windows_amd64目录下新建一个ngrok.cfg文件,内容如下:

server_addr: "uboff.com:8083"

trust_host_root_certs: false

tunnels:

  http:

    subdomain: "www"

    proto:

      http: "8090"

      

  https:

    subdomain: "www"

    proto:

      https: "8091"

 

  ssh:

    remote_port: 2222

    proto:

      tcp: "22"

然后就可以启动客户端,我已经把windows_amd64文件夹下载到D盘下,打开CMD输入:

D:

cd D:\windows_amd64

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

看到下面信息则启动成功:

Tunnel Status                 online

Version                       1.7/1.7

Forwarding                    http://www.uboff.com:8081 -> 127.0.0.1:8090

Forwarding                    https://www.uboff.com:8082 -> 127.0.0.1:8091

Forwarding                    tcp://uboff.com:2222 -> 127.0.0.1:22

Web Interface                 127.0.0.1:4040

# Conn                        0

Avg Conn Time                 0.00ms

 

 

学习资料:

http://blog.csdn.net/u010887744/article/details/53957683

https://ubock.com/article/31

http://blog.csdn.net/uselym/article/details/49978813

http://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referral

http://blog.csdn.net/shikewei0103/article/details/41284751

 

评论

发表评论

validate