ngrok内网穿透以及原理

news2024/11/25 2:48:13

〇、前言

如果要想在本地部署一个服务,且要向不在本局域网的用户展示我们的服务,此时就要用内网穿透工具,把我们的服务变成公网服务。ngrok就是一个很好的工具,操作简单,服务稳定。

一、使用 ngrok

1. 下载ngrok

在这里插入图片描述
下载下来后,这是一个命令行程序,直接可以运行。

2. 配置

运行下命令会将 authtoken 添加到默认的 ngrok.yml 配置文件中。

./ngrok config add-authtoken ********8HapnsMOQxHkeONvMvV_6GafMD4sWZBpBzxB4fBCC

3. 运行

比如你的服务运行在 8080 端口,就可以利用下面的命令完成内网穿透:

./ngrok http 8080

二、案例

我在本地运行一个简单的网络服务程序:

[GIN-debug] Listening and serving HTTP on :8080

然后直接运行内网穿透程序:

./ngrok http 8080                                                                                                                                         (Ctrl+C to quit)
                                                                                                                                                              
Introducing Always-On Global Server Load Balancer: https://ngrok.com/r/gslb                                                                                   
                                                                                                                                                              
Session Status                online                                                                                                                          
Account                       ************* (Plan: Free)                                                                                              
Version                       3.3.5                                                                                                                           
Region                        Asia Pacific (ap)                                                                                                               
Latency                       -                                                                                                                               
Web Interface                 http://127.0.0.1:4040                                                                                                           
Forwarding                    https://72b5-124-89-2-78.ngrok-free.app -> http://localhost:8080                                                                
                                                                                                                                                              
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                     
                              0       0       0.00    0.00    0.00    0.00  

这样就完成了本地服务的公网域名映射,在网页上打开https://72b5-124-89-2-78.ngrok-free.app,我们可以看到:
在这里插入图片描述
点击Visit Site,就看到了本地的游戏服务:
在这里插入图片描述

异地用户完成测试之后,我们就可以把内网穿透程、本地服务程序终止了。

三、ngrok工作原理:

工作原理很简单,就是咱们本地跑一个 ngrok 服务,然后 ngrok 这个软件公司有自己的服务器,上面跑的是 ngrokd 服务程序。
我们启动ngrok服务后,服务器就产生了一个连接。如果有别的用户访问这个域名,服务器拿到服务请求后,会通过 ngrokd 将这个请求转发给我们本地运行的 ngrok。之后 ngrok 就会把用户请求的数据发送给 ngrokd,然后 ngrokd 拿到数据后再转发给用户,这样就完成一次请求-服务。
总结一下就是:

1.当服务端接收到连接,就读取映射表,判断接收的端口对应于哪一个客户端,然后向客户端转发数据.
2.客户端收到数据,读取本地映射表,判断对应哪个内网地址,向内网地址发起连接.
3.客户端和内网的服务器建立连接后,向服务端发起一个连接,作为转发通道.
4.服务端读取请求数据,并通过转发通道转发到客户端,客户端读取响应并通过转发通道返回给请求.

全文完,感谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1050800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nextTick源码解读

📝个人主页:爱吃炫迈 💌系列专栏:Vue 🧑‍💻座右铭:道阻且长,行则将至💗 文章目录 nextTick原理nextTicktimerFuncflushCallbacks 异步更新流程updatequeueWatcherflushS…

uniapp小程序 - 隐私协议保护指引接入教程

文章目录 前提:__usePrivacyCheck__: true步骤一、封装弹窗组件步骤二、单个页面引用一、被动监听二、主动查询 前言:官方发布公告,自2023年9月15日起,对于涉及处理用户个人信息的小程序开发者,仅当开发者主动向平台同…

什么是GraphQL?它与传统的REST API有什么不同?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是GraphQL?⭐ 与传统的REST API 的不同⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣…

基于51单片机数字电压表仿真设计_数码管显示(程序+仿真+原理图+PCB+报告+讲解视频)

基于51单片机数字电压表仿真设计_数码管显示(程序仿真原理图PCB报告讲解视频) 原理图:Altium Designer 仿真版本:proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0…

机器学习之神经网络的层次

文章目录 神经网络组成神经网络根据结构分类神经网络的信号传递 神经网络组成 大脑是一个巨大的神经元网络,所以神经网络是一个节点网络。根据节点的连接方式,可以创建多种神经网络。最常用的神经网络类型之一采用了如图所示的节点分层结构 正方形节点组…

【强化学习】04 ——动态规划算法

文章目录 1. 简介2. 策略迭代算法2.1 策略评估Example12.2 策略提升2.3 策略迭代算法Example2:Jacks Car Rental 3. 价值迭代算法Example1 4. 价值迭代VS.策略迭代总结DP扩展代码悬崖漫步(Cliff Walking)冰湖(Frozen Lake) 参考 1…

MySQL知识笔记——中级进阶之索引(实施工程师和DBA工作笔记)

在上一章中我们已经讲完了学习和实施工作中需要掌握的MySQL基础知识,但是在实际应用中这些基础只能让我们简单了解流程,以后的工作不只是简单的安装部署系统,我们还要将客户的数据导入数据库中才能完善系统的完整性和可使用性,接下…

excel 指定行数据求和

excel 指定行数据求和 1、 SUMPRODUCT SUMPRODUCT函数是在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。语法形式为 SUMPRODUCT(array1, [array2], [array3], …)。 2、功能实现 SUMPRODUCT(($B$4:$B$158"成本")*(D4:D158))

安防监控/视频汇聚平台EasyCVR云端录像不展示是什么原因?该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

【ICCV 2023 Oral】High-Quality Entity Segmentation分享

为什么会看这篇文章呢?因为要搞所谓分割大模型,为什么要搞分割大模型,因为最终我们要搞得是,业内领先的全自动标注系统。(标完都不需要人工再修正!!!) OK,仰…

MySQL架构 InnoDB存储引擎

1. 什么是Mysql? 我们在开发的时候,我们都需要对业务数据进行存储,这个时候,你们就会用到MySQL、Oracal等数据库。 MySQL它是一个关系型数据库,这种关系型数据库就有Oracal、 MySQL,以及最近很火的PgSQL等。…

安全基础 --- MySQL数据库解析

MySQL的ACID (1)ACID是衡量事务的四个特性 原子性(Atomicity,或称不可分割性)一致性(Consistency)隔离性(Isolation)持久性(Durability) &…

【IDEA】使用idea调试时查看对象集合的值

1、在实体类上添加toString方法 2、在要查看集合的地方右键View as→toString 3、View Text复制对象集合的值 4、复制map集合的值同理

ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板

ThemeForest 上的 HTML 网站模板受到全球数百万客户的喜爱。与包含网站所有页面并允许您在 WP 仪表板中自定义字体和样式的 WordPress 主题不同,这些设计模板是用 HTML 构建的。您可以在 HTML 编辑器中编辑模板,但不能在 WordPress 上编辑模板&#xff0…

多网卡场景数据包接收时ip匹配规则

多网卡场景数据包接收时ip匹配规则 mac地址匹配规则 接收数据包时数据包中的目的mac地址匹配接收网卡的mac地址后,数据包才会继续被传递到网络层处理 ip地址匹配规则 图1: 参见:https://zhuanlan.zhihu.com/p/529160026?utm_id0 图2&am…

在vue使用wangEditor(简单使用)

wangEditor不同的版本使用方法都不一样,这里以目前最新的参考官网方法使用2023-09-28 首先安装,参考官网,注意editor跟editor-for-vue两个都要装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangedit…

云安全之访问控制的常见攻击及防御

访问控制攻击概述 访问控制漏洞即应用程序允许攻击者执行或者访问某种攻击者不具备相应权限的功能或资源。 常见的访问控制可以分为垂直访问控制、水平访问控制及多阶段访问控制 (上下文相关访问控制),与其相应的访问控制漏洞为也垂直越权漏洞(普通用户可以访问或…

ElasticSearch - 在 微服务项目 中基于 RabbitMQ 实现 ES 和 MySQL 数据异步同步(考点)

目录 一、数据同步 1.1、什么是数据同步 1.2、解决数据同步面临的问题 1.3、解决办法 1.3.1、同步调用 1.3.2、异步通知(推荐) 1.3.3、监听 binlog 1.3、基于 RabbitMQ 实现数据同步 1.3.1、需求 1.3.2、在“酒店搜索服务”中 声明 exchange、…

【C++】vector的介绍 | 常见接口的使用

目录 vector的介绍 常见接口 构造函数 尾插push_back() vector的遍历 1.用方括号下标 遍历: 2.调用at()来访问: 3.用迭代器遍历: 4.范围for遍历: vector空间 vector增删查改 覆盖assign() 查找find() 插入insert() …

css自学框架之幻灯片展示效果

这一节,我自学了焦点图效果(自动播放,圆点控制),首先看一下效果: 下面我们还是老思路,css展示学习三个主要步骤:一是CSS代码,二是Javascript代码,三是Html代码。 一、css代码主要如…