ngrok内网穿透以及原理

〇、前言

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

一、使用 ngrok

1. 下载ngrok

ngrok内网穿透以及原理_第1张图片
下载下来后,这是一个命令行程序,直接可以运行。

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,我们可以看到:
ngrok内网穿透以及原理_第2张图片
点击Visit Site,就看到了本地的游戏服务:
ngrok内网穿透以及原理_第3张图片

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

三、ngrok工作原理:

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

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

全文完,感谢阅读。

你可能感兴趣的:(Web,NetWork,Web,内网穿透)