k8s ingress获取真实IP地址配置

本文涉及的产品
Web应用防火墙 3.0,1万次SeCU,1个月有效期
简介: 背景 业务架构:Client->WAF->LB->ECS->容器问题:在容器中获取不到真实的客户端公网IP 抓包分析 在ECS上的抓包分析,看到WAF已经将 真实客户端地址放到了 x-Forwarded-For 的字段中传给了ECS ![image](https://yqfile.

背景

业务架构:
Client->WAF->LB->ECS->容器
问题:在容器中获取不到真实的客户端公网IP

抓包分析

1.在ECS上的抓包分析,看到WAF已经将 真实客户端地址放到了 x-Forwarded-For 的字段中传给了ECS
image
2.在容器中抓包,看到一个x-Forwarded-For的字段是错误的
对应的IP为WAF的回源地址
image
3.与容器同学确认 ingress的行为

将真实的客户端IP,放到了x-Original-Forwarded-For。而将WAF的回源地址放到了 x-Forwarded-For了。

处理方法

  1. 修改容器的配置文件
    配置文件:

    kube-system/nginx-configuration

    修改命令:

    kubectl -n kube-system edit cm nginx-configuration

    添加内容:

    compute-full-forwarded-for: "true"
    forwarded-for-header: "X-Forwarded-For"
    use-forwarded-headers: "true"

    保存后立即生效。随后ingress的添加真实的IP行为会与RFC一样都依次添加到X-Forwarded-For中了。
    更多参数参考这里。

  2. 业务程序需要调整获取真实IP的字段为x-Original-Forwarded-For。

姐妹篇:
Apapche 获取真实IP地址方法
Nginx获取真实IP地址方法


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
消息中间件 安全 Kafka
一文搞懂Kafka中的listeners配置策略
1. listeners中的plaintext controller external是什么意思? 2. Kraft模式下controller和broker有何区别? 3. 集群节点之间同步什么数据,通过哪个端口,是否可以自定义端口? 4. 客户端通过哪个端口连接到kafka,通过9092连接的是什么,broker还是controller? 5. 为controller配置了单独的端口有什么用? 6. control.plane.listener.name与controller.listener.names有何区别?
2872 2
|
网络协议 应用服务中间件 nginx
玩转Kubernetes TCP Ingress
如何使用Kubernetes的TCP Ingress
20816 0
|
Kubernetes 网络协议 网络安全
使用cert-manager给阿里云的DNS域名授权SSL证书
背景介绍cert-manager是Kubernetes上一个管理SSL证书的插件,配合nginx-ingress可以对网站配置https访问,在加上letsencrypt提供免费的SSL证书,所有就产生了cert-manager+nginx-ingress+letsencrypt的免费套餐。
8948 0
|
Web App开发 应用服务中间件 nginx
|
存储 Kubernetes 应用服务中间件
Ingress-Nginx使用指南上篇
关于Ingress-Nginx在Kubernetes中的使用指南,涵盖了从基础安装到高级特性配置的详细步骤和实战案例。
5198 3
Ingress-Nginx使用指南上篇
|
Kubernetes 负载均衡 安全
【技术揭秘】阿里云容器服务Ingress高级玩法:如何轻松实现客户端原始IP透传,提升应用安全性与用户体验!
【8月更文挑战第17天】本文介绍如何在阿里云容器服务中配置Ingress以透传客户端原始IP地址。通过Ingress可实现HTTP负载均衡等功能。需在Ingress定义文件中添加特定注解,如`nginx.ingress.kubernetes.io/real-ip-header: X-Real-IP`。创建并应用Ingress配置后,后端服务可通过读取`X-Real-IP`头获取真实IP。此举有助于安全审计及流量分析。
581 2
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
1234 1
|
负载均衡 Kubernetes 混合部署
k8s 中externalTrafficPolicy应用场景和实践
在Kubernetes(K8s)中,`externalTrafficPolicy` 是一个用于控制服务的外部流量的策略。这个字段可以在 `Service` 的定义中设置,其主要作用是决定服务对外部请求的负载均衡行为。具体来说,`externalTrafficPolicy` 有两个可选值: 1. `Cluster`: 默认值。当设置为 `Cluster` 时,服务将负载均衡流量到所有的 Pod,无论这些 Pod 是否在同一节点上。这意味着即使请求来自于同一节点的多个 Pod,流量也可能被负载均衡到不同的节点上。 ```yaml apiVersion: v1 kind: Se
1609 1
|
弹性计算 Kubernetes Cloud Native
全景剖析阿里云容器网络数据链路(一)—— Flannel
本文是[全景剖析容器网络数据链路]第一部分,主要介绍Kubernetes Flannel模式下,数据面链路的转转发链路
1508 8
全景剖析阿里云容器网络数据链路(一)—— Flannel

热门文章

最新文章