受欢迎的博客标签

内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】--ngrok

Published

内网穿透服务器ngrok网上有现成的ngrok服务器,如下:

ngrok官网:https://ngrok.com/

国外版,自定义二级域名功能已收费.

sunny-ngrok:https://www.ngrok.cc/ 

国内版,只需要绑定隧道id即可使用,网速较快。

ittun-ngrok:https://www.ittun.com/

小米球Ngrok:http://ngrok.ciqiuwl.cn/

自建国内免费Ngrok服务器,免费共享使用, 支持一键启动和https.

 

但是世界上没有免费的午餐,要不就是收费,要不就是免费但是偶尔会出现连接失败的问题(当然大多数时间是没有问题的)。

正在测试微信的某些功能,但是正在使用的ittun-ngrok连接失败了。导致测试无法进行,最终萌生出自己搭建一个ngrok服务器的想法。

1、必要条件

(1)服务器,用来搭建ngrok的服务器,必须有公网ip,并且可以正常访问(本次测试使用的是Ubuntu 16.04 64位)。
(2)域名,用来生成访问域名。

2、安装git 和Golang

Golang,Go语言支持,因为Ngrok是基于Go语言编写的,安装git 和Golang.

apt-get install build-essential golang mercurial git

3、编译ngrok

下载源码,当然也可以不安装git,但是需要手动上传代码到需要的位置。

cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.xiaomiqiu.cn"(*此处改为你自己的域名即可)
cd ngrok

4、为域名生成自签名证书

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

5、编译服务端

cd /usr/local/go/src
GOOS=linux GOARCH=amd64 ./make.bash
cd /usr/local/ngrok/
GOOS=linux GOARCH=amd64 make release-server

编译成功后会在bin目录下找到ngrokd和ngrok这两个文件。其中ngrokd 就是服务端程序了。

6、编译客户端

6.1 适用于mac os 64位操作系统

cd /usr/local/go/src
GOOS=darwin GOARCH=amd64 ./make.bash
cd /usr/local/ngrok/
GOOS=darwin GOARCH=amd64 make release-client

6.2 Windows的客户端编译

cd /usr/local/go/src
GOOS=windows GOARCH=amd64 ./make.bash
cd /usr/local/ngrok/
GOOS=windows GOARCH=amd64 make release-client

7、启动服务端

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"

httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出现端口号,因此这个使用了80、443端口。

8、本地客户端

(1)配置文件ngrok.cfg

server_addr: "weixin.yangjiace.xyz:4443"  
trust_host_root_certs: false 

(2)启动脚本startup.bat

@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080
其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为端口号。