子网划分核心是让IP成为策略锚点,按业务域而非物理位置划分租户独立子网(如10.100.10.0/24),再分层隔离前后端与数据库,并用VLSM弹性分配掩码,结合VLAN、ACL和API网关实现三层强隔离。

子网划分在多租户或多业务线场景下,核心不是“切得越碎越好”,而是让每个子网承载明确的业务语义、安全等级和运维边界。关键在于把IP地址从“资源容器”升级为“策略锚点”——每个网段本身就能表达“这是谁的、能访问什么、受什么规则约束”。
明确租户/业务角色与网络边界的映射关系
不能按物理位置(如楼层、机柜)或设备类型(如PC、手机)粗粒度划分,而要以业务域为单位定义逻辑边界:
- 每个租户独占一个独立子网段,例如
10.100.10.0/24(租户A)、10.100.20.0/24(租户B) - 同一租户内再分层:前端服务网段(
10.100.10.0/26)、后端API网段(10.100.10.64/26)、数据库网段(10.100.10.128/26) - 共享基础设施(如认证中心、日志平台)使用统一管理网段(如
10.100.255.0/28),通过ACL或防火墙策略控制各租户的访问权限
这种结构让安全策略可直接基于目标子网编写,比如“仅允许 10.100.10.0/24 访问 10.100.255.10 的443端口”,无需逐台维护主机列表。
采用VLSM+层级前缀实现弹性扩展
避免所有子网统一用 /24,应根据实际规模选择不同掩码长度:
- 租户级主干段用
/16(如10.100.0.0/16),预留 256 个/24子网供未来新增租户 - 中型业务线用
/23(510主机位),支撑测试+预发+生产三环境共存 - 数据库、中间件等关键组件用
/27或/28(30–14可用IP),限制暴露面,便于绑定固定IP做白名单 - 专线互联、负载均衡健康检查等点对点链路用
/31(RFC 3021),零浪费、无广播
这样既防止地址枯竭,又避免小业务占用大网段造成ARP泛洪或路由表膨胀。
隔离机制必须与子网强绑定,不止靠IP划分
光有不同网段不够,需配套实施三层隔离:
- 二层隔离:每个租户子网配置独立VLAN或VXLAN Segment,禁止跨VLAN二层通信
-
三层策略:在网关(Linux软路由或硬件防火墙)上启用严格路由+状态化ACL,例如默认拒绝所有跨租户流量,只显式放行授权接口(如
10.100.10.0/24 → 10.100.255.10:443) - 应用层收敛:租户间调用必须经API网关,禁止直连数据库或内部服务地址;网关依据源IP网段自动打标租户ID,下游服务据此做RBAC鉴权
示例:某SaaS平台将财务模块(租户A)和营销模块(租户B)分别部署在
10.20.1.0/25和10.20.2.0/25,网关策略中写明“10.20.1.0/25禁止访问10.20.2.0/25的任何端口”,同时所有跨模块日志均带租户标签,审计时可直接过滤网段溯源。
Linux网关与容器平台需协同落地
多租户环境常由Linux服务器担当边界网关或K8s节点,配置必须兼顾临时验证与永久生效:
- 临时验证:
ip addr add 10.100.10.1/24 dev eth0 && ip route add 10.100.20.0/24 via 10.100.10.254,立刻ping通对端租户网关确认连通性 - 永久配置:Ubuntu用Netplan指定per-network路由和策略路由;K8s中通过CNI插件(如Calico)将租户子网映射为NetworkPolicy的
ipBlock,实现Pod级网段控制 - DNS与DHCP联动:为每个租户子网配置独立DHCP作用域,并在DNS中设置租户专属域名(如
api.tenant-a.svc.cluster.local解析到10.100.10.100),避免IP硬编码
不复杂但容易忽略的是:所有租户子网必须纳入统一地址管理系统(如NetBox或自建CMDB),每次新增租户前先查重、校验CIDR是否嵌套、确认上游路由已发布——否则一个重复网段就可能导致跨租户流量静默丢弃。

















