首页/云/Kubernetes 速查/ipBlock 管控外部网段
网络与服务55 条

ipBlock 管控外部网段

针对集群外 IP 段做放行/排除(cidr + except):数据库白名单、第三方 API 出口控制等场景使用,注意与 SNAT 的交互。

Kubernetes 速查云更新于 2026-10-13

ipBlock 管的是集群外地址

NetworkPolicy 的 from 与 to 里除了用选择器挑 Pod 和命名空间,还能用 ipBlock 直接按 CIDR 放行或排除集群外的地址:cidr 给出网段,except 排除其中一部分,常见于「只允许办公网访问数据库」「只允许出站到指定第三方接口」。它匹配的是数据包里的源 IP 与目的 IP,流量在出节点时若被 SNAT 改写,规则命中的地址就和发起方真实地址不同,配置前必须先看清链路。

基本信息

适用平台支持 NetworkPolicy 的 CNI 插件,ipBlock 的实现完整度因插件而异
关键结构ipBlock.cidr 与 ipBlock.except
except 约束必须是 cidr 的子集,写反会被校验拒绝
使用位置ingress.from 表示入站来源,egress.to 表示出站目的
前置条件目标 Pod 必须被某条 NetworkPolicy 的 podSelector 选中

典型使用场景

  • 数据库白名单:只允许固定办公网段与应用网段访问
  • 外部依赖管控:只放行到指定第三方 API 的出站流量
  • 隔离扫描来源:排除已知异常网段,降低无效连接干扰
  • 混合云互通:按对端 VPC 网段精确放行而不是整段开放
  • 分期迁移:用 ipBlock 记录历史来源,逐步过渡到按身份放行

ipBlock 示例

ipBlock 示例
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: db-allow-office
  namespace: prod
spec:
  podSelector:
    matchLabels:
      app: mysql
  policyTypes: ["Ingress"]
  ingress:
    - from:
        - ipBlock:
            cidr: 203.0.113.0/24        # 放行该网段
            except:
              - 203.0.113.128/25        # 但排除其中一半
      ports:
        - protocol: TCP
          port: 3306

常见场景与要点

场景写法要点注意
放行办公网访问from.ipBlock.cidr 写办公网段先确认出口 IP 是否固定
排除部分地址except 必须是 cidr 的子集写反会被校验拒绝
限制出站到第三方egress.to.ipBlock 写对端网段注意出节点时的地址改写
默认拒绝后放行先建默认拒绝策略再逐条放行漏掉 DNS 出站会导致解析失败
只有被 NetworkPolicy 选中的 Pod 才受约束:完全没被任何策略选中的 Pod 默认全通,因此「加了策略却没效果」多数是选择器没对上,而不是 ipBlock 写错。
集群外目标经过 SNAT 时,规则匹配的是改写后的地址:先用抓包或 CNI 的可观测能力确认真实来源,再固化白名单,否则要么仍然不通,要么放行过宽。

易错点

  • 以为 NetworkPolicy 默认拒绝:未被策略选中的 Pod 依然是全通状态,需要显式建立默认拒绝
  • 禁止出站后忘记放行 DNS:应用解析失败,表现为域名不通而直连 IP 正常,排查方向容易被带偏
  • except 写在 cidr 范围之外:策略被拒绝或行为与预期不符,需要逐条核对网段关系
  • 按发起方的真实地址配置却忽略链路改写:白名单写完仍然不通,或为了打通而放宽成整段放行

数据来源与参考

  • Kubernetes 官方文档 · NetworkPolicy(ipBlock)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌