ngrok的https等多隧道搭建及使用(菜鸟篇)

文章来源: https://studygolang.com/articles/16702, 本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

概述: 内网穿透,可以做到别人在异地访问你本地的服务。如果你需要调试微信程序可以用到本方法,或者你负担不起云 服务器 高配置的价格,这里有个方案:自己准备一台电脑再另购一个低配的云服务器,还需要一个域名。目前内网穿透产品有花生壳、Nat123、frp,ngrok等等,本人不对这些产品做比较,今天只基于ngrok,介绍它的环境搭建、服务端配置以及客户端的http,https,远程登录等多隧道配置。

1 环境搭建

  1.1 本文所使用的环境

顶级域名,一台旧的电脑(Ubuntu Server 16.04.10版本,没有的话你可以自己安装虚拟机),公网服务器(Ubuntu Server 16.04.10版本),git(2.7.4),go(1.9.2)

  1.2 环境配置

   1.2.1 git的安装

apt-get  install git ,使用命令git --version 如果看到版本号则安装成功。

1.2.2 Go 环境安装

apt-get install golang-1.9, 然后vim /etc/profile,添加环境变量如下:

export GOROOT=/usr/lib/go-1.9

export GOPATH=/data/software/gocode

export PATH=$PATH:$GOROOT/bin

然后source /etc/profile生效后,安装完后使用命令 go version 查看,注意:使用低版本在后面生成证书会出问题。

1.2.3 域名解析配置

ngrok的https等多隧道搭建及使用(菜鸟篇)

把 *.ngrok与ngrok都配置一遍

ngrok的https等多隧道搭建及使用(菜鸟篇)

vim /etc/profile 追加export NGROK_DOMAIN=ngrok.abc.com

abc是你自己的域名地址。

2 编译

2.1 下载源码

切换到你的工作目录,比如我的是/data

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

2.2 生成证书

cd /data/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

然后把证书拷贝到本目录的assets下:

cp rootCA.pem assets/client/tls

cp server.crt assets/server/tls

cp server.key assets/server/tls

2.3 编译

cd /data/ngrok 切换到ngrok目录后,分别执行以下命令

#linux服务端

GOOS=linux GOARCH=386make release-server

#linux客户端

GOOS=linux GOARCH=386make release-client

如果遇到timeout错误,网络问题,多执行几次,编译成功后,在bin/linux_386下会生成两个文件ngrok ngrokd,其中ngrok对应客户端,ngrokd对应服务端。

3 部署

3.1 ngrokd部署到服务端

ngrokd拷贝部署到公网服务器,并把刚刚生成的证书也一并拷贝到你自定义的目录下。

启动ngrokd 执行如下命令

nohup /etc/remote/ngrokd -tlsKey=/etc/remote/server.key -tlsCrt=/etc/remote/server.crt -domain=ngrok.abc.com -httpAddr=:19091 -httpsAddr=:19092 -tunnelAddr=:19094 -log="ngrok.log" &

domain要和前面你所设置的域名保持一直,httpAddr http端口,httpsAddr https端口,tunnelAddr表示和客户端链接的通道端口,默认是4443, 要注意这些端口需要设置开放外部能够访问。

ngrok的https等多隧道搭建及使用(菜鸟篇)

出现上图所示,则说明服务的启动成功

3.2 ngrok部署到客户端

ngrok文件拷贝到你的内网系统中,在同目录下新建ngrok.cfg文件,这里贴上我的配置:

server_addr: ngrok.fengpro.com:19094

trust_host_root_certs: false

tunnels:

http:

proto:

http: 8080

subdomain: api

ssh:

remote_port: 19093

proto:

tcp: 22

client:

subdomain: client

proto:

https: 8443

这里需要注意yaml格式,注意空格缩进。server_addr 后面的域名是你在公网服务器上配置的域名,端口是你ngrokd服务端启动的时候指定的。tunnels是配置隧道协议了,subdomain表示子域名名称,比如你在本地开启了tomcat的8080端口运行,待会客户端启动成功后,在公网可以用http://api.ngrok.fengpro.com:19091 即可访问到你内网的tomcat服务;ssh 这块配置的是远程登录你的内网服务器;如果需要https访问,如client这里,proto指定为https ,在浏览器中输入https://client.ngrok.fengpro.com:19092 即可。

配置好后启动客户端,命令如下:

nohup /data/ngrok/ngrok -config=/data/ngrok/ngrok.cfg -log=stdout start -all &

注意你自己设置的路径,如果配置没问题,启动会显示绿色的online表示成功,快去访问吧!!

参考文章:https://blog.csdn.net/zhangguo5/article/details/77848658?utm_source=5ibc.net&utm_medium=referral


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

为你推荐:

查看所有标签

码农书籍
Python机器学习经典实例

Python机器学习经典实例

[美] Prateek Joshi / 陶俊杰、陈小莉 / 人民邮电出版社 / 2017-8 / 59.00元

在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化。它已经被广泛地应用于不同领域,如搜索引擎、机器人、无人驾驶汽车等。本书首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网络,等等。本书是为想用机器学习算法开发应用程序的Python程序员准备的。它适合Python初学者阅读,不过熟悉Python编程方法对体验示例代码大有裨益。

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具