搭建自己的内网穿透服务端-ngrok 有更新!
- 37套精品Java架构师高并发高性能高可用分布式集群电商缓存性能调优设计项目实战视教程 置顶! 有更新!
- 一、编译服务端客户端
- 1. git安装
- 2. 安装go
- 3. 配置环境变量
- 4. 下载ngrok
- 5. 生成自签名证书
- 6. 编译服务端
- 7. 编译客户端
- 8. 部署服务端
- 9. 部署客户端
37套精品Java架构师高并发高性能高可用分布式集群电商缓存性能调优设计项目实战视教程 置顶! 有更新!
一、编译服务端客户端
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
评论
发表评论
|
|