目录
一、ngrok内网穿透原理
1、内网穿透(NAT穿透)是指在局域网(内网)中的设备通过某种技术手段,使外部网络(如互联网)能够访问到内网中的设备或服务。例如,你在电脑上搭建了一个服务器,内网穿透后,你可以在自己的手机上访问这个服务器。
2、ngrok内网穿透工作原理
(1)暴露本地服务端口:在本地设备上启动ngrok客户端,并指定要暴露的本地服务端口。
(2)建立隧道:ngrok客户端与ngrok服务器建立一个持久的TCP隧道。
(3)分配公共URL:ngrok服务器会为这个隧道分配一个唯一的公共URL,这个URL可以被外部访问。
(4)请求转发:当外部用户访问这个公共URL时,ngrok服务器接收请求,并通过已经建立的隧道将请求转发到本地设备的指定端口。
(5)处理请求:本地服务器接收到请求后进行处理,并生成响应。
(6)响应返回:本地服务器将响应发送到ngrok服务器,最终由ngrok服务器返回给外部用户。
二、注册 & 下载ngrok
1、访问ngrok官网 : https://ngrok.com/(加载时间可能会比较长,多刷新、多访问几次)
2、注册账号,跟着流程来就好
注意事项:
①使用QQ邮箱会提示注册失败,尽量使用其他邮箱,我用的是163邮箱
②注册成功后会给你的邮箱发送验证邮件,记得验证,不然后续会出错
3、成功登录后,选择Setup & Installation,根据你的系统配置进行下载
4、选择Your Authtoken获取token
三、安装 & 配置ngrok
1、解压安装:下载的文件是一个压缩包,解压后只有一个exe文件,解压到任意位置均可。
2、双击exe,在命令行中执行如下命令:
ngrok authtoken xxx(xxx更换为你的token)
3、执行成功后会出现类似下面的信息,ngrok会在你的用户目录下自动创建配置文件ngrok.yml,每个人的路径不一致。
Authtoken saved to configuration file: C:\Users\Administrator\AppData\Local/ngrok/ngrok.yml
四、暴露端口
1、在ngrok.exe的命令行中执行如下命令,这将告诉 ngrok
把本地监听在端口5000上的 HTTP 服务器暴露到互联网。
ngrok http 5000(切换为你需要暴露的端口号)
2、执行上述命令后可能会出现如下错误提示:
reconnecting (failed to send authentication request: .....
解决办法:在上述命令的基础上添加--region=eu,这个参数指定了 ngrok
使用的服务器区域为欧洲(EU)。ngrok
在全球有多个数据中心,你可以选择对应区域,以减少网络延迟。执行这个命令后可能仍会出现错误提示,稍安勿躁,等待2-5min之后就可以成功连接了。如果还是失败,需要去寻找其他的解决办法。
ngrok http 5000(切换为你需要暴露的端口号) --region=eu
ngrok常见的区域代码:
us:美国(默认区域)
eu:欧洲
ap:亚太地区
au:澳大利亚
sa:南美洲
jp:日本
in:印度
3、成功执行后的界面如下,红色方框内的地址是公共URL,即外部访问地址。当访问这个地址时会将请求转发到本地的5000端口。
注意:
(1)程序需要保持运行才能保持端口的暴露,若程序关闭,端口暴露也将停止。
(2)每次启动,公共URL都是随机生成的,不是固定的。固定域名&暴露多个端口设置参考:内网穿透ngrok_dashborad.ngrok-CSDN博客
各参数详解:
- Session Status:
online
, 当前会话状态为在线,隧道已经成功建立。- Account:
XiaoZhi (Plan: Free)
,使用的ngrok
账户名称为XiaoZhi
,并且使用的是免费计划(Free Plan)。- Version:
3.14.0
,使用的ngrok
版本是3.14.0
。- Region:
Europe (eu)
,使用的服务器区域是欧洲(eu)。- Latency:
225ms
,表示从ngrok
客户端到ngrok
服务器的网络延迟为 225 毫秒。- Web Interface:
http://127.0.0.1:4041
,表示ngrok
的本地管理界面地址,你可以在浏览器中访问这个地址来查看隧道的状态、请求日志等信息。注意,这个地址只能在运行ngrok
的本地设备上访问。- Forwarding:
https://2fe2-120-40-58-193.ngrok-free.app -> http://localhost:5000
,表示ngrok
创建了一个公共 URLhttps://2fe2-120-40-58-193.ngrok-free.app
,并将所有访问这个 URL 的请求转发到本地的http://localhost:5000
服务器。- Connections:
ttl opn rt1 rt5 p50 p90
ttl
: 总连接数(Total Connections),表示自隧道启动以来的总连接数。opn
: 当前打开的连接数(Open Connections),表示当前正在进行的连接数。rt1
: 最近 1 分钟的请求速率(Requests per minute in the last 1 minute)。rt5
: 最近 5 分钟的请求速率(Requests per minute in the last 5 minutes)。p50
: 50% 请求的响应时间,以秒为单位(Response time for 50% of requests)。p90
: 90% 请求的响应时间,以秒为单位(Response time for 90% of requests)。
五、本地管理界面
1、浏览器访问本地管理界面,Inspect页面相关内容如下:
2、Status界面如下,显示了ngrok的配置信息和连接数据。
3、【Try the new Traffic Inspector】将使用ngrok的流量检查器进行查看,这个功能可以帮助你监控和调试通过 ngrok
隧道的流量。点击将进入如下界面,成功登录ngrok后在左侧目录中也可以找到这个工具。