4

无论如何,我可以将 Cloud Functions 与默认网络上的 VPC 连接器连接到具有多个网络接口的 GCE 实例,其中nic0 是其他网络nic1 是默认网络

所以我有一个具有多个网络接口的 GCE 实例。

nic0 is someother network nic1 is default network

我在默认网络上创建了一个无服务器 VPC 连接器。并使用该连接器与 Google Cloud 功能连接到 GCE 实例。

问题是,当交换网络接口时,即nic0 是默认网络nic1 是其他网络,然后 VPC 连接器连接成功并且云功能可以到达 GCE,但是当nic0 是其他网络并且nic1 是默认网络时,云功能无法到达 GCE。

我尝试了以下事情:

  1. 我尝试交换网络接口,即默认为 nic0,它可以工作,但我需要 nic0才能让其他网络连接到另一个外部服务器,因此默认设置在 nic1 上。
  2. 我尝试制定防火墙规则,但显然在这种情况下不需要它们,因为我已经设置了必要的规则。
  3. 我尝试在其他网络上创建一个 VPC 连接器,以便它可以连接到nic0,但这也不起作用。VPC 连接器应位于默认网络上。

注意:我有正确的 IAM 权限设置,因为我已经成功地将云功能连接到只有默认网络的 GCE 实例。

4

1 回答 1

2

如果没有进一步的配置,辅助网络接口仅提供对它们所连接的直接子网的访问,这包括无服务器 VPC 连接器,因为它们本质上与您的实例所连接的子网不同。

为了解决这个问题,您需要在辅助接口所在实例的操作系统中创建静态路由。这显然会因您的操作系统而异,但在 Debian-9 上,您可以使用以下命令进行设置:

sudo ip route add [MY_CONNECTOR_SUBNET] via [ETH1_DEFAULT_ROUTER] dev eth1

其中 ETH1_DEFAULT_ROUTER 是 ETH1 子网的 .1 地址,MY_CONNECTOR_SUBNET 是连接器配置使用的 CIDR 格式 /28 子网(例如 10.50.1.0/28,但这取决于您如何设置连接器) .

当然,这不会在启动时持续存在,因为这也是特定于操作系统的配置,但它应该让您了解这是否是您的问题。

此外,“默认”网络并没有什么特别之处——它只是一个自动创建的自动模式网络,当你将连接器连接到 nic0 时,没有任何理由不应该工作“其他”网络。这里发生的唯一“特殊”事情是 nic0 为所有来自 VM 的流量获取默认路由,因此不需要添加静态路由来访问同一网络上的无服务器 VPC 连接器。

于 2019-10-24T18:55:48.880 回答