我正在尝试将客户的网络连接到我们的 AWS 数据中心,以允许访问(以前公开可用的)内部 Web 应用程序。
目前,我们已经将 VPN 设置为动态路由到一个新的空 VPC,其 CIDR 与客户的网络不冲突,因为我们的主要 VPC 冲突。
几个问题:
1) 是否需要将该 CIDR 广告或传播到客户端网络,我该怎么做?
2) 如何将该范围内的客户端可访问 IP 地址转发到包含 Web 应用程序的 VPC 中的内部 IP 地址?
3) 完成后,如何将安全组应用于该 VPN 连接以限制对该 IP 的访问?
或者,我是不是走错了路?
如果 VPN 有动态路由,这意味着它是为 BGP 配置的,因此应该自动公布 VPC 的 CIDR。
这就是你的计划失败的地方。
对于跨 VPC 边界的流量,VPC 必须具有对等连接。对等连接不支持传输流量。
与 VPC B 的 VPN 连接无权访问 VPC A 中的资源,即使 A 和 B 是对等的。
但是,正如下一点将说明的那样,这也是一样的。
你不能。VPC 提供的 VPN 连接本质上是受信任的。他们被允许访问 VPC 中实例上的安全组允许访问的任何实例,这意味着您的所有实例(包括仅具有私有 IP 地址的实例)都必须受到其安全组的适当保护,因为 VPC VPN 连接在防火墙中为该受信任的连接打开一个大洞。
但是......您没有这个问题,因为您已经为客户互连创建了一个新的 VPC,并且它无法通过您的对等连接传输到主 VPC。
您对第 2 点问题的解决方案是在 VPC B 中配置代理服务器。配置其安全组以允许从允许的客户端 IP 进行访问,这解决了第 3 点,因为您在此 VPC 中没有其他内容。将代理指向 VPC A 中的真实服务,并允许其 IP 地址通过 VPC A 中的相应安全组访问该服务。
也许。:) VPC 内置的 VPN 服务似乎旨在连接到完全受信任的网络。
在我的基础设施中,我只有一个这样的 VPN 连接到客户的网络,但在这种情况下,整个 VPC 都在其自己的 AWS 账户上,并且具有专用于该客户的基础设施。
在所有其他情况下,如果我有一个往返于客户端网络的 IPSec 隧道,我不使用 VPC 提供的 VPN,因为正如您在上面看到的,它真的不适合这个。相反,我终止了具有弹性 IP、运行 Linux、Openswan 和 HAProxy 的 EC2 实例上的隧道。
网络编号不是一个因素,因为我为网关实例上的辅助环回接口分配了一个不冲突的地址,并将 HAProxy 绑定到它。无论我是访问客户的 LDAP 或 HTTP 服务,还是他们访问我的服务,我的机器都会看到实例的正常 VPC 分配的代理 IP 地址,但客户的网络会看到代理使用的虚假非冲突地址在 IPSec 隧道内侦听来自客户端的连接或建立到客户端的出站连接。
因此,在我的 VPC 网络和客户端之间没有实际的 IP 路由——由运行在网关服务器上的代理维护的背靠背 TCP 连接是从网络到网络的唯一路径,因此在这种情况下......顺便说一句,在 5 美元/月的 t2.nano 实例类上完美运行。