如何与具有相同 CIDR 的不同网络建立 VPN 连接?

如何与具有相同 CIDR 的不同网络建立 VPN 连接?

所以,

我有一个在 VPC 中运行的应用程序,目前已通过 VPN 连接到开发位置。该应用程序可在 10.0.2.25(内部 ELB 的 IP,仅通过 VPN 访问)上访问。我拥有的支持 VPN 的路由器(又称客户端网关)没有 BGP 功能。

我所在的网络的 CIDR(客户端网络是 192.168.1.0/24)和 VPC 上有一个虚拟专用网关(vgwA)和相应的路由规则(目标 192.168.1.0/24;目标 wgwA)。

我可以毫无问题地访问该应用程序(所有 ACL/安全组都已正确配置)。

我的问题是,当我想创建另一个到其他站点的 VPN 连接,但该站点的网络具有相同的 CIDR 块(192.168.1.0/24)或可能与其重叠(或包含)的 CIDR 块(例如 192.168.1.0/16)时会发生什么?这是否成功 - 客户端网络上的用户是否可以访问该应用程序?

基本上,我需要具备什么能力才能与具有相同(或部分共同)CIDR 的不同网络建立 VPN 连接?支持 BGP 的客户网关?同一 VPC 上的不同虚拟网关?(我认为 AWS 不允许这样做 - 而且这确实没有意义)基于客户网关外部 IP 的路由规则?(例如目的地:87.44.75.124 目标:vgwA;- 确实没有意义)

答案1

“正确”的解决方案是更改 VPC 的 CIDR 块以防止这种重叠。由于这不是一项简单的任务,因为目前您需要在新创建的 VPC 中启动实例的副本,因此您可以考虑使用以下技巧:

将您的 VPN 设备定义为动态 NAT,它会将不重叠的 IP 地址转换为您的 VPC 的真实私有 IP,同时为具有上述一组不重叠 IP 的 VPC 中的服务器提供本地 DNS。

更具体地说,假设您在客户端网络上有某种 VPN 设备,您将在客户端网络上拥有以下组件:

  • 面向 VPC 的路由器具有指向 VPC 的 IP 地址路由,例如 192.168.3.0/24
  • 客户实施内部 DNS 服务器,该服务器实施以下类型的 DNS A 记录:customer-A-record.customerdomain.com -> 192.168.3.x
  • 本地(家庭网络)用户使用 DNS 名称(而非 IP 地址)访问 VPC 资源;因此,当内部网络用户尝试通过 SSH 或 HTTP 访问 VPC 主机时,他们会针对 DNS 名称(而非 IP 地址)执行此操作:customer-A-record.customerdomain.com
  • 内部 DNS 服务器将 DNS 名称解析为 192.168.3.x/24 IP 地址
  • 内部路由器/三层交换机路由表具有指向 VPC 客户网关(即客户端网络上终止与 VPC 的 VPN 连接的 VPN 网关)的 192.168.3.x/24 路由​​表条目
  • 客户 VPN 网关收到发往 192.168.3.x/24 的数据包;它有一个静态目标 NAT DNAT 条目,用于将 192.168.3.x 转换为 192.168.0.x
  • 客户 VPN 网关确保源 IP 也被转换,以确保返回 IP 地址不重叠,因此除了 DNAT 之外,所有网关都执行源 NAT SNAT:192.168.0.x->192.168.3.x(可能是不同的源 IP 子网 - 对 SNAT 和 DNAT 使用相同的子网效率更高)
  • 客户 VPN 网关现在在其 IPSec 隧道/接口上转发数据包,该数据包具有 (源 IP,目标 IP)=(192.168.3.x,192.168.0.x),这会对目标网络 (VPC) 造成冲突
  • VPC 主机收到一个非冲突的数据包,对其进行应有的处理,并通过 VPN 隧道向客户端网络发送格式为 (Source-IP, Destination-IP)=(192.168.0.x,192.168.3.x) 的响应数据包
  • 客户端网络上的客户 VPN 网关执行 DNAT/SNAT,最终得到另一个形式为 (Source-IP, Destination-IP)=(192.168.3.x,192.168.0.x) 的无冲突响应,然后将其转发到 192.168.0.0/24 上的本地(家庭)网络。

相关内容