登录
首页 >  Golang >  Go问答

ngrok 如何在防火墙后工作?

来源:Golang技术栈

时间:2023-03-25 17:19:25 333浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《ngrok 如何在防火墙后工作?》带大家来了解一下ngrok 如何在防火墙后工作?,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

Ngrok ( https://ngrok.com/ ) 应该允许您通过转发向万维网公开本地端口和服务。但是,如果我像这样在本地机器上打开端口 80:

ngrok 80

我回来了:

Tunnel Status                 online
Version                       1.3/1.3
Forwarding                    http://3a4bfceb.ngrok.com -> 127.0.0.1:80
Forwarding                    https://3a4bfceb.ngrok.com -> 127.0.0.1:80
Web Interface                 http://127.0.0.1:4040
# Conn                        0
Avg Conn Time                 0.00ms

我知道对http://3a4bfceb.ngrok.com的任何请求都将发送到我在端口 80 上的本地计算机,但是如果我坐在阻止传入流量的 NAT/防火墙后面怎么办(一种非常常见的情况)。ngrok 是否启动轮询请求以确定何时收到数据?

正确答案

因为 ngrok 隧道 总是首先在客户端启动 ,这就是它与服务器协商安全通道的方式。这是绕过传统防火墙配置的一个非常巧妙的解决方案。

这是通过客户端打开一个长寿命的 tcp 连接在内部完成的,其中在一个物理套接字连接中创建了许多逻辑套接字。这种技术称为流复用。有了这个设置,就不需要任何类型的轮询,因为客户端和服务器仍然有完全的双向通信。

然后,客户端和服务器通过心跳机制保持活动状态,确保连接打开并正常工作,甚至会在出现错误或丢失/关闭连接时重新连接。

有关更多信息,请参阅:github.com 上的开发人员指南

今天关于《ngrok 如何在防火墙后工作?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>