如何在不使用 SSH 或 ngrok 的情况下通过我的本地计算机浏览器访问安装在 Google colab 上的 Web 服务器

问题描述 投票:0回答:2

我想创建一个在 Google colab 上运行的网络服务器。此外,我应该能够通过我的浏览器访问它,而无需使用任何第三方服务或 SSH。 我安装了灯服务器并尝试使用 socat 进行端口转发,但由于某种原因它不起作用。我也尝试过 Iptables,但它似乎在内核级别不受 Google colab 的支持。因此,如果有人能告诉我如何使用 socat 正确执行此操作,那就太好了。

我已经在 Google colab 上安装了 lamp server 并使用以下命令启动了它

!sudo service mysql start
!sudo service apache2 start

如果我使用 curl 通过 colab 本身访问它,它会正常工作。

!curl http://localhost/.

但我希望能够通过我的本地计算机浏览器仅通过输入它的 IP 地址来访问它。我使用以下命令检索了 IP 地址。

!curl ipecho.com/plain

我尝试使用 iptables 进行端口转发,但它没有用。所以我尝试使用 socat 和以下命令进行端口转发。

!socat TCP4-LISTEN:35.201.184.86,fork TCP:http://localhost:80

(35.201.184.86是当时colab的私有IP地址。) 但是,当我尝试通过输入 35.201.184.86 连接到我的浏览器时,它不起作用。

所以我想知道是否有人可以帮助我解决这个问题。也许我没有正确使用 socat。我知道有一些方法可以使用 SSH 和 ngrok 来做到这一点,但我不想在这种情况下使用 SSH 或 ngrok。 提前致谢。

networking webserver google-colaboratory portforwarding socat
2个回答
0
投票

Socats TCP 地址采用 IP 地址,而不是 URL,所以请尝试:

socat TCP4-LISTEN:35.201.184.86,reuseaddr,fork TCP:localhost:80

(reuseaddr 很有帮助...)

如果这对您没有帮助,请您提供错误信息或什么。


0
投票

Google colab 的 docker 系统似乎处于 NAT 之下。这就是为什么我无法通过直接输入 IP 地址连接到 Web 服务器的原因。

socat 工作得很好。它将流量从一个端口转发到另一个端口。我认为它不起作用的原因是我无法使用 IP 地址连接到 Web 服务器。但是,如果我尝试使用 curl 在本地连接到 socat 端口,它就可以工作。所以我别无选择,只能使用反向隧道程序。所以目前我使用 localtunnel 并且它按预期工作。

感谢@dest-unreach 帮助我。

© www.soinside.com 2019 - 2024. All rights reserved.