我有一个在 SuSE Linux 的 Amazon EC2 实例上运行在云中的应用程序实例,我需要它连接到防火墙后面的本地 Intranet 上的 Web 服务(通常是端口 80,但也有一些其他端口)。我正在寻找一个很好的策略来实现这一点。
我正在考虑防火墙内的 Windows 2000 服务器上的某种代理,它将通过 ssh 隧道连接到 EC2 实例。但我以前从未组装过 ssh 隧道。这是这里最好的选择吗?我可以使用哪些推荐工具将其组合在一起?
这是针对开发设置的,因此它不必是生产级别的健壮性。但它确实需要工作。有什么想法吗?
Amazon 刚刚推出了 Virtual Private Cloud 服务,它使您能够通过 IPsec 连接将现有基础设施连接到一组隔离的 AWS 计算资源。
我会在您的 Amazon EC2 实例和您的本地网络之间设置一个 VPN。这将允许您保持所有通信的私密性和安全性,同时还允许 EC2 实例访问防火墙后面的设备。
就个人而言,我发现 OpenVPN 是处理此类事情的完美工具。它很容易设置和配置,在 Linux 和 Windows 上运行良好,而且它是开源的。很难出错。此外,我在多家公司大量使用它进行生产工作,并取得了巨大的成功。
CohesiveFT 有一个免费的商业产品,用于在 EC2 中进行网络“覆盖”
http://www.cohesiveft.com/Cube/VPN/VPN-Cubed_for_EC2/
如果您热衷于使用 SSH,它可能难以与 Windows 2000 一起使用,您可能需要研究 Services for UNIX 或 Cygwin。我个人不会在这种情况下使用 SSH。我倾向于发现 SSH 不是长期解决方案的最佳选择,对于一般隧道,它会带来显着的开销。
我同意 OpenVPN 是理想的工具,它带来的开销要少得多,并且比 SSH 具有更好的 Windows 支持。我将使用 Windows 2000 机器作为您的网络和 EC2 实例之间的桥梁。让您的路由器将所有发往您的 EC2 弹性 IP 范围的流量转发到 Windows 2000 机器。使用 OpenVPN 创建到您的 EC2 实例的隧道,让 Win2k 盒子将流量从物理网络桥接到 OpenVPN 创建的虚拟接口。这将创建一个具有有限延迟和开销的透明解决方案。
OpenVPN 是一种成熟且可靠的解决方案,我经常在类似情况下使用它,我发现它通常比商业替代方案有更好的文档和支持。
您可以使用 Azure .NET 服务中的服务总线在云实例和 Intranet Web 服务之间安全地中继您的消息。我们使用它从 Windows Azure 调用内部 Web 服务。如果您使用 .NET Web 服务(使用内置库),该服务显然更容易使用,但该服务应该通过 REST API 与供应商无关。
不幸的是,文档有点稀疏。不过,您不需要使用此模型的任何 VPN。