大家好。我正在运行 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
在删除其他规则之前,请再次使用该命令。
最后从路由器上删除您不需要的端口转发规则。
希望这可以帮助