Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ngrok如何在防火墙后工作?_Linux_Unix_Networking_Go - Fatal编程技术网

Linux ngrok如何在防火墙后工作?

Linux ngrok如何在防火墙后工作?,linux,unix,networking,go,Linux,Unix,Networking,Go,Ngrok()应该允许您通过转发向万维网公开本地端口和服务。但如果我在本地计算机上像这样打开端口80: ngrok 80 我回来了: Tunnel Status online Version 1.3/1.3 Forwarding http://3a4bfceb.ngrok.com -> 127.0.0.1:80 Forwarding ht

Ngrok()应该允许您通过转发向万维网公开本地端口和服务。但如果我在本地计算机上像这样打开端口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

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

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

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

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


有关更多信息,请参见此链接:

您可以创建基本的http https tcp隧道,而不使用authtoken。对于自定义子域和更多域,您应该通过在ngrok.com注册获得authtoken。设置后,它将存储在ngrok配置中,并用于所有隧道。有几种方法:

等待ngrok.authtoken(令牌);
wait ngrok.connect({authtoken:token,…})

书中有一章叫做“网络协议和隧道”,解释了ngrok的工作原理。关键因素是,所有传入请求实际上都通过由服务器启动的套接字传输的隧道,从而避免了您提到的问题。@fvu下载和使用的ngrok客户端是启动隧道的,而不是服务器。@RalphCaraveo I确实可以更好地表述这一点,我在看完整的轨迹,ngrok客户端程序在服务器上运行。。。