无法使用服务器的公共 IP 访问本地主机

无法使用服务器的公共 IP 访问本地主机

我正在尝试在我的 Ubuntu 18.04 中安装 Apache 服务器,并通过不同的方式获取公共 IP 地址(curl,http://www.see-my-ip.com/,..

但是,当我尝试使用此 IP 访问 Apache 配置页面时,系统会要求输入用户名和密码,我猜想这是路由器的用户名和密码。[请参阅链接上的屏幕截图(https://i.stack.imgur.com/JZkeN.gif)。

我连接到公共网络或我的 Android 手机的数据网络,两者都遇到了同样的问题。

有什么线索可以告诉我该做什么来解决这个问题?

答案1

是的,在您的 DSL 路由器上设置端口转发。

但首先:除非您有非常特殊的原因需要通过互联网管理您的 DSL 路由器:关掉它。之所以用大写字母表示,是因为这是一个严重的安全问题。只允许从内部网络管理 DSL 路由器。

此外,如果您的路由器监听该端口,您将无法将该端口转发到您的服务器。

如何设置端口转发取决于路由器。对于某些 DSL 路由器,它在菜单中作为转发,对于其他路由器,您必须在高级菜单中进行挖掘。您需要查阅 DSL 路由器的手册。

端口转发的作用是将收到的数据包发送到本地服务器,并将公共 IP 转换为本地 IP,然后再转换回来。

或者例如以下网络:

+------+ a.b.c.d   (-----)   e.f.g.h+------+10.1.1.1      10.1.1.2+------+
|client|----------(Internet)--------|router|----------------------|apache|
+------+            (-----)         +------+                      +------+

您的端口转发规则将是

  • 外部 IP 地址 efgh
  • 外部端口:80

  • 内部 IP 10.1.1.2
  • 内部端口 80

当客户端发送数据包(从 abcd:high_port 到 efgh:80)时,路由器会按照规则的定义将数据包转换为(从 abcd:high_port 到 10.1.1.2:80),并将其发送给 Apache。当 Apache 给出回复(从 10.1.1.2:80 到 abcd:high_port)时,路由器会将其转换回(从 efgh:80 到 abcd:high_port)并将其发送给客户端。这就是端口转发的工作原理。

相关内容