文档章节

ubuntu 18.04搭建ngrok内网穿透服务

雨中伊
 雨中伊
发布于 08/26 10:59
字数 827
阅读 17
收藏 0

 从公网访问内网部署的服务。大概步骤也比较简单(6步):

  1. 在阿里云控制台,开放需要的端口;
  2. 阿里云控制台域名解析到服务器IP上;
  3. 在公网主机上(我用的阿里云)部署ngrok源码;
  4. 生成证书;
  5. 编译生成主机服务(最终生成二进制文件ngrokd,启动跑在公网主机上);
  6. 编译生成客户端服务(最终生成二进制文件ngrok,要从公网主机复制到内网真正提供服务的主机上,并启动)。ngrok服务器,实现内网穿透的本质,就是部署在公网端的ngrokd服务和部署在客户端的ngrok服务相互通信转发指令和数据。 我的公网服务器端和客户端都是Ubuntu系统,以下有公网IP域名的称为服务端,内网称为客户端

预备配置

详细部署过程: 登录自己的阿里云Ubuntu控制台,在本机实例的服务端安全组规则里,开放自己需要的端口

将自己的域名解析到服务器IP,配置子域名

下载最新版本的go lang 完成安装,我的在/usr/local下

tar解压,tar -zxvf go1.12.9.linux-amd64.tar.gz 我用的是root,配置root的环境变量,vim .bashrc

最后一行添加

 export GOROOT=/usr/local/go #当前自己的golang所在位置
 export PATH=$PATH:/usr/local/go/bin::$GOROOT/bin 

golang 安装成功,环境配置好,之后开始安装

服务端

克隆源码

$ cd /usr/local
$ git clone https://github.com/inconshreveable/ngrok.git

引入环境变量

    $ export GOPATH=/usr/local/ngrok/    #目录位置
    $ export NGROK_DOMAIN="ngrok.yourset.com"   #你的ngrok服务二级域名

根据自己的域名生成证书

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=yourset.com" -days 5000 -out rootCA.pem 
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=yourset.com" -out device.csr 
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

替换成自己的证书

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

编译ngrokd(服务端)和ngrok(客户端)

make release-server
make release-client

成功后再/usr/local/ngrok/bin目录下生成Ubuntu的服务端和客户端

启动服务端

ngrokd -domain="yourset.com" -httpAddr=":8082" -httpsAddr=":443" > log.out &

启动成功日志

浏览器打开IP:8082显示

启动成功,通过ftp下载bin下面的ngrok文件,在客户端机器上,新建文件夹ngrok_client,上传ngrok文件到该文件夹

客户端

进入ngrok_client文件夹,新建ngrok.cfg,写入

server_addr: "yourset.com:4443"
trust_host_root_cert: false

在内网上启动客户端

./ngrok -subdomain gitlab -proto=http -config=ngrok.cfg 80 
# ngrok.cfg就是制定配置文件
# -subdomain是子域名,这里取gitlab,那么在浏览器访问时打入gitlab.xxxx.com:8082,80是真正提供服务的端口根据自己的服务定

后台启动,不占用当前shell


nohup ./ngrok -subdomain gitlab -proto=http -config=ngrok.cfg  -log=stdout 80 &

客户端连接成功页面

穿透成功

© 著作权归作者所有

雨中伊
粉丝 0
博文 19
码字总数 7038
作品 0
西安
私信 提问
ngrok服务安装笔记

ngrok目前只开源1.x版本,最新的是1.7,使用下来发现比花生壳内网版要稳定和好用得多,重要的是ngrok支持mac和Linux平台,很是好用。先前参考JerryQu的博文搭建 ngrok 服务实现内网穿透进行部...

侠云
2015/10/22
0
0
内网穿透神器:Ngrok在支付中的正确使用姿势

前言 随着互联网的发展,无论是web服务还是移动APP越来越多的都集成了第三方支付(支付宝、微信、银联)。通常作为服务提供方,支付成功以后都会有一个后端回调URL来通知是否调用者是否支付成功...

小柒2012
2018/06/06
0
0
CentOS7搭建ngrok服务器

CentOS7搭建ngrok服务器 会飞的污熊2017-12-302 阅读 web ngrok是一个反向代理,它能够让你本地的web服务或tcp服务通过公共的端口和外部建立一个安全的通道,使得外网可以访问本地的计算机服...

会飞的污熊
2017/12/30
0
0
内网穿透(mac,window,linux通用)1分钟实现外网访问电脑本地服务器

我们在做开发时,不想购买服务器,只想搭建我们本地的服务器,我们搭建的本地服务器只能供我们自己电脑的浏览器访问,或者处于同一个wifi下的手机访问,但是我们如果想让别人访问到我们的本地...

编程小石头
04/10
0
0
Ngrok搭建自己的内网穿透

做过微信开发的应该都知道Ngrok内网穿透工具,大多都是在使用别人提供的服务,这样并不是很安全,所以我们还是需要搭建自己的Ngrok服务。 ------ 准备工作 - 准备一个域名,此处以domain.co...

Vic_REN
2017/10/25
112
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot设置项目访问路径

今天配置Springboot项目访问路径遇到一个小坑,这里做一个记录。针对Springboot2.0以下版本和以上版本的配置方式是不同的。这里针对yml配置文件做记录,properties文件配置方式相同。 Spring...

王子城
26分钟前
5
0
Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer

当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedis...

xiaolyuh
37分钟前
5
0
jquery通过css的color属性实现选取特殊颜色的内容

今天一个朋友问到怎么使用jQuery选取特定颜色的内容,以前没有遇到过这样的需求。首先,很多人可能想到使用jQuery属性选择器来实现,这是不可以的,因为 color 是 css 的属性,而不是 html 的...

前端老手
48分钟前
2
0
python3 网络爬虫开发实战 win10环境下 图形验证码识别需要安装的工具及地址

先下载安装tesseract exe文件 tesseract exe文件安装下载地址:https://digi.bib.uni-mannheim.de/tesseract/ win下直接下载双击安装即可,注意路径,下面用于配置环境变量。 参考网址: ht...

S三少S
今天
10
0
PHP学习记录整理

PHP 输出文本的基础指令:echo 和 print。 echo和print的区别 echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) echo 输出一个或者多个字符串。 print ...

半缘修道半缘君丶
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部