我正在尝试将客户的网络连接到我们的 AWS 数据中心,以允许访问(以前公开可用的)内部 Web 应用程序。
目前,我们已经设置了 VPN,并使用动态路由到具有 CIDR 的新空 VPC,该 VPC 不会与客户端网络冲突,因为我们的主要 VPC 存在冲突。
几个问题:
1)该 CIDR 是否需要通告或传播到客户端网络?如何操作?
2)如何将该范围内的客户端可访问 IP 地址转发到包含 Web 应用程序的 VPC 中的内部 IP 地址?
3)完成后,如何将安全组应用于该 VPN 连接以限制对该 IP 的访问?
或者,我的做法错误了?
答案1
1)该 CIDR 是否需要通告或传播到客户端网络?如何操作?
如果 VPN 具有动态路由,则意味着它是为 BGP 配置的,因此应该自动通告 VPC 的 CIDR。
2)如何将该范围内的客户端可访问 IP 地址转发到包含 Web 应用程序的 VPC 中的内部 IP 地址?
你的计划就在这里失败了。
要使流量跨越 VPC 边界,VPC 必须具有对等连接。对等连接不支持中转流量。
如果对等连接中的任一 VPC 具有以下连接之一,则您无法将对等关系扩展到该连接:
• VPN 连接 [...]
http://docs.aws.amazon.com/AmazonVPC/latest/PeeringGuide/invalid-peering-configurations.html
即使 VPC A 和 VPC B 是对等的,与 VPC B 的 VPN 连接也无法访问 VPC A 中的资源。
但是,正如下一点将要说明的,这也一样好。
3)完成后,如何将安全组应用于该 VPN 连接以限制对该 IP 的访问?
不能。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 的 EC2 实例上终止隧道,运行 Linux、Openswan 和 HAProxy。
网络编号不是一个因素,因为我为网关实例上的辅助环回接口分配了一个不冲突的地址,并将 HAProxy 绑定到它。无论是我访问客户的 LDAP 或 HTTP 服务,还是他们访问我的服务,我的机器都会看到该实例的正常 VPC 分配的代理 IP 地址,但客户的网络会看到代理用于侦听来自客户端的连接或在 IPSec 隧道内建立到客户端的出站连接的虚假不冲突地址。
因此,我的 VPC 网络和客户端之间没有发生实际的 IP 路由 - 在这种情况下,由网关服务器上运行的代理维护的背对背 TCP 连接是从网络到网络的唯一路径……顺便说一句,它在每月 5 美元的 t2.nano 实例类上完美运行。