IP-Aliases 如何在 Google Cloud Computing Instance 上工作?

Ara*_*kis 5 ip networking alias google-cloud-platform

当通过 gloud 命令或接口设置 IP 别名时,它开箱即用。但是在机器本身中,我看不到任何配置、ip addr-entries、没有防火墙规则、没有允许机器 ping 的路由 - 但它是可 ping 的(本地和远程)!(例如10.31.150.70,当您设置10.31.150.64/26-subnet 时,您的主 IP 是10.31.150.1

另一方面,机器的主 IP 是 /32-Netmask。例如: 10.31.150.1/32,网关:10.31.0.1/16。那么,10.31.0.1当网关超出范围时,机器如何到达网关?

通过删除 Main-IP 时ip addr del,别名不再可 ping 通。

zap*_*tar 6

Google 在您的实例上运行网络守护程序。它作为服务运行google-network-daemon。该代码是开源的,可以在此存储库中查看。该存储库有一个名为的 Python 模块google_compute_engine,用于管理 IP 别名等。您可以浏览他们的代码以了解 Google 如何实现这一点(他们使用 或 ,ip route具体ifconfig取决于平台)

要查看 Google 在 Debian 机器上添加的别名路由(他们ip route在下面使用别名),请运行以下命令。

ip route ls table local type local dev eth0 scope host proto 66
Run Code Online (Sandbox Code Playgroud)

如果您了解 Linux 命令,则可以在停止守护程序后删除适当的路由,然后将别名 IP 地址分配给您的主接口作为第二个 IP 地址,以查看该方法的ifconfig实际效果。


小智 4

配置别名 IP 范围后,GCP 会自动安装主网络接口子网的主要 IP 范围和别名 IP 范围的 VPC 网络路由。别名 IP 范围可在 GCP 虚拟网络内路由,无需额外路由。这就是为什么虚拟机本身没有配置但仍然可以 ping 通的原因。您不必为每个 IP 别名添加路由,也不必考虑路由配额。

有关 Google Cloud Platform (GCP) 上的 Alias IP 的更多信息,请参阅此帮助中心文章

请注意,Compute Engine 网络仅支持 IPv4 单播流量,并且它将在虚拟机上将网络掩码显示为 /32。但是,它仍然能够到达其所属子网的网关。例如,10.31.0.0/16 包括从 10.31.0.1 到 10.31.255.254 范围内的主机,并且主机 10.31.150.1 在此范围内。

为了进一步阐明为什么为虚拟机实例分配 /32 掩码,需要注意 /32 是一个人为构造。该实例与软件定义的网络进行通信,该网络创建并管理“真实”子网。因此,它实际上是单个地址和子网网关之间的链接。只要链路层存在,通信就建立起来并且一切正常。

除此之外,网络掩码是在网络层强制执行的。这有助于避免生成不必要的广播流量(底层网络无论如何都不会分发)。

请注意,删除主 IP 将破坏元数据服务器的可访问性,因此 IP 别名将不可访问。