【问题标题】:Hosting a server behind NAT在 NAT 后面托管服务器
【发布时间】:2017-02-18 18:25:44
【问题描述】:



所以基本上我的电脑在 NAT 之后。

我总共有 3 个 IP 地址,
1. 我的 ISP 公共地址。 (27.106.96.113)
当我用谷歌搜索“我的 IP”时,这个地址已经显示出来了。

2. 我的 ISP 给我的私人地址。 (172.16.91.141)
此地址已作为我的公共地址显示在我的路由器中。

3. 我的实际私人地址。 (192.168.0.100)
此 IP 地址由我的路由器 (192.168.0.1) 通过 DHCP 为我的 PC 设置。

我可以使用这个 (192.168.0.100) 地址在本地访问我的电脑。

我可以使用这个 (172.16.91.141) 地址访问我的 ISP 网络(与我拥有相同 ISP 的人)中的 PC。

但是,我无法使用此 (27.106.96.113) 地址在全球范围内访问我的 PC。
我知道这是因为我的 ISP 有 NAT 配置,所以我的全局 IP 没用。

现在,由于我的 ISP 的 NAT,我无法在全球范围内托管 Apache(用于 php)Java Servlet 页面和我的 Counter-Strike 1.6 游戏服务器。

我试图为此找到解决方案,但失败了。

我有免费的 php 主机(比如说 my.hosting.com),它可以在全球范围内访问。

所以我想如果我在我的 PHP 网络主机中使用套接字编程并从我的 PC 连接到 PHP 网络主机(这是全球可访问的),那么我有一条通过 PHP 网络主机和我的 PC 的隧道。

然后我会将所有 Internet 流量从我的 PHP 网络主机重定向到我的 PC。

因此,如果我将所有互联网流量从 (my.hosting.com:80) 重定向到 (192.168.0.100:8080),那么我可以通过连接到我的 PHP 网络主机来连接到我的服务器。

现在我是 PHP 新手,从未尝试过套接字编程。
这只是我的想法,如果我误解了 PHP 套接字编程的概念,这听起来可能很愚蠢。

因此,我非常需要你们的帮助才能在全球范围内成功连接我的 PC。

非常感谢您阅读本文,请帮助我解决我的问题。

谢谢。

【问题讨论】:

  • 太宽泛了。我(通常)建议实际尝试您的要求,并在遇到问题时提出问题。但在这种情况下,我认为这不是一个可行的解决方案,我也看不到适当托管服务器的好处。
  • 将流量从您的网络主机重定向到您的“本地主机”时,会出现完全相同的问题。如何正确设置您的调制解调器/路由器以将流量转发到您的本地主机?
  • 感谢您的评论,实际上我会将流量转移到路由器的 IP 地址,然后使用路由器配置将其转发到我的 PC。

标签: php sockets server ip-address nat


【解决方案1】:

因此,根据您要达到的目标来判断,最好的办法是让您的 ISP 在备用 TCP 端口(如果他们允许的话)上创建一个 NAT,将特定流量 NAT 到您的网关 172.16.91.141,然后你需要在你的路由器上创建一个 NAT 规则来 NAT 流量(比如说它是来自你的 ISP 路由器的“8080”),然后转换你可以然后将它转换回“80”。

WAN->ISP 路由器(27.106.96.113 - 8080 到 8080)->您的路由器(172.16.91.141 8080 到 80)->您的 Web 服务器(http://192.168.0.100:80

您的 IP 地址看起来是静态的,因为它们只有 254 个地址块,因此您不必担心它每隔几天就会发生变化:

https://wq.apnic.net/whois-search/static/search.html?query=27.106.96.113

【讨论】:

  • 非常感谢您的回复。我认为打电话给我的 ISP 是唯一的选择。
  • @Omkar 哦,别忘了你的 ISP 有一条‘好腿’,因为他们已经对你的连接进行双重 NAT,以通过使用更少的外部 IP 来节省资金。跨度>
  • 嘿,只是为了让你知道我尝试了 Windows 的“Hamachi”应用程序。它创建自己的网络并分配一个 IP,所有在其 PC 中安装了“Hamachi”应用程序的用户都可以访问该 IP。我想知道它是如何工作的。我认为“Hamachi”应用程序使用了一些套接字编程,因此我要求使用 PHP 套接字编程。但无论如何,我会想办法或只租一台 VPS。
  • @Omkar 是的,我过去曾使用过 Hamachi,但认为这只是一种方式的 VPN 隧道(不可路由返回)。是的,可以使用套接字创建某种形式的代理,但您仍然需要某种形式的中继服务器来管理您的连接。执行此操作的最具成本/时间效益的方法是 NAT(在您的情况下为双 NAT),或者就像您所说的便宜的 VPS。
  • 感谢您的提醒。我花了 5 分钟才知道如何将答案标记为有用。但现在一切都很好。实际上我是这个论坛的新手,我必须说你们在帮助其他人方面做得很好。我非常尊重所有帮助这个论坛的人。再次感谢您。
【解决方案2】:

In before flame:这实际上并不能直接解决上述问题,但可以解决 OPs 问题。

您是否听说过动态 DNS https://en.wikipedia.org/wiki/Dynamic_DNS。有许多 dyndns 提供商(也是免费的),并且许多互联网路由器通过向提供商提供其公共 IP 来原生支持它。

您将获得一个域名,而不是 IP,例如 u0815.ddnsprovider.foo,您可以使用它通过路由器端口转发机制访问您的 PC。

【讨论】:

  • 感谢您的回复。我尝试了动态 DNS 和 no-ip.com,但它们重定向到我的 ISP 的 IP(27.106.96.113),这无法帮助我访问我的 PC。
  • @Omkar 是的,此选项不起作用,因为您只是将 A 记录添加到您的外部 IP 地址。如果您的外部 IP 地址经常更改(您的不是),则需要此选项,并且您的 PC/服务器只需将外部 IP 的更改更新到动态 DNS 服务,这反过来会更新您的 A 记录。
猜你喜欢
  • 2012-02-20
  • 2012-07-24
  • 2023-03-14
  • 2017-09-24
  • 2013-04-21
  • 2023-04-01
  • 2023-03-19
  • 2016-09-09
  • 2017-10-02
相关资源
最近更新 更多