通过移动数据网络访问托管的 Apache 服务器时出现问题

通过移动数据网络访问托管的 Apache 服务器时出现问题

我配置了一台 Apache 服务器来提供文件服务,当我将 Apache 设置为监听 127.0.0.1:* 或 0.0.0.0:* 时,它工作正常。我可以使用 localhost 或上述两个 IP 地址之一从本地计算机浏览器访问该站点。

当我尝试通过手机访问并连接到同一网络时,遇到了问题。

我尝试将 Apache 绑定到我的公共 IP 地址并更改监听端口。当我在手机浏览器 (DuckDuckGo) 中输入我的公共 IP 时,浏览器卡在加载状态。

我不知道该如何解决这个问题,我的 Apache error_log 没有连接尝试的记录。我对网络托管还很陌生,所以我想知道我是否遗漏了什么。我该如何解决这个问题?

注意:Apache 服务器正在我的笔记本电脑上运行,它通过手机移动数据热点。不确定这是否是问题的一个因素。我也知道建议使用静态 IP 来实现这种功能,但据我所知,使用动态 IP 应该也可以正常工作。

非常感谢您的帮助!

答案1

我尝试将 Apache 绑定到我的公共 IP 地址

套接字只能绑定到直接分配给系统的地址(即显示在ip addr或中ipconfig /all)。但您的公共 IP 地址并未分配给您的计算机 - 而是分配给您的手机。(将手机热点视为具有 NAT 的基本家用路由器,其工作原理完全相同。)

无论如何,Apache 实际上并不知道也不关心您是否连接到公共地址 - 路由器会转换所有数据包(入站和出站),以便它们始终具有计算机自己的私有地址。

更有可能的是,手机实际上并不默认转发传入连接;它是一个没有端口转发规则且无法配置它们的 NAT 路由器。

事实上,如果你运气不好,甚至你的手机本身可能都没有公共 IP 地址。一些移动网络将所有客户置于运营商级 NAT 之后,有时是 1:1 NAT(允许入站连接),但有时是通常的 1:many NAT(不允许)。

此外,即使你的手机拥有公共 IP 地址,某些移动网络会故意阻止所有入站连接。部分原因是出于安全考虑,部分原因是他们坚持认为您不会为允许您托管服务的计划付费。

(对于某些运营商而言,这实际上是获取静态 IP 地址的两个主要原因:这并不是要拥有一个静态的地址,而是要拥有一个不在运营商级 NAT 之后的地址,以及隐式要求运营商允许到该地址的入站连接。)

相关内容