大家好,希望您能提供帮助。
背景:我们有一个在 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 配置默认路由的方式,公共互联网请求会经过NIC0
VPN 流量路由的地方。我们正在尝试找出一种方法,让公共互联网路由通过,而NIC1
所有其他回程和本地 VPC 通信(即此东海岸 VPC 内的其他虚拟机)则通过 进行通信NIC0
。
以下是一些网络配置说明:
- 本地回程网络:
192.168.100.0/22
,目标服务器的 IP 为192.168.100.50
。 - VPC
prod-vpc1
网络:10.202.10.0/24
、网关 IP 、通过 VPN 隧道10.202.0.1
路由到192.168.100.0/22
- VPC
public-traffic-vpc-1
网络:10.10.12.0/24
,网关 IP10.10.12.1
- GCP HA Cloud VPN 配置了 BGP,并路由到本地网络的目的地,
192.168.100.0/22
如下面的屏幕截图所示。 - 站点到站点 VPN 网关 IP 是
10.202.10.1
,虚拟机NIC0
将流量转发到该 IP 以访问本地192.168.100.0/22
GCP VM1 配置和当前行为:
NIC0
使用prod-vpc1 network
IP10.202.10.2
NIC1
使用public-traffic-vpc-1
IP10.10.12.2
- GCP 分配默认路由以通过
NIC0
网关 IP10.202.10.1
- VM1 能够
192.168.100.50
通过以下方式 ping 本地服务器,反之亦然NIC0
- VM1 出口互联网流量通过
NIC0
我们想要的是:
- VM1 能够
192.168.100.50
通过以下方式 ping 本地服务器,反之亦然NIC0
- VM1 出口互联网流量通过
NIC1
我们尝试过的方法:
prod-vpc1
我们手动删除了GCP 分配给的默认路由NIC0
,然后通过添加了public-traffic-vpc-1
的网关 IP作为默认路由。虽然这可以引导通过 的出站 Internet 流量,但我们无法通过 的 VPN 连接访问本地()。为了解决这个问题,在 VM 上,我们尝试为目标本地网络添加一条路由,但出现以下错误: 。显然没有 IP ,但同样的配置在本地有效,其中网络上的服务器 NIC 能够通过 VPN 与另一台服务器通信,即使该 NIC 在远程网络上没有 IP。10.10.12.1
NIC1
NIC1
192.168.100.0/22
NIC0
NIC0
192.168.100.0/22
RTNETLINK answers: Network is unreachable
NIC0
192.168.100.0/22