我在一个地理分布的开发人员中工作,主要分布在整个加利福尼亚州,但一些关键成员也必须经常出差。
对于我们的大量子系统,我们非常依赖第三方提供商 API(无法了解它是谁或他们做了什么)。然而,第 3 方对网络访问非常严格,并且没有开发沙箱的概念。访问仅限于 2、3 个 IP 号码,仅此而已。一旦我们考虑到我们的生产服务器,就会为我们的开发团队留出一两个 IP 备用——这仍然是一个问题,因为人们的家庭 IP 发生变化、人们旅行、我们有超过 2 个开发人员等等。
第三方不允许宽 IP 块。他们也不会允许动态 DNS 类型的服务。也没有简单的控制台可以即时交换 IP(例如,如果开发人员的 IP 在家里发生变化或者他们在路上)。
由于我们都不是深度网络专家,我想知道我们可行的选择是什么?
VPN 是否存在诸如 3rd 方主机之类的东西?一般来说,我认为 VPN 是一种访问家庭办公室的机制,但这个概念是我们都会连接到的第 3 方 VPN,我们会将其注册为与我们的第 3 方一起的 IP 来源。
我们已经考虑使用 Amazon EC2 为每个开发人员有效地托管一个开发环境并使用它进行连接。然而,亚马逊只给你这么多静态 IP(我相信 5 个?),所以这只是一个权宜之计,直到我们的团队规模扩大到我们在亚马逊的 IP 数量。
这些是我唯一可行的想法,但同样,我远不是一个网络人。尝试搜索类似的线程,但我什至不确定我是否知道要四处寻找的正确方言。
我可以想到两种解决方案——一种在第 3 层,另一种在第 7 层。
我会考虑在某个地方安装一个带有静态 IP 地址的托管服务器,并在那里托管类似 OpenVPN 的东西。您可以部署 OpenVPN 配置,使对 API 的任何访问通过 OpenVPN 路由到具有静态 IP 的托管服务器,然后您可以将其 NAT 到该服务器的 IP 地址。
或者,您可以在托管服务器上运行第 7 层代理(类似于 Squid——我假设您的 API 是通过 HTTP 公开的)并通过该代理服务器路由来自开发人员的请求。
编辑:
使用第 7 层代理意味着您不需要为开发人员安装任何客户端软件,假设他们现有的工具可以处理指定的 HTTP 代理。但是,您可能不希望他们的所有访问都通过该远程代理进行路由,因此您应该使用代理自动配置文件或本地代理服务器之类的东西来仅将 API 的适当请求分流到托管代理。某些浏览器不支持在客户端和代理之间使用 SSL,因此开发人员的请求将在未加密的情况下通过 Internet。
使用第 3 层解决方案无需为开发人员的浏览器配置 HTTP 代理,但意味着他们需要启动并运行某种 VPN 客户端。他们的请求将在 VPN 服务器和他们的客户端计算机之间加密,但是如果托管的 VPN 服务器和 API 服务器之间的请求以明文方式运行,这可能是一个完全没有实际意义的问题。
听起来您需要一个 NAT 解决方案。您可以创建一个 VPN 隧道,然后通过 NAT 将数据强制发送到 API。这样一来,它们看起来都像是来自同一个 IP 地址。安装程序看起来像这样 Developers ----- VPN ----- private subnet --- NAT --- External IP