分享
  1. 首页
  2. 文章

利用ngrok和阿里云访问内网主机端口

飘飘梭 · · 3094 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

手头上有一台电脑,装的ubuntu18.04,配置还可以,而我的阿里云服务器内存较小,跑不了太多服务,于是便想到通过ngrok将本地主机的端口映射出去。

在配置内网映射前,首先我们要有一台云主机,如阿里云或者腾讯云,还要有一个属于自己的域名(最好是经过备案的)。

step1: dns泛域名解析

所谓泛域名解析,就是在正常的域名前加上*. 如下图中的 *.ngrok

setp2: 配置防火墙

ngrok默认使用4443端口, 在运行ngrok服务端时还需要一个监听监听端口,如8888, 在防火墙中要放开这两个端口。

setp3: 下载安装ngrok和go语言

ngrok需要go语言进行编译,首先安装go:

sudo apt install go

通过go version 查看go版本,如果版本小鱼1.7,可能会报错,这是要手动升级. 现将已有的go卸载,

apt purge golang-go

去官网下载最新的安装包 https://studygolang.com/dl, tar -xzvf *.tar.gz 命令解压 并通过 export PATH=$PATH: /*/go/bin 添加环境变量

接下来下载ngrok:

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

生成自签名证书:

使用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.xxx.fun".

首先进入刚刚下载的ngrok目录 cd ngrok

NGROK_DOMAIN="ngrok.xxx.com"

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 -inserver.csr -CAbase.pem -CAkeybase.key -CAcreateserial -days10000-outserver.crt

拷贝证书到指定位置:

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

cp server.crt assets/server/tls/snakeoil.crt

cp server.key assets/server/tls/snakeoil.key

接下来进行编译:

make release-server release-client

编译完成后,会在bin目录下出现ngrok(客户端)和ngrokd(服务端)两个文件,代表编译成功。

step4 运行服务端:

./ngrokd -tlsKey="../assets/server/tls/snakeoil.key" -tlsCrt="../assets/server/tls/snakeoil.crt" -domain="ngrok.yourdomain.com" -httpAddr=":8888" -httpsAddr=":444"> /home/logs/ngrok.log &

tips:在运行命令的最后加上 & 可以让程序在后台运行

这是我们咋浏览器访问ngrok.xxx.com:8888 访问,如果看到 Tunnel ngrok.xxx.com:8888 not found 说明服务端已经正常启动 了。

step5 启动客户端:

使用scp命令将阿里云上的ngrok客户端文件拷贝到本地主机

scp root@**.***.**.**:/*/ngrok/bin/ngrok /home/**/ngrok/

接下来进入与客户端同一级目录添加一个名为ngrok.cfg的配置文件, 并输入:

server_addr: ngrok.***.com:4443

trust_host_root_certs: false

tunnels:

tunnel1:

subdomain: test1 # 次一级域名

proto:

http: 80 #监听本地的80端口

tunnel2:

subdomain: test2

proto:

http: 8080

tips: yaml文件不可以使用tab,只能用空格,否则会报错

运行客户端:

./ngrok -config ngrok.cfg start tunnel1 tunnel2

现在,我们已经完成了内网的端口映射。

参考博文:https://my.oschina.net/djsoft/blog/1786635

https://blog.csdn.net/qq_34292044/article/details/78559128

https://free-e.net/112


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:飘飘梭

查看原文:利用ngrok和阿里云访问内网主机端口

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3094 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏