开发者社区> 问答> 正文

为什么Ingress Pod中无法保留源IP?

为什么Ingress Pod中无法保留源IP?

展开
收起
游客py5kcp7dd6tu6 2022-03-16 01:03:47 813 0
1 条回答
写回答
取消 提交回答
  • 问题现象

    Ingress Pod中无法保留真实客户端IP,显示为节点IP或100.XX.XX.XX网段或其它地址。

    问题原因

    Ingress所使用的Service中externalTrafficPolicy设为了Cluster。 SLB上使用了七层代理。 使用了WAF接入或WAF透明接入服务。 解决方案

    对于设置externalTrafficPolicy为Cluster,且前端使用了四层SLB的情况。 可以将externalTrafficPolicy改为Local。但可能会导致集群内部使用SLB IP访问Ingress不通,具体解决方案,请参见集群内访问集群LoadBalancer暴露的SLB地址不通。

    对于使用了七层代理(七层SLB、WAF、透明WAF)的情况,可以按以下步骤解决: 确保使用的七层代理且开启了X-Forwarded-For请求头。 在Ingress Controller的ConfigMap中(默认为kube-system命名空间下的nginx-configuration)添加enable-real-ip: "true"。 观察日志,验证是否可以获取到源IP。 对于链路较长,存在多次转发的情况(例如在Ingress Controller前额外配置了反向代理服务),可以在开启enable-real-ip时通过观察日志中remote_addr的值,来确定真实IP是否是以X-Forwarded-For请求头传递到Ingress容器中。若不是,请在请求到达Ingress Controller之前利用X-Forwarded-For等方式携带客户端真实IP。 灰度规则不生效

    2022-03-16 01:04:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载