要提供网络层访问控制列表,最简单且最可扩展的方法是通过指向 IP 组的网络安全策略。IP 组可以由多个虚拟服务使用在组中添加一个 IP 后,具有阻止 IP 组地址列表的网络安全策略的所有虚拟服务将阻止该地址。

创建 IP ACL

使用以下步骤设置环境:

  1. NSX Advanced Load Balancer UI 中,导航到模板 > > IP 组,然后创建一个新的 IP 组。

  2. 创建或编辑一个虚拟服务。

  3. 导航到规则 > 网络安全策略,然后添加一个新的网络安全规则。将匹配设置为 IP 地址,然后从下拉菜单中选择新的 IP 组。

有关通过 DataScript 创建 IP 访问控制列表的更多信息,请参见“阻止 IP 地址访问虚拟服务”。

检索 IP 组的 UUID

要更新 ACL 列表,请先获取 IP 组的 UUID。可以针对对象的名称进行 API 调用。对于 API 调用,UUID 优先于对象名称,因为它们是唯一的。在以下示例中,控制器的集群 IP 为 10.1.1.1,IP 组命名为 blocklist

https://10.1.1.1/api/ipaddrgroup?name=blacklist

从示例查询中返回了以下 JSON 结果:

{
   "count": 1,
   "results": [
      {
         "url": "https://10.1.1.1/api/ipaddrgroup/ipaddrgroup-dc43bd65-7227-4585-8213-34c84c9b1c3b",
         "uuid": "ipaddrgroup-dc43bd65-7227-4585-8213-34c84c9b1c3b",
         "name": "Blacklist"
         "tenant_ref": "https://10.1.1.1/api/tenant/admin",
         "prefixes": [
            {
               "ip_addr": {
                  "type": "V4",
                  "addr": "10.128.0.0"
               },
            "mask": 16
            },
         ]
      }
   ]
}

可以附加 &fields=uuid 以使查询筛选更具体。

在该示例中,在 IP 组中已存在 IP 网络 10.128.0.0/16

通过 API 修改 IP 组

要将 IP 网络 10.0.0.0/16 和 IP 范围 192.168.0.1-192.168.1.250 添加到 IP 组中,请针对 IP 组 URL https://10.1.1.1/api/ipaddrgroup/ipaddrgroup-dc43bd65-7227-4585-8213-34c84c9b1c3b 发出 PUT 请求,其中包含以下负载:

{
   "url": "https://10.1.1.1/api/ipaddrgroup/ipaddrgroup-dc43bd65-7227-4585-8213-34c84c9b1c3b",
   "uuid": "ipaddrgroup-dc43bd65-7227-4585-8213-34c84c9b1c3b",
   "name": "Blacklist",
   "tenant_ref": "https://10.1.1.1/api/tenant/admin",
   "ranges": [
      {
         "begin": {
            "type": "V4",
            "addr": "192.168.1.1"
         },
         "end": {
            "type": "V4",
            "addr": "192.168.1.250"
         }
      }
   ],
   "prefixes": [
      {
         "ip_addr": {
            "type": "V4",
            "addr": "10.128.0.0"
         },
         "mask": 16
         },
      {
         "ip_addr": {
            "type": "V4",
            "addr": "10.0.0.0"
         },
      "mask": 16
      }
   ]
}
注:

所需的所有配置(包括以前配置的 IP 地址)必须包含在 PUT 请求中。