ngrok 有更新!
一、编译服务端客户端
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
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