防火墙规则概览

通过 Google Cloud 防火墙规则,您可以根据自己指定的配置允许或拒绝流量传入和传出虚拟机 (VM) 实例。无论实例的配置和操作系统如何,无论它们是否启动,系统都始终会启用 Google Cloud 防火墙规则来保护您的实例。

每个 Virtual Private Cloud (VPC) 网络都起到分布式防火墙的作用。虽然防火墙规则是在网络级层上定义的,但允许或拒绝连接是按具体实例执行。您可以认为,Google Cloud 防火墙规则不仅存在于您的实例与其他网络之间,也存在于同一网络内的各个实例之间。

如需详细了解防火墙,请参阅防火墙(计算)

Google Cloud 中的防火墙规则

创建 Google Cloud 防火墙规则时,您需要指定 VPC 网络,以及定义规则将执行何种操作的一组组件。利用这些组件,您能够根据流量的协议、端口、来源和目的地来定位某些类型的流量。如需了解详情,请参阅防火墙规则组件

您可以通过 Google Cloud Consolegcloud 命令行工具REST API 创建或修改 Google Cloud 防火墙规则。创建或修改防火墙规则时,您可以使用规则的目标组件来指定要应用此规则的实例。

除了您创建的防火墙规则外,Google Cloud 还有其他规则可以影响传入(入站)或传出(出站)的流量:

  • GCP 不允许在 VPC 网络内使用某些 IP 协议,例如 GRE。如需了解详情,请参阅始终禁止的流量

  • Google Cloud 始终允许虚拟机实例与其对应的元数据服务器(位于 169.254.169.254)之间的通信。如需了解详情,请参阅始终允许的流量

  • 每个网络都有两条隐式防火墙规则,分别允许传出连接和禁止传入连接。您创建的防火墙规则可以覆盖这些隐式规则。

  • 默认网络预先填充了一些防火墙规则,您可以删除或修改这些规则。

规范

Google Cloud 防火墙规则具有以下特征:

  • 每条防火墙规则均应用于传入(入站)或传出(出站)流量,但不能同时应用于两者。如需了解详情,请查看流量方向

  • 防火墙规则仅支持 IPv4 流量。按地址指定入站规则的来源或者出站规则的目的地时,只能使用采用 CIDR 表示法的 IPv4 地址或 IPv4 块。

  • 每条防火墙规则执行的操作均为 allowdeny 之一。只要实施了防火墙规则,该规则就会应用于流量。例如,您可以停用某一条规则,以进行问题排查。

  • 创建防火墙规则时,必须选择 VPC 网络。虽然规则是在实例级层实施,但其配置与 VPC 网络相关联。这意味着您无法在 VPC 网络之间共享防火墙规则,包括通过 VPC 网络对等互连或使用 Cloud VPN 隧道连接的网络。

  • Google Cloud 防火墙规则是有状态的。在建立会话后,防火墙规则就会允许双向通信。您不能将防火墙规则配置为拒绝关联的响应流量。Google Cloud 会使用连接跟踪表,将传入数据包与相应的出站数据包相关联。无论所用协议是否支持连接,Google Cloud 都会实施连接跟踪。如果来源与目标之间(针对入站规则)或目标与目的地之间(针对出站规则)允许建立连接,只要防火墙的连接跟踪状态为活跃状态,则所有响应流量都允许通过。如果每 10 分钟至少发送一个数据包,则视为防火墙规则的跟踪状态为活跃状态。

  • Google Cloud 防火墙规则不会重组分段的 TCP 数据包。因此,适用于 TCP 协议的防火墙规则只能应用于第一个分段,因为其中包含 TCP 标头。适用于 TCP 协议的防火墙规则不适用于后续的 TCP 分段。

  • 防火墙规则表中跟踪的最大连接数取决于实例的机器类型支持的有状态连接数。

    实例机器类型 有状态连接的最大数量
    共享核心机器类型 130000 个
    具有 1-8 个 vCPU 的实例 每个 vCPU 130000 个连接
    具有 8 个以上 vCPU 的实例 总共 1040000 (130000×8) 个连接

隐式规则

每个 VPC 网络都有两条隐式防火墙规则。这些规则虽然存在,却不会在 Cloud Console 中显示:

  • 隐式允许出站规则。这条出站规则的操作为 allow、目的地为 0.0.0.0/0,且优先级为可能的最低优先级 (65535)。它允许任何实例向任何目的地发送流量,但不包括 Google Cloud 禁止的流量。出站访问可能受更高优先级的防火墙规则限制。如果没有其他防火墙规则拒绝出站流量,并且实例具有外部 IP 地址或使用 Cloud NAT 实例,则允许访问互联网。如需了解详情,请参阅互联网访问要求

  • 隐式拒绝入站规则。这条入站规则的操作为 deny、来源为 0.0.0.0/0,且优先级为可能的最低优先级 (65535),它通过禁止发往所有实例的流量来保护所有实例。入站访问可能会被更高优先级的规则所允许。默认网络包含的一些额外规则会覆盖此规则,从而允许某些类型的传入流量。

隐式规则不能移除,但它们有着可能限度内的最低优先级。只要您的规则具有更高的优先级(优先级数字小于 65535),您创建的规则就可以覆盖这些规则。由于 deny 规则的优先级高于同优先级的 allow 规则,因此优先级为 65535 的入站 allow 规则永远不会生效。

默认网络中预先填充的规则

默认网络预先填充了一些允许流量传入实例的防火墙规则。这些规则可以根据需要删除或修改:

  • default-allow-internal
    允许网络内实例之间的所有协议和端口的入站连接。此规则具有第二低的优先级 65534,可切实有效地允许来自同一网络中其他虚拟机实例的传入连接。
  • default-allow-ssh
    在 TCP 端口 22 上允许任何来源与网络中的任意实例建立入站连接。此规则的优先级为 65534
  • default-allow-rdp
    在 TCP 端口 3389 上允许任何来源与网络中的任意实例建立入站连接。此规则的优先级为 65534,它允许连接到运行 Microsoft 远程桌面协议 (RDP) 的实例。
  • default-allow-icmp
    允许从任何来源到网络中任意实例的 ICMP 流量。该规则的优先级为 65534,并且支持类似于 ping 的工具。

始终禁止的流量

Google Cloud 始终会禁止下表中描述的流量。您的防火墙规则不能用于允许其中任何一种流量。

始终禁止的流量 适用于
GRE 流量 所有来源和目的地,无论来源或目的地是内部 IP 地址还是外部 IP 地址。
除 TCP、UDP、ICMP、AH、ESP 和 SCTP 以外的协议,用于 Google Cloud 资源的外部 IP 地址 资源类型进一步限制了协议。例如,网络 TCP/UDP 负载平衡仅支持 TCP 和 UDP,适用于协议转发的转发规则仅处理单个协议。
到 TCP 目标端口 25 (SMTP) 的出站流量 来自以下来源的流量:
• 从实例发送到互联网上的外部 IP 地址的流量
• 从实例发送到实例的外部 IP 地址的流量

始终允许的流量

Google Cloud 会在 169.254.169.254 与每个实例一起运行一个本地元数据服务器。此服务器对于实例的操作至关重要,无论您配置何种防火墙规则,实例都可以访问此服务器。元数据服务器为实例提供以下基本服务:

防火墙规则组件

每条防火墙规则均由以下配置组件组成:

  • 流量方向:入站规则适用于从指定来源发送到 Google Cloud 目标的传入连接,而出站规则适用于从目标发送到指定目的地的流量。

  • 数字形式的优先级,用于确定是否应用规则。仅应用其他组件与流量匹配的最高优先级(优先级编号最小)规则;优先级较低并且与此规则存在冲突的规则会被忽略。

  • 对匹配项执行的操作,要么是 allow,要么是 deny,用于确定规则是允许还是禁止流量。

  • 防火墙规则的实施状态:您可以启用和停用防火墙规则,而无需删除这些规则。

  • 一个目标,定义了哪些实例(包括 GKE 集群和 App Engine 柔性环境实例)将应用该规则。

  • 入站规则的来源或出站规则的目的地。

  • 协议(例如 TCP、UDP 或 ICMP)和端口。

组件汇总

入站规则
优先级 操作 实施 目标(用于定义目的地) 来源 协议和端口
065535 的整数(含边界值);默认为 1000
allowdeny enabled(默认)或 disabled 目标参数指定目的地;目的地可以是以下项之一: 以下各项之一:
  • 某个 IPv4 地址范围;默认为“任意”(0.0.0.0/0)
  • 通过网络标记指代的实例
  • 通过服务帐号指代的实例
指定协议,或者同时指定协议和端口。

如果未设置,则该规则适用于所有协议。
出站规则
优先级 操作 实施 目标(用于定义来源) 目的地 协议和端口
065535 的整数(含边界值);默认为 1000
allowdeny enabled(默认)或 disabled 目标参数指定来源;来源可以是以下项之一:
  • VPC 网络中的所有实例
  • 通过网络标记指代的实例
  • 通过服务帐号指代的实例
任意网络或者特定范围的 IPv4 地址;默认为“任意”(0.0.0.0/0)。 指定协议,或者同时指定协议和端口。

如果未设置,则该规则适用于所有协议。

流量方向

防火墙规则的方向可以是入站或出站。方向始终从目标的角度定义。

  • 入站方向描述了从来源发送到目标的流量。入站规则适用于数据包目的地为相应目标的新会话的数据包。

  • 出站方向描述了从目标发送到目的地的流量。出站规则适用于数据包来源为相应目标的新会话的数据包。

  • 如果您未指定方向,Google Cloud 将使用入站方向。

以同一网络中两台虚拟机之间的连接为例。可以使用以下任一防火墙规则来控制从虚拟机 1 到虚拟机 2 的流量:

  • 目标为虚拟机 2 且来源为虚拟机 1 的入站规则。

  • 目标为虚拟机 1 且目的地为虚拟机 2 的出站规则。

优先级

防火墙规则优先级是一个从 065535 的整数(含边界值)。数字越小,优先级越高。如果您在创建规则时未指定优先级,系统会为其分配优先级 1000

在评估不同的防火墙规则时,防火墙规则的相对优先级决定其应用与否。评估逻辑的工作原理如下:

  • 针对给定类型的流量,在适用于目标的规则中,将应用优先级最高的规则。目标特异性并不重要。例如,如果一条针对所有目标且适用于特定端口和协议的入站规则优先级较高,则它会覆盖具有类似定义且适用于同一端口和协议但针对特定目标的规则。

  • 针对给定协议和端口定义,将应用优先级最高的规则,即便协议和端口定义更宽泛。例如,如果一条入站规则允许发往给定目标的所有协议和端口的流量,而其优先级较高,则会覆盖针对同一目标但拒绝 TCP 22 端口的优先级较低的入站规则。

  • 只有在两条规则的优先级相同时,操作为 deny 的规则才会覆盖另一条操作为 allow 的规则。使用相对优先级,可以构建覆盖 deny 规则的 allow 规则,也可以构建覆盖 allow 规则的 deny 规则。

  • 具有相同优先级和相同操作的规则具有相同的结果。但是,评估期间使用的规则是不确定的。通常,除非您启用防火墙规则日志记录,否则使用哪个规则无关紧要。如果您希望日志按照一致且明确定义的顺序显示评估的防火墙规则,请为它们分配唯一的优先级。

以下面的情况为例,该例中存在两条防火墙规则:

  • 来自来源 0.0.0.0/0(任何位置)的入站规则适用于所有目标、所有协议和所有端口,其操作为 deny,优先级为 1000

  • 来自来源 0.0.0.0/0(任何位置)的入站规则适用于具有标记 webserver 的特定目标,针对 TCP 80 端口上的流量,操作为 allow

第二条规则的优先级决定了针对 webserver 目标,是否允许端口 80 上的 TCP 流量:

  • 如果第二条规则的优先级设置为大于 1000 的数字,则该规则的优先级较低,因此系统将应用拒绝所有流量的第一条规则。

  • 如果第二条规则的优先级设置为 1000,则两条规则的优先级相同,因此系统将应用拒绝所有流量的第一条规则。

  • 如果第二条规则的优先级设置为小于 1000 的数字,则该规则的优先级较高,因此允许 TCP 80 端口上发送到 webserver 目标的流量。如果没有其他规则,第一条规则仍会拒绝发送到 webserver 目标的其他类型的流量,以及发送到不带 webserver 标记的实例的所有流量(包括 TCP 80 端口上的流量)。

前面的示例演示了如何使用优先级来创建选择性的 allow 规则和全局 deny 规则,以实现最小权限最佳安全做法。

对匹配项执行的操作

防火墙规则的操作组件会根据该规则的其他组件来确定是允许还是禁止流量:

  • allow 操作允许与其他指定组件匹配的连接。

  • deny 操作禁止与其他指定组件匹配的连接。

实施

您可以通过将一条防火墙规则的状态设置为 enableddisabled,更改是否实施该防火墙规则。在问题排查或者向实例授予临时访问权限时,停用规则非常有用。停用规则、执行测试,然后重新启用规则,这要比删除然后再重新创建规则容易得多。

除非您另行指定,否则所有防火墙规则在创建后都会设为 enabled 状态。您也可以选择在创建规则时将其指定为 disabled 状态。

您可以通过更新规则,将防火墙规则的实施状态在 enableddisabled 之间切换。

在如下情况中,应考虑停用防火墙规则:

  • 问题排查:如果您不确定一条防火墙规则是否确实起到了禁止或允许流量的作用,可以暂时停用该规则,以确定其是否确实发挥了作用。在对一条规则与其他规则结合使用所产生的效果进行问题排查时,这种做法非常有用。
  • 维护:停用防火墙规则可以使定期维护更简单。假设您的防火墙规则会禁止发往目标(例如,目标标记所指代的实例)的传入 SSH 流量,并且该规则处于 enabled 状态。在您需要执行维护工作时,您可以停用该规则。完成维护工作后,再次启用该规则。

目标

对于入站规则,目标参数指定了目的地虚拟机实例,包括 GKE 集群和 App Engine 柔性环境实例。对于出站规则,目标参数指定了来源实例。因此,目标参数始终用于指定 Google Cloud 实例,但目标是流量目的地还是流量来源则取决于规则的方向

您可以使用以下选项之一指定目标:

  • 网络中的所有实例:防火墙规则适用于网络中的所有实例。

  • 目标标记指代的实例:防火墙规则仅适用于具有匹配的网络标记的实例。

  • 目标服务帐号指代的实例:防火墙规则仅适用于使用特定服务帐号的实例。如需了解您可以对每项防火墙规则应用的目标服务帐号数量的上限,请参阅 VPC 配额

如需了解目标标记和目标服务帐号的优势和限制,请参阅按服务帐号过滤与按网络标记过滤

目标和 IP 地址

无论目标是如何指定的,入站防火墙规则的目标都适用于到达 VPC 网络中某个实例的网络接口 (NIC) 的所有流量。入站防火墙规则会对目的地与如下某个 IP 地址匹配的数据包生效:

  • 分配给 VPC 网络中该实例的网络接口的主要内部 IP 地址。

  • VPC 网络中该实例的网络接口上的任何已配置别名 IP 范围

  • 与 VPC 网络中该实例的网络接口相关联的外部 IP 地址。

  • 用于负载平衡或协议转发的与转发规则相关联的内部或外部 IP 地址(如果实例是负载平衡器的后端或协议转发的目标实例)

无论目标是如何指定的,出站防火墙规则的目标都适用于从 VPC 网络中某个虚拟机实例的网络接口 (NIC) 发出的所有流量。

  • 默认情况下,停用 IP 转发。出站防火墙规则会对来源与以下任意一项匹配的数据包生效:
    • 实例的 NIC 的主要内部 IP 地址
    • 实例的 NIC 上任何已配置的别名 IP 地址范围
    • 用于负载平衡或协议转发的与转发规则相关联的内部或外部 IP 地址(如果实例是负载平衡器的后端或协议转发的目标实例)
  • 启用 IP 转发后,虚拟机可以发送任何来源的数据包。

来源或目的地

您可以根据所创建防火墙的方向来指定来源或目的地(但不能同时指定这两者):

  • 对于入站规则,目标参数指定了流量的目的地实例;您不能使用目的地参数。您可以使用来源参数指定来源。

  • 对于出站规则,目标参数指定了流量的来源实例;您不能使用来源参数。您可以使用目的地参数指定目的地。

来源

来源参数仅适用于入站规则。它必须是以下各项之一:

  • 来源 IP 地址范围:您可以将 IP 地址范围指定为数据包的来源。范围可以包括 VPC 网络内部和外部的地址。来源 IP 地址范围可用于定义 Google Cloud 内部和外部的来源。

  • 来源标记:您可以将数据包的来源定义为同一 VPC 网络中虚拟机实例的网络接口的主要内部 IP 地址,并通过匹配的网络标记识别这些来源实例。来源标记仅适用于通过 VPC 网络中的另一个适用实例的网络接口发送的流量。即使外部 IP 地址属于实例,来源标记也不能控制来源为该外部 IP 地址的数据包。如需了解您可以对每项防火墙规则应用的来源标记数量的上限,请参阅 VPC 资源配额

  • 来源服务帐号:您可以将数据包的来源定义为同一 VPC 网络中实例的网络接口的主要内部 IP 地址,并通过使用的服务帐号识别这些来源实例。来源服务帐号仅适用于通过 VPC 网络中的另一个适用实例的网络接口发送的流量。即使外部 IP 地址属于实例,来源服务帐号也不能控制来源为外部 IP 地址的数据包。如需了解您可以对每项防火墙规则应用的来源服务帐号数量的上限,请参阅 VPC 配额

  • 可以使用来源 IP 地址范围和来源标记的组合。

  • 可以使用来源 IP 地址范围和来源服务帐号的组合。

  • 如果将来源 IP 地址范围、来源标记和来源服务帐号全部都省略,则 Google Cloud 会将来源定义为任何 IP 地址 (0.0.0.0/0)。

来源和 IP 地址

使用以下任一方法指定来源时,Google Cloud 会仅将来源视为 VPC 网络中虚拟机网络接口的主要内部 IP 地址:

  • 来源标记
  • 来源服务帐号
  • 包含来源标记或来源服务帐号的来源规范

如果使用来源标记或来源服务帐号,则不包括关联转发规则中的这些 NIC 和 IP 地址的别名 IP 地址范围。

如果您需要将虚拟机的别名 IP 地址范围包括在内,请将其添加到入站规则的来源范围列表中。您可以同时使用来源范围和来源标记;也可以同时使用来源范围和来源服务帐号。

目的地

目的地参数仅适用于出站规则。目的地参数仅接受 IP 地址范围。范围可以包括 VPC 网络内部和外部的地址。

如果您未指定目的地范围,则 Google Cloud 会将目的地定义为所有 IP 地址 (0.0.0.0/0)。

协议和端口

您可以通过指定协议或者同时指定协议和端口来缩小防火墙规则的范围。您可以指定一个协议,也可以指定协议及其端口的组合。如果同时省略协议和端口,防火墙规则将适用于任何协议和任何端口上的所有流量。

为了使防火墙规则具体化,必须先指定协议。如果协议支持端口,则可以有选择地指定端口号或端口范围。但并非所有协议都支持端口。例如,存在 TCP 和 UDP 端口,但不存在 ICMP 端口(ICMP 确实具有不同的 ICMP 类型,但它们不是端口)。

您可以通过使用协议名称(tcpudpicmpespahsctpipip)或其十进制 IP 协议编号来指定协议。

Google Cloud 防火墙规则使用端口信息指代数据包的目的地端口,而不是其来源端口:

  • 对于入站防火墙规则,目的地端口是由规则的目标参数标识的系统上的端口(对于入站规则,目标参数指定了流量的目的地虚拟机)。

  • 对于出站防火墙规则,目的地端口表示由规则的目的地参数标识的系统上的端口。

下表汇总了 Google Cloud 防火墙规则的有效协议和端口指定组合:

指定 示例 说明
无协议和端口 如果未指定协议,防火墙规则适用于所有协议及其适用端口。
协议 tcp 如果指定的协议不包含任何端口信息,防火墙规则适用于该协议及其所有适用端口。
协议和一个端口 tcp:80 如果指定了一个协议和一个端口,防火墙规则适用于该协议的该端口。
协议和端口范围 tcp:20-22 如果指定了协议和端口范围,防火墙规则适用于该协议的端口范围。
组合 icmp,tcp:80
tcp:443
udp:67-69
您可以指定防火墙规则适用的多种协议和端口的组合。如需了解详情,请参阅创建防火墙规则

按服务帐号过滤来源和目标

您可以使用服务帐号创建更具体的防火墙规则:

  • 对于入站和出站规则,您可以使用服务帐号指定目标。

  • 对于入站规则,您可以将传入数据包的来源指定为网络(其中的虚拟机使用特定服务帐号)中任何虚拟机的主要内部 IP 地址。

您必须先创建服务帐号,然后再创建依赖该服务帐号的防火墙规则。

使用服务帐号识别实例的防火墙规则会应用于使用服务帐号新建且与服务帐号关联的实例以及更改了服务帐号的现有实例。更改与实例关联的服务帐号时,您需要停止并重启实例。您可以将服务帐号与单个实例关联,也可以与托管实例组使用的实例模板关联。

按服务帐号过滤与按网络标记过滤

本部分着重强调了在决定要使用服务帐号还是网络标记来定义目标和来源(适用于入站规则)时,需要考虑的要点。

如果您需要严格控制防火墙规则应用于虚拟机的方式,请使用目标服务帐号和来源服务帐号(而不是目标标记和来源标记):

  • 网络标记是一种任意特性。有权修改实例的任何 Cloud Identity and Access Management (Cloud IAM) 成员都可以将一个或多个网络标记与该实例关联。具有项目的 Compute Engine Instance Admin 角色的 Cloud IAM 成员具有此权限。可以修改实例的 Cloud IAM 成员可以更改其网络标记,这可能会更改该实例的适用防火墙规则集。

  • 服务帐号表示与实例关联的身份。一个服务帐号只能与一个实例关联。通过控制为其他 Cloud IAM 成员授予 Service Account User 角色这一操作,您可以控制对服务帐号的访问权限。为了让 Cloud IAM 成员使用服务帐号来启动实例,该成员必须至少具有此服务帐号的 Service Account User 角色以及创建实例的适当权限(例如,具有项目的 Compute Engine Instance Admin 角色)。

在任何防火墙规则中,都不能将服务帐号和网络标记混合搭配使用:

  • 在任何防火墙规则(入站或出站)中,都不能将目标服务帐号和目标标记一起使用。

  • 以下是您按目标标记或目标服务帐号指定目标时,对于入站防火墙规则无效的来源:

    目标 无效来源
    目标标记 来源服务帐号

    来源 IP 地址范围和来源服务帐号的组合
    目标服务帐号 来源标记

    来源 IP 地址范围和来源标记的组合

服务帐号和网络标记的操作注意事项包括:

  • 更改实例的服务帐号时,需要停止并重启实例。可以在实例运行时添加或移除标记。

  • 您可以对防火墙规则指定目标服务帐号、来源服务帐号、目标网络标记和来源网络标记数量的上限。如需了解详情,请参阅 VPC 资源配额

  • 如果通过网络标记标识实例,防火墙规则适用于实例的主要内部 IP 地址。

使用场景

以下用例演示了防火墙规则的工作原理。这些示例中均启用了所有防火墙规则。

入站场景

入站防火墙规则控制从来源发送到 VPC 网络内目标实例的传入连接。入站规则的来源可以定义为以下各项之一:

  • 某个 IPv4 地址范围;默认为“任意”(0.0.0.0/0)
  • 您的 VPC 网络中由服务帐号标识的其他实例
  • 您的 VPC 网络中由网络标记标识的其他实例

默认来源是任意 IP 地址 (0.0.0.0/0)。如果您要控制 VPC 网络之外的来源(包括互联网上的其他来源)的传入连接,请使用某个 CIDR 格式的 IPv4 地址范围。

操作为 allow 的入站规则会根据其他规则组件允许传入流量。除了指定规则的来源和目标之外,还可以将规则限制为仅应用于特定协议和端口。同样,具有 deny 操作的入站规则可根据防火墙规则组件禁止传入流量,从而用于保护实例。

入站示例

下图展示了可以通过防火墙规则控制的入站连接的一些示例。这些示例在规则分配中使用目标参数将这些规则应用于特定实例。

入站防火墙规则示例(点击可放大)
入站防火墙规则示例(点击可放大)
  • 优先级为 1000 的入站规则适用于虚拟机 1。这条规则允许来自任意来源 (0.0.0.0/0) 的传入 TCP 流量。它允许来自 VPC 网络中其他实例的 TCP 流量,但要求其遵守适用于这些实例的相应出站规则。虚拟机 4 能够通过 TCP 与虚拟机 1 进行通信,因为虚拟机 4 不具有禁止此类通信的出站规则(仅隐式允许出站规则适用)。由于虚拟机 1 具有外部 IP 地址,这条规则还允许来自互联网上外部主机的传入 TCP 流量。

  • 虚拟机 2 没有指定入站防火墙规则,因此隐式拒绝入站规则会禁止所有传入流量。系统会禁止来自网络中其他实例的连接,无论其他实例的出站规则如何。由于虚拟机 2 具有外部 IP 地址,因此存在从互联网上的外部主机到该虚拟机的一条路径,但隐式拒绝规则也会拒绝外部传入流量。

  • 优先级为 1000 的入站规则适用于虚拟机 3。此规则允许来自网络中带有网络标记 client 的实例(如虚拟机 4)的 TCP 流量。系统允许虚拟机 4虚拟机 3 的 TCP 流量,因为虚拟机 4 不具有禁止此类通信的出站规则(仅隐式允许出站规则适用)。由于虚拟机 3 没有外部 IP 地址,因此没有从互联网上外部主机到此虚拟机的路径。

出站情景

出站防火墙规则控制您的 VPC 网络中目标实例的传出连接。具有 allow 操作的出站规则会根据其他规则组件允许来自实例的流量。例如,您可以在指定的协议和端口上,允许发送到特定目的地(例如某个 IPv4 地址范围)的出站流量。类似地,具有 deny 操作的出站规则会以规则的其他组件为依据禁止流量。

每条出站规则都需要一个目的地。默认目的地是任意 IP 地址 (0.0.0.0/0),但您可以使用 CIDR 格式的 IPv4 地址范围,创建更具体的目的地。在指定 IPv4 地址范围时,您可以控制发送到网络中的实例以及网络外目的地(包括互联网上的目的地)的流量。

出站示例

下图展示了可以通过防火墙规则控制的出站连接的一些示例。这些示例在规则分配中使用目标参数将这些规则应用于特定实例。

出站防火墙规则示例(点击可放大)
出站防火墙规则示例(点击可放大)
  • 虚拟机 1 没有指定出站防火墙规则,因此隐式允许出站规则允许该虚拟机将流量发送到任何目的地。该规则允许与 VPC 网络中其他实例之间的连接,但要求其遵守适用于这些实例的相应入站规则。虚拟机 1 可以将流量发送到虚拟机 4,因为虚拟机 4 具有允许来自任何 IP 地址范围的传入流量的入站规则。由于虚拟机 1 具有外部 IP 地址,因此可以将流量发送到互联网上的外部主机。由于防火墙规则是有状态的,所以允许虚拟机 1 所发送流量的传入响应。

  • 优先级为 1000 的出站规则适用于虚拟机 2。此规则拒绝发往所有目的地 (0.0.0.0/0) 的全部传出流量。系统会禁止发送到 VPC 中其他实例的传出流量,无论适用于其他实例的入站规则如何。尽管虚拟机 2 具有外部 IP 地址,但此防火墙规则会禁止其发送到互联网上外部主机的传出流量。

  • 优先级为 1000 的出站规则适用于虚拟机 3。此规则禁止其出站 TCP 流量发送到 192.168.1.0/24 IP 地址范围内的任何目的地。虽然虚拟机 4 的入站规则允许所有传入流量,但虚拟机 3 仍不能向虚拟机 4 发送 TCP 流量。不过,由于出站规则仅适用于 TCP 协议,因此虚拟机 3 可不受限制地将 UDP 流量发送到虚拟机 4

    此外,虚拟机 3 可以将任意流量发送到 VPC 网络中 192.168.1.0/24 IP 地址范围以外的其他实例,前提是这些实例具有允许此类流量的入站规则。由于它没有外部 IP 地址,因此也就没有将流量发送到 VPC 网络以外的路径。

后续步骤