防火墙允许端口 3000

防火墙允许端口 3000

大家好。我正在运行 Ubuntu 桌面 22.04。我刚接触 Linux 世界大约一个月左右。

我已经将路由器配置为转发端口

当我在 Windows 中开发此 Web 应用程序时,只需配置路由器,即可通过公共 IP 访问它。我使用 nodejs 运行 Web 服务器,它位于端口 3000 上。

localhost:3000我只需输入或就可以访问我本地主机或本地网络中任何计算机上的网页,192.168.1.200:3000但不能102.154.23.2:3000- 例如公共 IP。

当我运行服务器时。ready - started server on 0.0.0.0:3000, url: http://localhost:3000

这是我的联邦快递配置。

我不知道这是否有帮助,但我会邮政无论如何。

我想要实现的是向我的客户展示开发的 Web 应用程序。有什么办法吗?提前致谢!

更新

到目前为止,我为实现这一目标所采取的步骤以及在遵循@user68186 的回答后采取的步骤如下:

  • 使用以下代码在 80 端口启动我的 Web 服务器sudo
  • 在我的路由器中将我的外部和内部 IP 端口转发到 80,因为将我的外部 IP 设置为端口 80 并在 3000 上运行我的 Web 服务器并将内部端口设置为 3000 不起作用。

后续问题:

是否需要进行一些配置才能实现将外部 IP 路由从端口 80 转发到端口 3000 iptables

102.154.23.2将外部 IP 转发到192.168.1.200:3000内部 IP。非常感谢!

答案1

防火墙允许端口 3000

您没有使用默认的 Web 服务器端口 80 或 443。正如您在问题中所说:“我使用 nodejs 运行 Web 服务器,它位于端口 3000。“因此,你必须打开 3000 端口。

Ctrl按+ Alt+打开终端T并输入:

sudo ufw allow proto tcp from any to any port 3000

在路由器中转发端口 3000

确保端口 3000 已转发到家庭路由器中的 Ubuntu 服务器的内部 IP 地址。这将允许家庭 LAN 之外的任何人访问 Web 服务器。

这些说明是针对路由器的,超出了本答案的范围,因为它与 Ubuntu 无关。

在此处输入图片描述

端口 80 是 http 协议的默认端口。如果您想让外部用户更轻松地访问 Web 服务器,您可能需要将路由器的端口 80 映射到内部端口 3000。这样,外部用户就不必在外部 IP 地址末尾添加端口号。

在此处输入图片描述

上面的图片只是示例。您的路由器中的设置可能看起来不同。

测试

测试您是否可以从家庭网络外部访问 Web 服务器。

清理

现在您可以删除不需要的 ufw 规则。使用以下命令:

sudo ufw status numbered

找到要删除的规则编号,然后:

    sudo ufw delete N

其中N是要删除的规则的编号。

笔记,删除规则后,规则编号可能会发生变化。因此,sudo ufw status numbered在删除其他规则之前,请再次使用该命令。

最后从路由器上删除您不需要的端口转发规则。

希望这可以帮助

答案2

考虑ngrok

ngrok http 80 # Expose a local HTTP service on a given port:

Cloudflared

cloudflared tunnel --url http://localhost:3000

或者一些其他

答案3

将本地主机 Web 服务器公开到互联网的 8 种方法

将本地主机 Web 服务器公开到互联网的 8 种方法

相关内容