我正在尝试设置一个可供公开访问的 Apache 服务器。
我使用的是 Netgear R4500 路由器,连接到 Motorola SB6121 调制解调器。我可以通过输入 IP 地址在计算机上访问服务器。按照说明转发端口 80 以便我可以从其他计算机访问服务器后,它不起作用(见图)。
我收到“此网页不可用”的消息。我正在转发到我电脑的 IP 地址。
使用这个网络端口扫描工具,它显示“80/tcp 已过滤 http”,据我理解,这意味着转发无法正常工作。在我的 Apache httpd 文件中,我有:
ServerName 192.168.1.13:80
和
Listen 192.168.1.13:80
有人知道哪里出了问题或者有我可以尝试的方法吗?
答案1
您的端口转发看起来正常。
问题可能是:
- 计算机上的防火墙(Windows 中默认启用)。您需要打开端口 80
- 如果您尝试从外部连接,则可能是您的 ISP 阻止了端口 80。某些 ISP 会发生这种情况。也许打电话询问比尝试找出答案更快。但是,如果您打开防火墙却无法访问您的计算机,则可能是这种情况。要测试避免 Apache 或其他程序无法正常工作,请尝试
telnet your-ip 80
从外部计算机进行测试,看看它是否能响应。
更新:评论摘要:
因此,您打开了端口 80 的防火墙,而您的 ISP 正在阻止端口 80。您有以下几种选择:
如果可能,请尝试要求您的 ISP 打开端口
使用外部端口转发服务,该服务将在端口 80 上接收请求,并通过另一个(未阻止的)端口转发到路由器,然后路由器再转发到服务器。有很多这样的服务,我想有付费的也有免费的。对于 DNS,我使用dnsexit.com,它是免费的,而且运行良好。我知道他们也有端口转发功能,但我认为它是付费的。
另一种方法是使用 VPN 在 VPN 端点接收请求并将其作为 VPN 流量的一部分传输到您的服务器(因此不受阻止,使用私有 IP),但我认为这会更慢......
您可以在路由器上更改端口(例如更改为 81),并在 Apache 中转发到端口 80,而不会出现问题(或者让 Apache 轻松监听端口 81),但这样,访问 Web 服务器的 URL 将需要包含端口,如下所示:http://www.mysite.com:81对于端口 81。如果在 Apache 上将端口 80 更改为 81,则需要更改防火墙以打开端口 81(并关闭 80)。
答案2
是的,如果 ipfingerprints 报告已过滤,那么它就不起作用了。
您在装有 Apache 的机器上安装了防火墙吗?也许只允许本地访问。
路由器上是否有另一个防火墙可以完全禁止端口 80(即使是转发)。禁止输入端口 80 是正常的,因为您不想允许从网络访问您的路由器。
如果您测试了正确的外部 IP 地址,并且路由器和“互联网”之间没有其他防火墙/路由器。
编辑:
由于您的提供商似乎正在阻止端口 80(= 路由器和“互联网”之间的防火墙),因此您必须在路由器上使用备用外部端口。ist
8080
标准备用 http 端口。
您要么必须在某个地方获得至少一些网络空间(您可以在其中将重定向到另一个端口上的主服务器),要么您必须更改您的提供商(或者如果您致电他们的支持人员,他们可能会解除对端口的阻止,并告诉您否则会切换)。
除非可以让每个用户/链接都附加端口(http://address:8080/
)。
您的服务器可以继续监听 80 端口。您只需更改路由器上的端口转发。