使用Ngrok进行内网穿透(Windows)

前言

相信很多开发者都有这样的需求,需要让外网访问你本地的服务器,方便调试本地代码,或者让别人体验到自己做的应用。那么这时,我们需要做的就是将我们本地的端口映射到一个外网的端口上,也就是内网穿透。常见的解决方案有 Ngrok, frp 等。本文将以 Ngrok 为例,讲述如何使用 Ngrok 进行内网穿透。

Ngrok

Ngrok 是一个反向代理,通过在公共端点和本地运行的 Web 服务器之间建立一个安全的通道,实现内网主机的服务可以暴露给外网。Ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放,所以 Ngrok可以很方便地协助服务端程序测试。Ngrok希望帮人节省更多的时间去编程。只需一个命令,便可将一个本地服务器暴露在NAT或防火墙后面的互联网。

Ngrok入门
  1. 首先到 Ngrok官网 进行下载。
使用Ngrok进行内网穿透(Windows)_第1张图片
官网
  1. 解压下载后的安装包,得到一个ngrok.exe文件。
使用Ngrok进行内网穿透(Windows)_第2张图片
安装包
  1. 运行ngrok.exe文件,可以看到如下界面,展示的内容有该程序的描述、例子、版本号、作者、命令行。Ngrok是一个命令行应用,通过输入指令,执行相对应的功能。
使用Ngrok进行内网穿透(Windows)_第3张图片
程序界面
  1. 经过上面的步骤,我们已经完成了安装,接下来需要做的就是对ngrok进行配置。我们需要配置authtoken(账户凭证)。这时,我们需要到 Ngrok官网 注册一个账号,然后在用户中心里可以查到我们的authtoken(账户凭证),authtoken是每个用户的身份凭证,请注意保密。
使用Ngrok进行内网穿透(Windows)_第4张图片
账户凭证
  1. 复制我们的用户凭证,并在ngrok命令行中,输入下面的命令,按回车键执行。
    (注意:2CZJkTcaAAXzRJx53AnD_6aVs8BBAaybUUpSMTxBCC这一串要换成你自己的authtoken)
ngrok authtoken 2CZJkTcaAAXzRJx53AnD_6aVs8BBAaybUUpSMTxBCC
  1. 执行成功后,命令行界面中会出现下面的信息。此时,代表配置成功。ngrok程序已经在你的用户目录下,创建一个.ngrok2文件夹,并在文件夹中创建一个配置文件ngrok.yml。
Authtoken saved to configuration file: C:\Users\acer/.ngrok2/ngrok.yml
  1. 在命令行界面中,执行下面命令,即将本地端口80映射到外网中,如果需要映射其他端口,只需将80改成相对应的端口即可。
ngrok http 80
  1. 执行成功后,会出现如下界面,其中红框标出的,即映射出去的外网地址(http://eac71ad7.ngrok.io)。此时,内网穿透已经完成,此时我们便可通过访问该域名从外网访问本地服务器了。

使用Ngrok进行内网穿透(Windows)_第5张图片
端口映射结果

注意:该程序需一直保持运行,程序关闭,映射也将关闭。如果需要关闭映射,可以使用ctrl + c 或关闭该界面,进行程序终止。每次重新执行命令,映射外网的域名都会发生改变。如果希望域名不变,可通过开通ngrok的会员服务,具体可在官网进行查看。

扩展

ngrok 除了提供端口映射之外,还提供了一个实时的Web UI,您可以在其中查看你的隧道上运行的所有HTTP流量。在启动 ngrok 之后,只需在Web浏览器中打开http://localhost:4040即可检查请求详细信息。

当我们向公开网址发出请求之后,我们将可以在 Web UI 中看到请求和响应的所有详细信息,包括时间,持续时间,标题,查询参数和请求有效负载以及线上的原始字节。

使用Ngrok进行内网穿透(Windows)_第6张图片
流量监控
未完待续

本文只是对 Ngrok 这个工具的一个小入门而已。随着对这个工具的深扒,发现这个工具的功能甚是强大,内网穿透只是它最基本的一个功能,它还有重放请求,请求正文验证,重写主机头等功能。只要运用得好,还能够做很多事情。今天就先到这了,算是一个抛砖引玉,希望能让你对 Ngrok 有一些了解。最后附上在官网抄过来的几句话。

Ngrok

One command for an instant, secure URL to your localhost server through any NAT or firewall.

  • public urls for building webhook integrations
  • public urls for sending previews to clients
  • public urls for testing your chatbot
  • public urls for demoing from your own machine
  • public urls for SSH access to your Raspberry Pi
  • public urls for exposeing your local web server
  • public urls for testing on mobile devices
参考资料

Ngrok官网
Ngrok中文文档

你可能感兴趣的:(使用Ngrok进行内网穿透(Windows))