我有一个专用的测试服务器,它有一个面向公众的 IP,上面有 VMWare 服务器和 4 个通过 NAT 连接的测试环境。
这适用于 RDP 进入 Windows Server 2003 主机并从那里预览站点和客户端/服务器,但其中一些站点/服务器需要客户端从外部访问。
无论如何要翻译一个名称(即clientXYZ.ourtestserver.com)说GoDaddy的DNS解析到主机服务器(64.89.12.44),到私有IP(192.168.248.16),并将所有流量转发给来宾?
非常感谢所有帮助。
不,使用单个地址而不接受缺点或使用专门用于此方法的软件是不可能的。你可以做的是:
为每台目标机器转发一个端口。假设您有三台经过 NAT 的机器在 TCP 端口 12345 上托管服务。您可以在公共机器上创建端口转发:端口 12345 -> 主机 A,端口 12345 端口 12346 -> 主机 B,端口 12345 端口 12347 -> 主机 C,端口 12345
使用协议级反向代理。这当然只适用于本质上支持所需命名的协议。假设您想提供 HTTP,您将在公共地址的 80 端口上运行一个反向代理。然后,该代理将分析 Host: 标头并将请求转发到经过 NAT 的机器。
如果我正确理解了您的问题,我可以想出一种方法来做到这一点,这可能确实对您有用。这有点令人费解,但我认为它会起作用。每个 VM 机器都可以被赋予从一台机器路由到另一台机器的能力。考虑到这是一个测试环境,这种方法对性能的影响可能并不重要。
所以这里开始......如果您需要的所有唯一外部 DNS 条目都解析到相同的 IP 地址,那么只需配置每个 VM 服务器,以了解如何通过静态路由访问每个特定的 VM 服务器。您需要在受影响 VM 的主机文件中硬编码 fqdn,或者如果您有内部 DNS,则可以使用内部 DNS。您仍然需要为您在本地路由到的每台机器配置特定的路由。
Pound的主页在 VIRTUAL HOSTS (IN GENERAL) 部分中解释了如何通过使用 pound 作为反向代理来做到这一点。尽管作者说他认为这不是 Pound 的工作 :-) 我认为您也可以使用 Apache 使用mod_proxy来做到这一点。
基本上 pound 获取公共 IP,并通过读取 HTTP 请求标头将请求分发到适当的私有 IP。通常,您以前无法使用 SSL 执行此操作,但现在有方法可以执行此操作,请参阅此链接。