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