1

我在我的 android 设备上托管了一个 HTTP 服务器。我希望它能够从互联网访问它,即使它连接到家庭 wifi(在无线路由器后面)。

此外,在路由器上配置静态端口转发不是一种选择,因为从互联网上,我将无法访问路由器配置。

我有什么选择吗?

我试过这个:

Android 应用程序从特定端口号(例如 8080)从 android 设备(本地 IP 地址,例如 192.168.0.1)发送 HTTP 请求,通过家庭 WIFI 到互联网上的 Web 服务器,

路由器会将源地址修改为其公共 IP 地址的地址(例如 111.100.45.65),并将源端口号修改为任何随机端口号(例如 39824),并在其动态 NAT 表中创建一个条目。

内部 IP 内部端口 外部端口 192.168.0.1 8080 39824

据我了解,此条目至少保留几个小时。Internet 上的 Web 服务器将报告源 IP 和端口分别为 111.100.45.65 和 39824。

从 android 应用程序向 Internet 上的 Web 服务器发送 HTTP 请求后,我在设备的端口 8080 上运行了一个 HTTP 服务器。现在,如果我要从 Internet 向地址 111.100.45.65 的 39824 端口发送 HTTP 请求,它应该被设备上运行的 HTTP 服务器接收(路由器将从其动态 NAT 表中解析请求并将其定向到我的设备) .

但由于某种原因,这个请求没有得到解决。任何指针。

4

2 回答 2

1

首先,关于从 Internet 访问路由器配置,大多数路由器实际上都支持从 WAN 接口登录。大多数路由器默认关闭它,但只要您的密码安全,就没有理由不能启用它。

其次,如果您在 Internet 上的 Web 服务器上设置代理,您所尝试的将起作用。

  1. 通过启动从您的 Android 设备到 Internet 上的 Web 服务器的连接来打一个 TCP 漏洞。
  2. 现在 Internet 上的 Web 服务器知道公共 IP 和目标端口,以便能够与 Android 设备通信。
  3. 自动化脚本可以在 Internet 上的 Web 服务器上配置代理服务器,将 HTTP 请求转发到 Android 设备。

顺便说一句,我怀疑 NAT 条目至少会保留几个小时。您可能希望在您的 Android 设备和 Internet 上的 Web 服务器之间实现一个保持活动机制,以便 TCP 漏洞保持打开状态。

于 2013-02-07T23:00:25.620 回答
0

不会。您的应用程序可以通过端口 39824 与网络上的 http 服务器进行通信。没有其他人可以使用该端口从网络与您设备上的 http 服务器进行联系。您需要在路由器上进行端口转发,才能从 Internet 访问您的设备。

于 2013-02-07T20:01:31.553 回答