网络安全组如何筛选网络流量

可以使用 Azure 网络安全组 (NSG) 来筛选 Azure 虚拟网络中出入 Azure 资源的网络流量。 网络安全组包含安全规则,这些规则可允许或拒绝多种 Azure 资源的入站和出站网络流量。 可以为每项规则指定源和目标、端口以及协议。

可以将资源从多个 Azure 服务部署到一个 Azure 虚拟网络中。 如需完整列表,请参阅可部署到虚拟网络中的服务。 可将零个或一个网络安全组与虚拟机中的每个虚拟网络子网网络接口相关联。 可将同一网络安全组关联到选定的任意数量的子网和网络接口。

下图描述了如何使用不同的方案来部署网络安全组,以便网络流量通过 TCP 端口 80 出入 Internet:

Diagram of NSG processing.NSG 处理的关系图。

请参阅上图,了解 Azure 如何处理入站和出站规则。 下图说明了网络安全组如何处理流量筛选。

入站流量

对于入站流量,Azure 先处理与某个子网相关联的网络安全组(如果有)中的规则,然后处理与网络接口相关联的网络安全组(如果有)中的规则。 此过程也包括子网内流量。

  • VM1NSG1 处理安全规则,因为 NSG1Subnet1 相关联, VM1 驻留在 Subnet1 中。 DenyAllInbound 默认安全规则会阻止流量,除非规则显式允许端口 80 入站。 与 NSG2 关联的网络接口不会评估阻止的流量。 但是,如果 NSG1 在其安全规则中允许端口 80, 则 NSG2 会评估流量。 若要允许端口 80 到虚拟机, NSG1NSG2 必须包含允许来自 Internet 的端口 80 的规则。

  • VM2:系统会处理 NSG1 中的规则,因为 VM2 也在 Subnet1 中。 VM2 没有关联到其网络接口的网络安全组,因此会接收 NSG1 所允许的所有流量,或者会受到 NSG1 所拒绝的所有流量拒绝。 当网络安全组关联到子网时,对于同一子网中的所有资源,流量要么被允许,要么被拒绝。

  • VM3:由于没有网络安全组关联到 Subnet2,系统允许流量进入子网并由 NSG2 处理,因为 NSG2 关联到已附加到 VM3 的网络接口。

  • VM4:阻止流量发往 VM4,因为网络安全组没有关联到 Subnet3 或虚拟机中的网络接口。 如果没有关联的网络安全组,则阻止所有网络流量通过子网和网络接口。 默认情况下,具有标准公共 IP 地址的虚拟机是安全的。 若要从 Internet 流出流量,必须将 NSG 分配到虚拟机的子网或 NIC。 有关详细信息,请参阅 IP 地址版本

出站流量

对于出站流量,Azure 先处理与某个网络接口相关联的网络安全组(如果有)中的规则,然后处理与子网相关联的网络安全组(如果有)中的规则。 此过程也包括子网内流量。

  • VM1:系统会处理 NSG2 中的安全规则。 除非创建安全规则以拒绝从端口 80 到 Internet 的出站流量,否则NSG1NSG2中的AllowInternetOutbound默认安全规则都会允许流量。 如果NSG2在其安全规则中拒绝端口 80,则会拒绝流量,并且NSG1永远不会对其进行评估。 若要拒绝从虚拟机到端口 80 的流量,则两个网络安全组或其中的一个必须有一条规则来拒绝从端口 80 到 Internet 的流量。

  • VM2:所有流量都会通过网络接口发送到子网,因为附加到 VM2 的网络接口没有关联的网络安全组。 系统会处理 NSG1 中的规则。

  • VM3:如果NSG2在其安全规则中拒绝端口 80,则会拒绝流量。 如果NSG2不拒绝端口 80,NSG2中的AllowInternetOutbound默认安全规则会允许流量,因为没有与Subnet2关联的网络安全组。

  • VM4:允许来自 VM4 的所有网络流量,因为网络安全组没有关联到已附加到虚拟机的网络接口,也没有关联到 Subnet3

子网内部流量

需要注意的是,与子网关联的 NSG 中的安全规则可能会影响子网中 VM 之间的连接。 默认情况下,同一子网中的虚拟机可以基于默认 NSG 规则进行通信,该 NSG 规则允许子网内流量。 如果将规则添加到 NSG1 ,拒绝所有入站和出站流量, 则 VM1VM2 无法相互通信。

可以通过查看网络接口的有效安全规则,轻松查看已应用到网络接口的聚合规则。 还可以使用 Azure 网络观察程序中的 IP 流验证功能来确定是否允许发往或发自网络接口的通信。 可以使用 IP 流验证以确定是允许还是拒绝通信。 此外,使用 IP 流验证以显示负责允许或拒绝流量的网络安全规则的标识。

提示

建议将网络安全组关联到子网或网络接口,但不要二者都关联,除非你有特定的理由来这样做。 与子网关联的网络安全组中的规则可能与与网络接口关联的网络安全组中的规则冲突。 你可能遇到需要故障排除的意外通信问题。

后续步骤