在 NAT 后面托管服务器
Hosting a server behind NAT
所以基本上我的电脑在 NAT 后面。
我共有 3 个 IP 地址,
1. 我的 ISP Public 地址。 (27.106.96.113)
这个地址在我google for "My IP".
的时候已经出现了
2. 我的 ISP 给我的私人地址。 (172.16.91.141)
该地址已作为我的 Public 地址显示在我的路由器中。
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) 地址全局访问我的电脑。
我知道这是因为我的 ISP 有 NAT 配置所以我的全局 IP 没用。
由于我的 ISP 的 NAT,现在我无法在全球范围内托管 Apache(对于 php)Java Servlet 页面和我的 Counter-Strike 1.6 游戏服务器。
我试图为此找到解决方案但失败了。
我有免费的 php 主机(比方说 my.hosting.com),它可以在全球范围内访问。
所以我想如果我在我的 PHP 网络主机中使用套接字编程并从我的 PC 连接到 PHP 网络主机(这是全球可访问的)然后我有一个隧道通过 PHP 网络主机和我的电脑。
然后我会将所有互联网流量从我的 PHP 网络主机重定向到我的电脑。
因此,如果我将所有互联网流量从 (my.hosting.com:80) 重定向到 (192.168.0.100:8080),那么我可以通过连接到我的 PHP 网络主机来连接到我的服务器。
现在我是 PHP 的新手,从未尝试过套接字编程。
这只是我的想法,如果我误解了 PHP 套接字编程的概念,这听起来可能很愚蠢。
因此,我非常需要你们的帮助,以便在全球范围内成功连接我的 PC。
非常感谢您阅读本文,请帮助我解决问题。
谢谢。
in before flame: 这其实不是直接回答上面描述的问题,但是可以解决OPs问题
您听说过动态 DNS https://en.wikipedia.org/wiki/Dynamic_DNS。有许多 dyndns 提供商(也是免费的),许多互联网路由器通过向提供商提供 public IP 来原生支持它。
您将获得一个域名,而不是 IP,例如 u0815.ddnsprovider.foo,您可以使用它通过路由器端口转发机制访问您的 PC。
因此,根据您尝试实现的目标来判断,最好的办法是让您的 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)->你的网络服务器(http://192.168.0.100:80)
您的 IP 地址看起来是静态的,因为它们只有 254 个地址块,因此您不必担心它每隔这么多天就会更改:
https://wq.apnic.net/whois-search/static/search.html?query=27.106.96.113
所以基本上我的电脑在 NAT 后面。
我共有 3 个 IP 地址,
1. 我的 ISP Public 地址。 (27.106.96.113)
这个地址在我google for "My IP".
的时候已经出现了
2. 我的 ISP 给我的私人地址。 (172.16.91.141)
该地址已作为我的 Public 地址显示在我的路由器中。
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) 地址全局访问我的电脑。
我知道这是因为我的 ISP 有 NAT 配置所以我的全局 IP 没用。
由于我的 ISP 的 NAT,现在我无法在全球范围内托管 Apache(对于 php)Java Servlet 页面和我的 Counter-Strike 1.6 游戏服务器。
我试图为此找到解决方案但失败了。
我有免费的 php 主机(比方说 my.hosting.com),它可以在全球范围内访问。
所以我想如果我在我的 PHP 网络主机中使用套接字编程并从我的 PC 连接到 PHP 网络主机(这是全球可访问的)然后我有一个隧道通过 PHP 网络主机和我的电脑。
然后我会将所有互联网流量从我的 PHP 网络主机重定向到我的电脑。
因此,如果我将所有互联网流量从 (my.hosting.com:80) 重定向到 (192.168.0.100:8080),那么我可以通过连接到我的 PHP 网络主机来连接到我的服务器。
现在我是 PHP 的新手,从未尝试过套接字编程。
这只是我的想法,如果我误解了 PHP 套接字编程的概念,这听起来可能很愚蠢。
因此,我非常需要你们的帮助,以便在全球范围内成功连接我的 PC。
非常感谢您阅读本文,请帮助我解决问题。
谢谢。
in before flame: 这其实不是直接回答上面描述的问题,但是可以解决OPs问题
您听说过动态 DNS https://en.wikipedia.org/wiki/Dynamic_DNS。有许多 dyndns 提供商(也是免费的),许多互联网路由器通过向提供商提供 public IP 来原生支持它。
您将获得一个域名,而不是 IP,例如 u0815.ddnsprovider.foo,您可以使用它通过路由器端口转发机制访问您的 PC。
因此,根据您尝试实现的目标来判断,最好的办法是让您的 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)->你的网络服务器(http://192.168.0.100:80)
您的 IP 地址看起来是静态的,因为它们只有 254 个地址块,因此您不必担心它每隔这么多天就会更改:
https://wq.apnic.net/whois-search/static/search.html?query=27.106.96.113