你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 NNI 和第 3 层隔离域外部网络创建访问控制列表 (ACL)

访问控制列表 (ACL) 是一组规则,用于调节网络内的入站和出站数据包流。 Azure 的关系网络结构服务提供基于 API 的机制,用于为网络到网络互连和第 3 层隔离域外部网络配置 ACL。 本指南概述了创建 ACL 的步骤。

创建访问控制列表 (ACL)

若要创建 ACL 并定义其属性,可以使用 az networkfabric acl create 命令。 相关步骤如下:

先决条件

  1. 设置订阅(如有必要)

如果你有多个订阅,并且需要将一个订阅设置为默认值,则可以执行以下操作:

az account set --subscription <subscription-id>
  1. 创建 ACL
    az networkfabric acl create --resource-group "<resource-group>" --location "<location>" --resource-name "<acl-name>" --annotation "<annotation>" --configuration-type "<configuration-type>" --default-action "<default-action>" --match-configurations "[{matchConfigurationName:<match-config-name>,sequenceNumber:<sequence-number>,ipAddressType:<IPv4/IPv6>,matchConditions:[{ipCondition:{type:<SourceIP/DestinationIP>,prefixType:<Prefix/Exact>,ipPrefixValues:['<ip-prefix1>', '<ip-prefix2>', ...]}}],actions:[{type:<Action>}]}]"
参数 说明
资源组 指定网络结构的资源组。
位置 定义在其中创建 ACL 的位置。
资源名称 提供 ACL 的名称。
注释 (可选)添加 ACL 的说明或注释。
配置类型 指定是要以内联方式还是使用文件完成配置。
默认操作 定义找不到匹配项时要执行的默认操作。
匹配配置 定义用于流量匹配的条件和操作。
操作 指定要根据匹配条件执行的操作。

参数用法指南

下表提供了创建 ACL 时的参数用法指南:

参数 说明 示例或范围
defaultAction 定义要执行的默认操作 "defaultAction": "Permit"
resource-group 网络结构的资源组 nfresourcegroup
resource-name ACL 的名称 example-ingressACL
vlanGroups VLAN 组的列表
vlans 需要匹配的 VLAN 列表
match-configurations 匹配配置的名称 example_acl
matchConditions 需要匹配的条件
ttlValues TTL [生存时间] 0-255
dscpMarking 需要匹配的 DSCP 标记 0-63
片段 指定 IP 分段数据包 范围:1-8191
示例:[1, 5, 1250-1300, 8000-8191]
portCondition 需要匹配的端口条件
portType 需要匹配的端口类型 示例:SourcePort
ports 需要匹配的端口号 范围:0-65535
示例:[1, 10, 500, 1025-1050, 64000-65535]
protocolTypes 需要匹配的协议 [tcp, udp, range[1-2, 1, 2]]
vlanMatchCondition 需要匹配的 VLAN 匹配条件
layer4Protocol 第 4 层协议 应为 TCP 或 UDP
ipCondition 需要匹配的 IP 条件
actions 要根据匹配条件执行的操作 示例:permit
configuration-type 配置类型(内联或文件) 示例:inline

注意

  • 内联端口和内联 VLAN 是使用 azcli 静态定义的。
  • PortGroupNames 和 VlanGroupNames 是动态定义的。
  • 不允许将内联端口与 portGroupNames 组合在一起,这同样适用于内联 VLAN 和 VLANGroupNames。
  • 不能将 IPGroupNames 和 IpPrefixValues 组合在一起。
  • 出口 ACL 不支持某些选项,例如 IP 选项、IP 长度、片段、以太网类型、DSCP 标记和 TTL 值。
  • 入口 ACL 不支持以下选项:etherType。
  • 端口输入可以是 port-numberrange-of-ports
  • 分段输入可以是 port-numberrange-of-ports
  • 不支持在永久网络上配置动态匹配的 ACL。

ACL 创建的示例有效负载

az networkfabric acl create --resource-group "example-rg" --location "eastus2euap" --resource-name "example-Ipv4ingressACL" --annotation "annotation" --configuration-type "Inline" --default-action "Deny" --match-configurations "[{matchConfigurationName:example-match,sequenceNumber:1110,ipAddressType:IPv4,matchConditions:[{ipCondition:{type:SourceIP,prefixType:Prefix,ipPrefixValues:['10.18.0.124/30','10.18.0.128/30','10.18.30.16/30','10.18.30.20/30']}},{ipCondition:{type:DestinationIP,prefixType:Prefix,ipPrefixValues:['10.18.0.124/30','10.18.0.128/30','10.18.30.16/30','10.18.30.20/30']}}],actions:[{type:Count}]}]"

示例输出

{
  "administrativeState": "Disabled",
  "annotation": "annotation",
  "configurationState": "Succeeded",
  "configurationType": "Inline",
  "defaultAction": "Deny",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Fab3LabNF-4-0/providers/Microsoft.ManagedNetworkFabric/accessControlLists/L3domain091123-Ipv4egressACL",
  "location": "eastus2euap",
  "matchConfigurations": [
    {
      "actions": [
        {
          "type": "Count"
        }
      ],
      "ipAddressType": "IPv4",
      "matchConditions": [
        {
          "ipCondition": {
            "ipPrefixValues": [
              "10.18.0.124/30",
              "10.18.0.128/30",
              "10.18.30.16/30",
              "10.18.30.20/30"
            ],
            "prefixType": "Prefix",
            "type": "SourceIP"
          }
        },
        {
          "ipCondition": {
            "ipPrefixValues": [
              "10.18.0.124/30",
              "10.18.0.128/30",
              "10.18.30.16/30",
              "10.18.30.20/30"
            ],
            "prefixType": "Prefix",
            "type": "DestinationIP"
          }
        }
      ],
      "matchConfigurationName": "example-Ipv4ingressACL ",
      "sequenceNumber": 1110
    }
  ],
  "name": "example-Ipv4ingressACL",
  "provisioningState": "Succeeded",
  "resourceGroup": "Fab3LabNF-4-0",
  "systemData": {
    "createdAt": "2023-09-11T10:20:20.2617941Z",
    "createdBy": "user@email.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-09-11T10:20:20.2617941Z",
    "lastModifiedBy": "user@email.com",
    "lastModifiedByType": "User"
  },
  "type": "microsoft.managednetworkfabric/accesscontrollists"
}

注意

创建 ACL 后,请务必记下 ACL 参考 ID 以供进一步参考。

后续步骤

将访问控制列表 (ACL) 应用于 Azure Fabric 中的 NNI