我想将内部网(防火墙 + NAT 后面的本地 IP 地址)上可用的 Web 服务器公开给 Internet 或不同 LAN 上的另一个客户端。
由于我无法在防火墙上执行任何操作(例如端口转发),我唯一的解决方案似乎是UltraVNC 描述的 NAT 到 NAT。
是否有人知道以这种方式公开 Web 服务器的轻量级解决方案?
答案1
假设你的服务器位于 NetworkWithHttp 中,而客户端位于 NetworkWithClient 中
如果这两者之间的路由器对从 NetworkWithHttp 到 NetworkWithClient 的数据包进行 NAT,那么 NetworkWithClient 对 NetworkWithHttp 一无所知:从它的角度来看,整个 NetworkWithHttp 就像一个主机(路由器)。
这里最简单的方法是配置端口转发(又名目标 nat、DNAT),但您无权访问路由器,对吗?
如果 NetworkWithClient 不在 NAT 后面——您可以在那里创建 VPN 服务器(任何现代 PC 操作系统和许多硬件路由器都支持此功能)并将 NetworkWithHttp 的服务器连接到此 VPN 服务器。
在其他情况下,您需要在两个网络都可以访问的第三方位置建立 VPN 服务器。
NH 就是此类服务的一个例子。它不是 VPN,但可以在客户端和服务器之间转发流量。
答案2
听起来您想将一个服务从(例如) 10.0.0.0/8 网络公开到互联网上的另一个 10.0.0.0/8 网络,并且两端都运行 NAT。
除非您的网络管理员已将特定端口转发到您的内部 IP,否则您无法接收来自 LAN 外部主机的传入连接。您的主机必须发起 LAN 外部的所有连接,才能在 LAN 外部进行任何通信。由于双方都是如此,因此你们双方在这方面都陷入了困境。
有一个例外:如果您和另一方都连接到第三方 VPN 服务,该服务将为你们的连接建立隧道,那么它就可以正常工作。OpenVPN 可以在 VPS 或其他可访问位置上以这种方式设置 - 您的主机和远程主机都将连接到 OpenVPN 实例。由于由两台主机发起的连接都与 VPN 服务器存在,并且 VPN 服务器将在隧道内转发主机之间的流量(充当路由器),因此您可以通过隧道的“虚拟”网络接受传入连接。
OpenVPN 相当轻量,但需要一些知识才能设置(特别是如果你想使用加密),并且显然需要在两个主机都可以访问的单独位置运行。我不确定 Hamachi VPN 等“交钥匙”产品是否能以同样的方式工作。
我建议使用 OpenVPN,因为它使用 TCP 或 UDP,由您选择。如果任一路由器没有阻止传出的 GRE 流量,也可以使用运行 PPTP 服务的 Windows(或 Linux)服务器。不确定 Windows 上的 PPTP 服务器设置有多复杂。