手记

三分钟使用Ngrok实现内网穿透,最后有福利喔

什么是内网穿透?

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。简单来说,就是让身处局域网的电脑,被大家都能访问的技术。

Ngrok是什么?

Ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。它是内网穿透的跳板之一。

为什么需要内网穿透?

如果你在自己电脑上搭建一个网站,你身处在局域网,你想让大家访问你,但是你没有外网IP,这时,你就需要一个跳板,实现内网穿透到外网环境,对于一个技术开发者,有时候会需要临时地将一个本地的Web网站部署到外网,以供他人体验评价或协助调试,内网穿透就显得尤为重要。

使用ubantu16搭建ngrok服务器

下载ngrok源码

  1. 创建一个目录,博主自己创建的是download
  2. 更新安装包管理器
  3. 安装git
  4. 克隆源码
mkdir download #创建名称为download的目录
cd download #进入文件夹
apt-get update #更新包管理器
apt-get install git #安装git
git clone https://github.com/inconshreveable/ngrok.git #将ngrok源代码克隆回本地

安装go语言

go语言版本必须是1.1的版本,可以去https://studygolang.com/dl 下载,下载tar.gz之后解压

wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz # 下载go语言
tar -zxvf go1.11.linux-amd64.tar.gz #解压tar包
mv go /usr/local/  #移动go语言

配置环境变量

使用vim命令修改配置文件,按A插入,然后把下面三句话粘贴在底部
export GOROOT=/usr/local/go
export GOPATH=/usr/local/go/get_package #设置环境变量,Go语言的安装位置
export NGROK_DOMAIN=“ngrok.your.com” #设置环境变量,ngrok域名
export PATH=.:$GOROOT/bin:$PATH

使用:wq保存退出

vim /etc/profile #修改配置文件
source /etc/profile #刷新配置

生成证书

  • 进入到第一步下载的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
  • 转移证书
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根目录编译

#在bin里面生成ngrok文件
make release-server release-client
#win客户端
GOOS=windows GOARCH=amd64 make release-client

编译完成之后把bin目录下windows的启动工具下载下来

启动

在ngrok根目录执行以下命令启动,httpaddr和httpsaddr是你的服务器外网端口,可以自己修改,如果你使用的阿里云服务器或者其他云服务器,请在控制台服务界面把你开启的端口打开,同时打开4443端口。打开之后启动

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain=$NGROK_DOMAIN -httpAddr=":8081" -httpsAddr=":8082"

测试

在下载的客户端同级目录下新建一个配置文件ngrok.cfg,添加以下内容,
设置你配置的网址

server_addr: "ngrok.xxx.com:4443"  
trust_host_root_certs: false  

使用cmd进入到下载的客户端目录,执行:

ngrok -config=ngrok.cfg -subdomain xxx 80 //(xxx 是你自定义的域名前缀)。

福利

如果你只是临时使用ngrok,并不需要搭建,那么巧了,本人已经使用阿里云搭建了一个ngrok,可以供大家临时使用,免费版的喔。

8人推荐
随时随地看视频
慕课网APP

热门评论

生成证书的时候报错:

ngrok git:(master) ✗ openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr

end of string encountered while processing type of subject name element #0

problems making Certificate Request


求解。


主流内网穿透有ngrok、frp、nat123

感谢大佬分享,我现在用的网云穿,很不错,非常简单方便

查看全部评论