You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为OpenShift路由/服务配置IP白名单?及Host头绕过问题咨询

我来帮你搞定这两个OpenShift的问题,结合实际运维经验给你具体的解决方案:

1. 为OpenShift路由/服务配置IP白名单

你有两种主流方式来实现,分别对应路由层面和服务网络层面的控制:

  • 路由注解直接配置白名单
    OpenShift的HAProxy路由器支持通过注解直接给特定路由添加IP白名单,这是最直接的方式。针对private.example.com对应的路由,添加haproxy.router.openshift.io/ip_whitelist注解,值为允许的源IP/CIDR列表(逗号分隔)。示例YAML如下:

    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      name: private-service-route
      annotations:
        haproxy.router.openshift.io/ip_whitelist: "192.168.1.0/24,10.0.0.0/8" # 替换成你的白名单IP段
    spec:
      host: private.example.com
      to:
        kind: Service
        name: private-service
      tls:
        termination: edge
    

    应用这个配置后,HAProxy会直接过滤掉不在白名单内的请求,不需要依赖外部防火墙。

  • NetworkPolicy实现服务级别的IP限制
    如果需要更底层的网络控制(比如限制到Pod层面),可以用Kubernetes的NetworkPolicy对象,前提是你的OpenShift集群使用的网络插件支持(默认OVN-Kubernetes是支持的)。示例配置如下:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: private-service-allowlist
      namespace: your-private-namespace # 替换成私有服务所在的命名空间
    spec:
      podSelector:
        matchLabels:
          app: private-service # 替换成私有服务Pod的标签
      policyTypes:
      - Ingress
      ingress:
      - from:
        - ipBlock:
            cidr: 192.168.1.0/24 # 白名单IP段
        - ipBlock:
            cidr: 10.0.0.0/8
        ports:
        - protocol: TCP
          port: 8080 # 私有服务的监听端口
    

    这个策略会只允许指定IP段的流量访问私有服务的Pod。

2. 解决Host头绕过白名单的问题

你遇到的问题本质是外部防火墙只校验了请求的目标IP,没检查Host头,而OpenShift路由器是根据Host头来转发请求的。可以从三个层面来堵这个漏洞:

  • 在OpenShift路由层面强化Host绑定
    首先确保每个Route的spec.host严格匹配对应的域名,没有使用通配符(除非必要)。另外,给公网路由添加注解,明确拒绝携带私有域名Host头的请求,或者给私有路由添加更严格的校验:比如私有路由只响应private.example.com的Host头(这其实是Route的默认行为,但可以通过HAProxy注解进一步强化),比如添加haproxy.router.openshift.io/request-headers-set注解来强制校验Host头。

  • 外部防火墙添加Host头校验规则
    修改外部防火墙的规则,不仅检查源IP和目标IP,还要检查请求的Host头:

    • 对于目标IP 10.0.0.2(私有域名对应IP),只允许来自白名单IP且Host头为private.example.com的请求
    • 对于目标IP 10.0.0.1(公网域名对应IP),直接拒绝Host头为private.example.com的请求
      这样从入口就阻断了通过公网IP携带私有Host头的绕过方式。
  • 利用TLS SNI校验强化访问控制
    如果你的私有路由使用了Edge或Passthrough类型的TLS终止,确保证书是仅针对private.example.com的。当请求访问公网IP但携带私有域名的Host头时,SNI会不匹配,HAProxy会返回证书错误或者直接拒绝请求,从而阻止非法访问。另外,也可以在Ingress Controller的全局配置中添加SNI校验规则,确保每个请求的SNI和Host头一致。

内容的提问来源于stack exchange,提问作者ptrk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:06:07