【问题标题】:How do I send requests to a private network?如何向专用网络发送请求?
【发布时间】:2021-12-18 05:53:58
【问题描述】:

我正在尝试从家里连接到我在学校网络中编写的 NodeJS 服务器,以便我可以使用它。但是它位于我无法访问的路由器防火墙后面。有什么方法可以让我的服务器从外部访问,以便我可以从它发出请求?

我正在考虑某种套接字连接,在这种连接中,我的服务器每秒都会尝试“伸出”到我的家庭网络以建立一个我们可以使用的链接,但我不确定这是否可行,甚至是最好的方法关于它。

【问题讨论】:

  • 您家中的计算机可以通过互联网访问吗?意思是,您是否将路由器设置为将您的服务器放在 DMZ 中或将 ssh 端口 (22) 的端口转发到您的机器?如果是这样,那么是的,您可以让您的学校服务器建立一个 ssh 隧道。
  • 只要中间的防火墙不阻止该连接(并且您的家庭网络中有可以访问的东西),它就可以工作。这基本上就是反向 shell 连接的作用。
  • 有很多方法......但请考虑任何此类活动都会绕过您学校既定的安全协议,如果被发现可能会给您带来麻烦。为什么不在你的机器上托管 Node 服务器?它是否需要任何仅在学校网络中可用的资源?
  • 是的,我可以完全访问家庭网络中的所有内容。我会考虑这样做的。谢谢
  • 是的,我需要访问仅在我的学校网络上可用的网络资源。我正在开发一种工具,它可以让每个人的生活更轻松一些,我想在家中在相同的环境中使用它。无论如何,我无法访问敏感数据,如果我找到方法,我的教授也不介意我这样做。不过,我当然感谢您的关注!

标签: javascript node.js sockets web networking


【解决方案1】:

让 A 是你的学校服务器,B 是你的家庭服务器,A_user 是你在 A 上的用户名,B_user 分别是。在 B 上。

在 B 上:假设您正在运行 linux,请确保您已安装并运行 openssh-server。

在 A 上:

ssh -R 10022:localhost:22 B_user@B

这将建立与您家中服务器的 ssh 连接并打开反向隧道。此隧道意味着 B 的端口 10022 上的任何连接都将通过第一个 ssh 连接转发到 A 的端口 22 (ssh)。

现在在 B:

ssh -p 10022 A_user@localhost

这应该给你的想法。在实践中,您会发现 ssh 隧道每隔一段时间就会停止工作。准备好后,查看autossh 以使其保持活动状态,并在必要时自动重新建立。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-18
    • 2013-04-27
    • 2017-12-12
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多