换句话说:我的计算机的 IP 地址是 1.1.1.1,服务器的 IP 地址是 2.2.2.2。我的计算机可以访问服务器的 IP 2.2.2.2,并使用在其端口上运行的服务(Apache、SOCKS 代理等)。但服务器无法对我的计算机执行相同的操作 - 我的 ISP 不允许这样做 - 这意味着当我在端口 80 上的计算机上运行 Apache 服务时,服务器无法调用 1.1.1.1:80(该调用不会通过 ISP 的防火墙到达我的计算机)。
那么,有没有办法(但不联系 ISP)让服务器调用我的 IP 地址并成功响应?
我的意思是创建某种“隧道”,我的计算机将其打开到服务器,并通过该隧道访问计算机的 IP。
答案1
除了假设的示例 IP 和服务器软件之外,您没有透露太多有关您的设置的信息,因此我在这里做了一些假设和猜测。
确保确实是您的 ISP 阻止了入站端口 80,因为也可以在本地调制解调器/防火墙上执行此操作。例如,如果您有 ADSL 调制解调器为您提供连接,则可能是调制解调器阻止了该端口,在这种情况下,您可能能够根据调制解调器的配置打开端口。有线调制解调器也一样。
如果您的 ISP 确实阻止了端口 80 的入站流量,那么除了使用某种隧道之外,您没有其他办法。我不知道是否有任何 VPN 提供商允许这种可能性,但理论上您可以利用朋友的计算机(尽管我不推荐这样做)并通过 VPN 将入站流量从那里路由到端口 80 到您的计算机,或者如果您可以访问外部服务器或 VPS 提供商,您可以将流量从那里路由到您的计算机,前提是您可以为此保持 VPN 连接打开。
不过请记住,有些 ISP 特别禁止在其消费者网络中使用服务器。如果您与他们签订的合同中提到了这一点,这可能会引起问题。
至于如何创建 VPN 或隧道,这在很大程度上取决于您使用的操作系统。在 Windows 上,我使用 Putty 进行隧道连接,但还有更好的选择,我只是记不住名字。至于创建 VPN,OpenVPN 是一个不错的选择。
我还假设您在问题中使用的 IP 地址只是示例,而不是您在网络中使用的实际 IP 地址,因为这可能会导致外部网络(Internet)出现问题。