阿里云搭建ngrok实现内网穿透

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34292044/article/details/78559128

内网穿透想必是开发微信的同志所必须的,大部分人首先想到的是去网上找各种现成的吧,比如sunny-ngrok或者向日葵之类的,但是世界上没有免费的午餐,免费的都是会崩的!!!下面我就来教大家怎么用阿里云和ngrok搭建一个内网穿透!!!!

1.准备工作:

要能实现内网穿透,你必须得有个域名,然后还有个服务器!!两者缺一不可

2.添加dns解析:

到你的阿里云服务器里边添加个dns解析,如下:

这样解析就添加好了,接下来就是服务器的设置了!

2.服务器配置ngrok:

按照下边的命令一步一步敲

 

Step1:安装git 和Golang

 

Git是啥,是干什么用的,在此我就不过多阐述了!

# sudo apt-get install build-essential golang mercurial git

Golang,Go语言支持,因为Ngrok是基于Go语言编写的

这里我都已经安装了,没有安装的按照提示安装即可

Step2:获取 ngrok 源码

此处使用非官方地址,修复了部分包无法获取

# git clone https://github.com/tutumcloud/ngrok.git ngrok

# cd ngrok

Step3:生成自签名证书

使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。

证书生成过程需要一个NGROK_BASE_DOMAIN。 以ngrok官方随机生成的地址693c358d.ngrok.com为例,其NGROK_BASE_DOMAIN就是“ngrok.com”,如果你要 提供服务的地址为“example.ngrok.xxx.com”,那NGROK_BASE_DOMAIN就应该 是“ngrok.xxx.com”。这里呢,我替换成自己的域名 “ngrok.mdzz2333.cn”
这个地方大家也要提前准备好自己的域名,没有多余域名的同学呢,就可以给自己的域名添加一个二级域名来解决.

*注意:下述指令中的域名要换成大家自己的哦,不然就绑定到我的域名上去了~

$ cd ngrok

 NGROK_DOMAIN="ngrok.mdzz2333.cn"

 openssl genrsa -out base.key 2048

 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt

执行完后

替换:

 cp base.pem assets/client/tls/ngrokroot.crt

Step4:编译

 sudo make release-server release-client

这一步骤等待时间较长,成功编译后,会在bin目录下找到ngrokd和ngrok这两个文件。

Step5:启动服务端

前面生成的 ngrokd 就是服务端程序了,指定证书、域名和端口启动它(证书就是前面生成的,注意修改域名):

# sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.mdzz2333.cn" -httpAddr=":8081" -httpsAddr=":8082"

到这一步,ngrok 服务已经跑起来了,可以通过屏幕上显示的日志查看更多信息。httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=":xxx" 指定),如果你配置了 iptables 规则,需要放行这三个端口上的 TCP 协议。

现在,通过 http://ngrok.mdzz2333.cn:8081 和 http://ngrok.mdzz2333.cn:8082 (大家要访问自己的域名哦) 就可以访问到 ngrok 提供的转发服务。为了使用方便,建议把域名泛解析到 VPS 上,这样能方便地使用不同子域转发不同的本地服务。

访问后看到提示:

Tunnel pub.imququ.com:8081 not found

这说明万事俱备,只差客户端来连了。

下面的这一句是编译windows客户端和mac客户端的!!!

 

GOOS=windows GOARCH=amd64 make release-client

 

GOOS=darwin GOARCH=amd64 make release-client

 

到bin目录下有个windows的文件夹打开文件夹把exe文件传到你的windows机器上:

 

然后在同级目录下新建一个配置文件ngrok.cfg:

 

server_addr: "zzhmmd.huahuayu.com.cn:4443"
trust_host_root_certs: false

最后打开cmd运行ngrok客户端监听8080端口:

ngrok.exe -config=ngrok.cfg -log=ngrok.log -subdomain=test 8080

 

这样就基本可以连上了来写微信用的那么你的命令得改下了,因为微信的配置的服务器里边是不能有端口的:

 

# sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.mdzz2333.cn" -httpAddr=":80" -httpsAddr=":443"

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页