内网穿透工具 ngrok 详解:从原理到操作步骤实现公网访问

ngrok 是一款极为强大且实用的内网穿透工具,能够巧妙地打破内网与公网之间的屏障,让本地服务轻松展现在公网用户面前。简单来讲,它如同在本地内网与广阔的公网之间搭建了一条便捷的通道,使得原本只能在内网访问的服务,可通过公网进行访问。

一、原理分析

从技术原理层面深入剖析,ngrok 本质上是一个反向代理。它在公共端点与本地运行的 Web 服务器或者其他服务之间构建起一个安全的通道。具体运作过程如下:当在本地启动 ngrok 客户端,并指定要穿透的本地服务端口(例如本地 Web 服务监听在 8080 端口)后,ngrok 客户端会立即与 ngrok 的云端服务器建立连接。该云端服务器拥有公网 IP 地址,是连接内网与公网的关键枢纽。连接成功后,ngrok 云端服务器会为此次连接精心分配一个独一无二的公网 URL,形如 “https://xxxxxx.ngrok-free.app” 。

当公网用户在浏览器或其他网络客户端中输入这个公网 URL 发起访问请求时,请求首先会快速抵达 ngrok 云端服务器。服务器随即依据之前与本地 ngrok 客户端建立连接时获取的详细配置信息,通过已经稳固建立好的隧道,将请求数据精准无误地转发到本地客户端。本地客户端在接收到请求数据后,迅速将其传递给在本地监听相应端口的服务,例如前面提及的监听 8080 端口的 Web 服务。Web 服务在高效处理完请求后,将响应数据返回给本地客户端,本地客户端再次通过隧道将响应数据快速发送回 ngrok 云端服务器,最后由云端服务器将响应数据及时返回给发起请求的公网用户。

二、应用场景

在实际应用场景中,ngrok 的身影频繁出现。对于 Web 开发者而言,在开发微信公众号、小程序或者处理第三方支付接口回调等功能时,常常需要配置 webhook。以往,要测试这些功能,往往需要将服务部署到公网服务器上,这个过程繁琐且耗时。有了 ngrok,开发者只需在本地开发环境中运行 ngrok,将本地服务暴露到公网,就能便捷地进行测试,大大节省了部署和测试的时间。再比如,企业内部有一些业务系统,原本只能在企业内网使用。借助 ngrok,企业可以将这些系统的部分功能临时暴露到公网,方便出差在外的员工或者合作伙伴进行访问和协作,而无需复杂的网络改造和申请公网 IP 地址。

三、功能特点

从功能特性来看,ngrok 支持多种协议,包括常见的 HTTP、HTTPS 以及 TCP 协议等。这意味着无论是 Web 服务、SSH 服务还是其他基于 TCP 协议的服务,都能通过 ngrok 实现内网穿透。例如,若本地搭建了一个 SSH 服务,希望从公网远程连接访问,使用 ngrok 通过 TCP 协议进行穿透,就能轻松达成目的。不过,需要注意的是,ngrok 免费版本存在一定的限制,如生成的公网 URL 可能不固定,在长时间无数据传输时,隧道可能会被关闭等。但对于大多数个人开发者和小型团队的开发测试场景而言,免费版本已经能够满足基本需求。若有更高的需求,如需要固定域名、更长时间的隧道保持以及更高的并发连接数等,可以考虑使用 ngrok 的付费版本。

四、具体实现步骤

ngrok 在实现内网穿透时,可以让你将内网服务暴露到公网,这对于开发和测试阶段尤其有用。下面是如何使用 ngrok 实现内网穿透的步骤:

1、下载并安装 ngrok

首先,你需要在你的计算机上下载并安装 ngrok。你可以从 ngrok 的官方网站下载适用于你的操作系统的版本。

对于 Windows:下载 .exe 文件并解压,然后将其添加到你的系统路径中,或者直接运行解压后的可执行文件。

对于 macOS 或 Linux:你可以使用 curl 或 wget 命令来下载并安装 ngrok。例如:

curl -sLO https://***/ngrok-stable-linux-amd64.zip

unzip ngrok-stable-linux-amd64.zip

./ngrok

2、注册并获取 Authtoken

要使用 ngrok,你需要一个 Authtoken。你可以通过访问 ngrok 的官方网站并注册一个账户来获取这个 token。注册后,登录你的账户,然后在“Authtoken”部分找到你的 token。

3、配置 ngrok

在命令行中,首先配置你的 Authtoken:

./ngrok authtoken your_authtoken_here

将 your_authtoken_here 替换为你的实际 Authtoken。

4、启动 ngrok 并设置端口

接下来,你可以启动 ngrok 并指定你想要暴露的本地端口。例如,如果你的服务运行在本地机器的 8080 端口,你可以这样启动 ngrok:

./ngrok http 8080

5、获取公网地址

运行上述命令后,ngrok 会在终端中输出一个公网地址,例如 http://1234.ngrok.io。你可以使用这个地址来访问你的内网服务。

五、更简单的内网穿透

通常情况下开源的frp和ngrok更适合自己公网主机搭建部署属于自己的端口转发服务,特别是对于技术人员和有专门团队运维管理的多项目需求场景。而对于普通人员且无公网IP的,可以使用像nat123这种有界面操作和支持网页远程管理,可以获取更为简单快速实现的内网穿透方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值