3. 网络层隔离与访问控制
在 ONTAP 中,网络层隔离并不是靠单一功能完成的,而是由一组彼此配合的对象共同构成:IPspace 提供最外层的路由与地址空间隔离,广播域 决定二层可达范围,子网 把 IP 地址池与网关绑定到具体广播域,LIF 以角色决定对外提供哪种协议服务,防火墙策略 则在 LIF 上按服务与地址做细粒度放行。理解这五者的层次关系,是设计多租户安全隔离的基础。
一、五层隔离对象的职责与依赖关系
从下往上理解更清晰:IPspace 是顶层容器,每个 IPspace 拥有独立的 IP 地址空间、路由表和广播域集合,默认存在一个 Default IPspace。广播域属于某个 IPspace,代表一个二层网络(通常对应一个 VLAN),同一广播域内的 LIF 可以二层互通。子网属于某个广播域,定义一段 IP 范围与网关,LIF 创建时从子网中分配地址。LIF 是实际承载流量的逻辑接口,其角色(role)决定它提供什么服务。防火墙策略绑定在 LIF 上,控制该 LIF 允许哪些服务、哪些源地址访问。
关键约束是:跨 IPspace 的 LIF 默认不能二层互通,也不能直接三层路由。这正是租户隔离的核心机制——把不同租户放入不同 IPspace,即使物理上共用同一套集群和端口,逻辑上也无法互相访问,除非显式配置跨 IPspace 路由或使用外部路由器。
二、LIF 角色决定服务暴露面
LIF 角色不是装饰性标签,它直接决定该 LIF 能承载哪些协议。常见角色包括:data(NFS、CIFS/SMB、iSCSI 等数据访问)、mgmt(集群/节点管理、SSH、HTTPS)、cluster(集群内部通信)、intercluster(跨集群复制与 SnapMirror)、node-mgmt(节点管理)等。设计原则是按用途分离 LIF:数据流量与管理流量不共用 LIF,避免管理面暴露在数据网络中。例如为租户 A 创建 data_lif_A(角色 data,位于 BD_A_Data)和 mgmt_lif_A(角色 mgmt,位于 BD_A_Mgmt),两者处于不同广播域,天然二层隔离。
三、广播域与子网的绑定关系
广播域是二层概念,子网是三层概念,二者必须显式绑定。创建子网时需指定所属广播域、IP 范围、网关和掩码。一个广播域可以包含多个子网(例如同一 VLAN 内划分多个网段),但一个子网只能属于一个广播域。LIF 创建时从子网中分配 IP,因此子网是 LIF 地址的来源,广播域是 LIF 二层可达范围的边界。若把两个租户的 LIF 放入同一广播域,即使 IP 不同,它们也能二层互通,隔离即失效——这是多租户设计中最常见的错误。
四、防火墙策略:LIF 级别的服务与源地址控制
ONTAP 防火墙策略绑定在 LIF 上,由若干规则组成,每条规则指定服务(如 ssh、https、nfs、cifs、ndmp、snmp 等)和允许的源地址(0.0.0.0/0 表示任意)。策略按顺序匹配,命中即放行。默认策略 mgmt 仅允许管理服务,data 允许数据服务。实际配置中应遵循最小权限:管理 LIF 只放行运维网段,数据 LIF 只放行对应租户客户端网段。
# 创建租户A数据LIF的防火墙策略
network interface firewall policy create -policy fw_A_data \
-rules "nfs,cifs" -allow-list 10.20.0.0/16
# 将策略应用到LIF
network interface modify -vserver svm_A -lif data_lif_A \
-firewall-policy fw_A_data
# 查看LIF与策略绑定
network interface show -vserver svm_A -fields firewall-policy
五、IPspace 划分与跨租户通信限制
IPspace 是最高层隔离单元。每个 IPspace 有独立的路由表、独立的广播域命名空间、独立的 IP 地址池。不同 IPspace 中的 LIF 即使 IP 相同也不冲突,且默认无法互相访问。跨租户通信需要显式打通,通常有两种方式:一是通过外部路由器做三层转发,二是在 ONTAP 内配置跨 IPspace 路由(需谨慎,会削弱隔离)。
典型多租户划分示例:为租户 A 创建 TenantA_IPspace,包含 BD_A_Data(VLAN 110)和 BD_A_Mgmt(VLAN 111);为租户 B 创建 TenantB_IPspace,包含 BD_B_Data(VLAN 210)和 BD_B_Mgmt(VLAN 211)。两个 IPspace 的地址段可以重叠(如都用 10.10.10.0/24),因为路由表独立。这样即使物理端口共用,租户之间也无法二层或三层直达。
六、验证隔离是否生效
配置完成后应逐层验证。二层验证:从租户 A 客户端 ping 租户 B 的 LIF 地址,应不通。三层验证:检查 network route show 确认各 IPspace 路由表独立。防火墙验证:用 network interface firewall policy show 确认策略规则与源地址范围正确。LIF 角色验证:network interface show -fields role 确认数据与管理 LIF 角色分离。若发现跨租户可达,优先排查是否误入同一广播域或是否配置了跨 IPspace 路由。
| 隔离层 | 对象 | 隔离维度 | 典型配置 |
|---|---|---|---|
| 顶层 | IPspace | 路由表、地址空间 | TenantA_IPspace / TenantB_IPspace |
| 二层 | 广播域 | VLAN、二层可达范围 | BD_A_Data (VLAN 110) |
| 三层 | 子网 | IP 范围、网关 | 10.10.10.0/24 |
| 接口 | LIF 角色 | 协议服务类型 | data / mgmt |
| 策略 | 防火墙策略 | 服务 + 源地址 | fw_A_data |
总结来看,ONTAP 网络隔离是“IPspace 定边界、广播域定二层、子网定三层、LIF 定服务、防火墙定细粒度”的层层递进结构。设计时先按租户划分 IPspace,再按用途划分广播域,然后规划子网与 LIF 角色,最后用防火墙策略收紧访问。任何一层缺失或错配,都会让隔离效果打折扣。