用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)

作为一个自由开发者,在没有服务器时,有时需要内网穿透进行测试,网上找到的都是不稳定的 还不如自己搭建一个。看了好多资料,自己动手搭建了一个,以下流程最终成功完成。

准备工作:

1.服务器一台(本人用的阿里云主机,Ubuntu 18.04.4,看图)

 

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第1张图片

2.域名一个,做好相关解析工作。

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第2张图片

工具:
1.远程连接工具: putty 。(按照个人习惯选择)

2.下载工具:winscp。

安装:

1.git安装

sudo apt-get update
sudo apt-get install git

git --version  #查看git版本

2、安装GO

由于ngrok是在go的基础上开发的所以先安装go(go语言完全不同 这不重要 安装好就可以)

 

sudo apt-get install golang-go #安装GO

go version    #查看版本

go env  #我们的GO安装完了 检测安装是否安装成功,这两个只要有一个就可以了

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第3张图片

用阿里的服务器,下载速度很快。

3.安装ngrok

我们安装到local目录下

cd /usr/local/

git clone https://github.com/inconshreveable/ngrok.git #这个地址可以git下载 再传上去 也可以fock到自己项目里

配置 ngrok的环境变量。

export GOPATH=/usr/local/ngrok/  
 

export NGROK_DOMAIN="abc.net" #这里写你自己的域名,不要前缀,比如www.abc.net 填写abc.net 

 
4.生成ngrok证书并覆盖原有的证书

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 


以上这个命令是拷来的,照着做就是了, 就是生成证书的。

在安装 openssl 证书时可能会报错

Can't load /root/.rnd into RNG
error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
解决办法如下:

cd /root
openssl rand -writerand .rnd

接下来覆盖证书 以下命令分着打 打完每一个 会让你确定 按 y 就可以

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


到此 安装配置结束

 

生成服务端


进入ngrok的目录

cd /usr/local/ngrok/  

执行生成服务端 其中amd64代表64位的linux系统,如果是32位的 改为:GOARCH=386 ,因为我用的是UBUNTU,所以用linux.

GOOS=linux GOARCH=amd64 make release-server

生成成功后 会在ngrok的bin下有一个ngrokd文件夹 即代表成功

生成客户端,操作和服务端一样 

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


会在ngrok的bin下有一个windows_amd64文件夹 即代表成功

下面是不同系统生成不同客户端的版本 替换GOODS 和GOARCH的值即可

#Linux 平台 32 位系统:GOOS=linux GOARCH=386
#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
#Windows 平台 32 位系统:GOOS=windows GOARCH=386
#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
#MAC 平台 32 位系统:GOOS=darwin GOARCH=386
#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
#ARM 平台:GOOS=linux GOARCH=arm


服务端的启动


在ngrock下执行

 hoZ:/usr/local/ngrok# ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.net" -httpAddr=":80" -httpsAddr=":8080" -tunnelAddr=":443"
参数说明:
#-domain 访问ngrok是所设置的服务地址生成证书时那个
#-httpAddr http协议端口 默认为80
#-httpsAddr https协议端口 默认为443 
#-tunnelAddr 通道端口 默认4443

 

一定要注意 domain ,这个域名就是之前你定义的环境变量的域名 千万不要错。

 

启动成功显示:

可以看出 监听80端口,8080端口,443 端口  并且30秒执行一次监听 ,启动成功。

 

客户端的启动

用winscp将生成的windows_amd64下载到本地

里面只有一个ngrok.exe程序

同目录下新建ngrok.cfg文件 文件类型可自定义 但是执行时注意一致

ngrok.cfg内容

server_addr: "abc.net:443"
trust_host_root_certs: false

server_addr: "abc.net:443" 其中 abc.net还是你自己设置的那个域名 443是服务区启动时的监听端口 保持一致 。

cmd到windows_amd64根目录下

执行以下命令

 .\ngrok.exe -config ngrok.cfg -subdomain aq 80

#参数说明
-config ngrok.cfg 刚才新建的文件 
-subdomain aq:aq为穿透的域名前缀 
80:穿透的域名映射端口

 
看到以下信息代表成功,访问分配的域名aq.abc.net即可。

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第4张图片

登录图形界面,项目启动后 访问127.0.0.1:4040或者localhost:4040,可以看到连接情况。

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第5张图片

 

注意事项
服务端 启动成功 客户端连不上:

有可能是服务器端口没有开放,443 4443 8080 等 都开放一下

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第6张图片

用阿里云完整搭建内网穿透ngrok服务器详细教程(完整图文)_第7张图片

开放服务器的入站规则,设置好就好了。

到目前为止,私有的NGROK就配置好了,可以自由的在本机测试了。

 

你可能感兴趣的:(笔记)