搭建ngrok内网穿透服务器

  • baagee 发布于 2016-10-13 22:03:19
  • 分类:Linux
  • 1058 人围观
  • 0 人喜欢

一、安装go lang环境

go语言是近期比较火的一个由谷歌推出的语言,是一个轻量级,开发效率很高,执行效率也跟c相近的语言

文档参考地址:http://www.runoob.com/go/go-environment.html

如果直接通过apt-get install golang的话,则安装的一般是比较低的版本,而我们所需要的是高版本。(1.4以上,我安装的是1.7.3)

1、下载编译后的源码包,已包含可执行文件 

wget http://www.golangtc.com/static/go/1.7.3/go1.7.3.linux-amd64.tar.gz

其他不同版本根据下方来匹配(可以到这里下载):

mac: darwin-amd64

ubuntu: linux-amd64

centos: linux-386

2、解压到/usr/local目录下,我看大家都解压到这个目录就跟风(其实这个是规范,也是约定,比较不会造成找不到安装的文件的情况)
tar -C /usr/local -xvf go1.7.3.linux-amd64.tar.gz

3、引入环境变量,即让你可以直接在任何目录下执行go

# 手动执行,只在当次登录有效,我这边只针对当前登录用户
vim /root/.bashrc

# 往上面vim的文件末尾添加这段代码
export PATH=$PATH:/usr/local/go/bin

# 为了立马生效,必须马上执行下面的命令
source /root/.bashrc

4、测试下,有内容就正常了

go version

二、安装git(这个没啥好说的,以安装的跳过)

sudo apt-get install git

三、git clone ngrok源码,编译

  ngrok源码:https://github.com/inconshreveable/ngrok.git

1、进入/usr/local目录

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

2、引入临时的全局环境变量,此次登录有效

# 这个等会编译的时候要用
export GOPATH=/usr/local/ngrok/
# 这个是你自己的域名,可以是二级或三级域名
# 注意,这边ngrok.baagee.top和它的所有子域名都必须指向中转服务器
export NGROK_DOMAIN="ngrok.baagee.top"

3、替换域名证书,NGROK_DOMAIN这个环境变量是我们刚刚设置的。

(1)生成证书

cd /usr/local/ngrok
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

(2)替换证书

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

4、开始生成服务端执行文件

# 自己注意下,不同操作系统“GOARCH”是不一样的参数,上面也有写到了
GOOS=linux GOARCH=amd64 make release-server

成功之后在/usr/local/ngrok/bin目录下会生成一个ngrokd的文件,这就是服务端的启动执行文件了

5、生成客户端可执行文件

mac:

cd /usr/local/ngrok
GOOS=darwin GOARCH=amd64 make release-client

windows:

cd /usr/local/ngrok
GOOS=windows GOARCH=amd64 make release-client

linux:

cd /usr/local/ngrok
GOOS=linux GOARCH=386 make release-client

5、替换掉引用(国内被墙了,没法用)

vim /usr/local/ngrok/src/ngrok/log/logger.go
# 替换掉import中log的引用,记得删除旧的,别注释了,会报错哈哈
log "github.com/keepeye/log4go"

6、调试

启动服务端,这边使用的是80端口。如果需要在后台执行的话,参考nohup命令

# 由于NGROK_DOMAIN是临时的环境变量,所以如果要重复使用的话,这个变量最好保存起来,否则下次登录就失效了。
/usr/local/ngrok/bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"

启动客户端,先设置好配置文件:同目录下创建一个ngrok.cfg

server_addr: "ngrok.baagee.top:4443"
trust_host_root_certs: false

通过配置文件启动,这边的端口代表的是自己本地调试程序启用的端口,一般是8080

./ngrok -config=./ngrok.cfg -subdomain=test 80

四、好了,可以用了。访问以下 test.ngrok.baagee.top


评论

点击图片切换
还没有评论,快来抢沙发吧!