Google Cloud Platform VM 上有多个 NIC,其中一个 NIC 可进行站点到站点 VPN 访问,另一个 NIC 可访问外部 Internet

Google Cloud Platform VM 上有多个 NIC,其中一个 NIC 可进行站点到站点 VPN 访问,另一个 NIC 可访问外部 Internet

大家好,希望您能提供帮助。

背景:我们有一个在 CentOS/Rocky 上运行的 Web 应用,需要能够从不同地区(美国东海岸和西海岸)以低延迟访问。我们在西海岸维护一个本地数据中心,并在东海岸设有 GCP 办事处,以便更快地为区域接近的客户提供服务。我们的数据来源是西海岸本地数据中心,并通过 VPN 隧道进行复制,该隧道广泛用于较小的 GCP 网络。

我们的应用程序依赖于回程数据平面来访问数据库和传播本地缓存,服务器使用物理NIC0回程网络。我们将公共互联网访问分离到不同的网络上,NIC1在每台服务器上使用物理隔离,这样缓存传播就不会干扰公共互联网请求。

对于东海岸,我们使用 GCP,并创建了一个名为的 VPC prod-vpc1,允许 GCP VM 使用 GCP HA Cloud VPN 服务访问位于本地的回程数据平面,每个 GCP VM 都通过此 VPN 网络进行路由,该网络NIC0位于 上prod-vpc1。我们还创建了一个名为的单独 VPC ,public-traffic-vpc-1以便NIC1此单独网络上的每个 VM 专门用于服务公共 Internet 请求。此配置背后的想法是与我们的本地网络进行类似的配置,我们将回程和公共 Internet 流量分开。

在我们当前的配置下,我们可以通过 HA VPN 在 GCP 和本地之间进行通信。但是,由于 GCP 配置默认路由的方式,公共互联网请求会经过NIC0VPN 流量路由的地方。我们正在尝试找出一种方法,让公共互联网路由通过,而NIC1所有其他回程和本地 VPC 通信(即此东海岸 VPC 内的其他虚拟机)则通过 进行通信NIC0

以下是一些网络配置说明:

  1. 本地回程网络:192.168.100.0/22,目标服务器的 IP 为192.168.100.50
  2. VPCprod-vpc1网络:10.202.10.0/24、网关 IP 、通过 VPN 隧道10.202.0.1路由到192.168.100.0/22
  3. VPCpublic-traffic-vpc-1网络:10.10.12.0/24,网关 IP10.10.12.1
  4. GCP HA Cloud VPN 配置了 BGP,并路由到本地网络的目的地,192.168.100.0/22如下面的屏幕截图所示。
  5. 站点到站点 VPN 网关 IP 是10.202.10.1,虚拟机NIC0将流量转发到该 IP 以访问本地192.168.100.0/22

在此处输入图片描述

GCP VM1 配置和当前行为:

  1. NIC0使用prod-vpc1 networkIP10.202.10.2
  2. NIC1使用public-traffic-vpc-1IP10.10.12.2
  3. GCP 分配默认路由以通过NIC0网关 IP10.202.10.1
  4. VM1 能够192.168.100.50通过以下方式 ping 本地服务器,反之亦然NIC0
  5. VM1 出口互联网流量通过NIC0

我们想要的是:

  1. VM1 能够192.168.100.50通过以下方式 ping 本地服务器,反之亦然NIC0
  2. VM1 出口互联网流量通过NIC1

我们尝试过的方法:

prod-vpc1我们手动删除了GCP 分配给的默认路由NIC0,然后通过添加了public-traffic-vpc-1的网关 IP作为默认路由。虽然这可以引导通过 的出站 Internet 流量,但我们无法通过 的 VPN 连接访问本地()。为了解决这个问题,在 VM 上,我们尝试为目标本地网络添加一条路由,但出现以下错误: 。显然没有 IP ,但同样的配置在本地有效,其中网络上的服务器 NIC 能够通过 VPN 与另一台服务器通信,即使该 NIC 在远程网络上没有 IP。10.10.12.1NIC1NIC1192.168.100.0/22NIC0NIC0192.168.100.0/22RTNETLINK answers: Network is unreachableNIC0192.168.100.0/22

相关内容