部署自己的Ngrok实现内网穿透

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

为什么要内网穿透

一般来说,外网要访问服务器,那么这个服务器必须绑定一个公网ip,现在可以购买的云服务器都是这样。比如个人要在家里组建服务器,而且要外网的客户端可以访问,这时候问题就出现了

  • 问题1:现在一般家里是没有外网ip的,ip都是路由好几层的局域网ip
  • 问题2:就算有外网ip,也是动态ip

准备

  • 外网服务器一台,系统为Ubuntu
  • 根域名,需要具有域名的A记录解析权限
  • 内网测试机器,这里使用个人windows笔记本

正式工作

域名解析

首先需要一个域名作为ngrok的域名,比如ngrok.example.com,那么需要把ngrok.example.com和*.ngrok.example.com域名的A记录解析到外网服务器。

编译ngrok

安装Go环境

ngrok是Go语言开发的,需要安装Go环境,ubuntu使用 sudo apt install golang 安装
,安装完成后使用 go version 验证是否安装成功。

下载ngrok源码

ngrok的官方github地址是:https://github.com/inconshreveable/ngrok ,使用 git clone https://github.com/inconshreveable/ngrok.git 拉取代码。

生成自签名证书

删除assets/client/tlsassets/server/tls目录下的所有证书文件,在ngrok根目录创建脚本文件script,文件内容为:
将NGROK_DOMAIN替换成自己的ngrok域名

cd /usr/local/ngrok
NGROK_DOMAIN="ngrok.example.com"
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 device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -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

使用sudo sh script运行文件

image.png

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

本文来自:简书

感谢作者:vczyh

查看原文:部署自己的Ngrok实现内网穿透

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

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