Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >雷池社区版 如何配置才能正确获取到源 IP

雷池社区版 如何配置才能正确获取到源 IP

作者头像
用户3358450
修改于 2024-11-19 06:58:32
修改于 2024-11-19 06:58:32
950
举报

问题说明

image.png
image.png

默认情况下,雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题,雷池获取到的 IP 就是攻击者的真实 IP。

但是,有些情况下我们需要在雷池前面再叠加其他代理设备(如 Nginx,CDN,应用交付,API 网管等等)。在这种情况下,实际连接雷池的不是真正的网站用户,而是这些代理设备,这种情况下我们就需要根据实际网络拓扑来调整雷池的 IP 获取方式。

先了解什么是 X-Forwarded-For

X-Forwarded-For 是一个相对通用的 HTTP 请求头。

HTTP 流量在经过代理时,由于网络连接被截胡,服务器无法得知真正的客户端 IP。这时代理设备会给当前的流量加上一个 X-Forwarded-For 头,里面的内容就是连接这个代理的客户端 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,真正的客户端地址是 1.2.3.4

代码语言:http
AI代码解释
复制
GET / HTTP/1.1

Host: demo.waf-ce.chaitin.cn

User-Agent: Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

X-Forwarded-For: 1.2.3.4

X-Forwarded-For 实际上是一个链式结构。如果流量经过了多层代理设备,X-Forwarded-For 会记录途径的所有 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,流量经过了三层代理,真正的客户端地址是 1.2.3.4,第一层代理的是 11.12.13.14,第二层代理的地址是 21.22.23.24,第三次代理的地址可以通过 Socket 连接直接来获取。

代码语言:http
AI代码解释
复制
GET / HTTP/1.1

Host: demo.waf-ce.chaitin.cn

User-Agent: Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

X-Forwarded-For: 1.2.3.4, 11.12.13.14, 21.22.23.24

IP-Forwarded-For 头靠谱么

在代理设备和代理链路可信的情况下 IP-Forwarded-For 头传递的内容是很靠谱的,可以放心的试用。

但是呢,如果代理设备不可信,那么攻击者会通过伪造 IP-Forwarded-For 头的办法来实现伪造源 IP。

雷池的配置

雷池全局配置里有一个这样的选项,专门用来解决这个问题。

image.png
image.png

雷池在这个配置里提供了几个选项,根据上面讲到的知识,大家可以根据实际情况来选择最适合的选项

  • **从网络连接中获取**: 当雷池作为最外层代理设备,无其他前置代理时选用
  • **从 X-Forwarded-For 中获取上一级代理的地址**:在流量到达雷池之前还有**一层**代理设备(如 Nginx,CDN 等)时可选用
  • **从 X-Forwarded-For 中获取上上一级代理的地址**:在流量到达雷池之前还有**两层**代理设备(如 Nginx,CDN 等)时可选用
  • **从 X-Forwarded-For 中获取上上上一级代理的地址**:在流量到达雷池之前还有**三层**代理设备(如 Nginx,CDN 等)时可选用
  • **从其他 HTTP Header 中获取**:有几种情况
  • 流量经过了一些特殊的反向代理设备,这类代理不会发送 X-Forwarded-For 头,但是可以通过配置,把 IP 通过其他头发过来
  • 流量到达雷池有多种途径,可能有一层代理,也可能有两层代理,可以通过配置前置代理设备来统一 HTTP

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
云原生|什么是HPA和PDB?
最近的项目,Kubernetes的人员要做系统维护的时候,需要修改我容器化应用的PDB,一直问我是否可以改动。
琉璃康康
2023/11/28
3900
云原生|什么是HPA和PDB?
如何在 Kubernetes 上部署高可用应用程序
但使用 Kubernetes 不仅仅是设置它并向其部署 pod。Kubernetes 中许多使应用程序更具弹性和高可用性的丰富功能不仅仅是一件事,而是不同流程和配置的组合。从如何在不停机的情况下部署应用程序,到调度Pod 以确保它们在节点之间正确分布。这些是我们将在本文中讨论的配置和技术的要点:
DevOps云学堂
2024/05/11
4560
如何在 Kubernetes 上部署高可用应用程序
K8S Pod 保护之 PodDisruptionBudget
在 Kubernetes 中,为了保证业务不中断或业务SLA不降级,需要将应用进行集群化部署。通过PodDisruptionBudget 控制器可以设置应用POD集群处于运行状态最低个数,也可以设置应用POD集群处于运行状态的最低百分比,这样可以保证在主动销毁应用POD的时候,不会一次性销毁太多的应用POD,从而保证业务不中断或业务SLA不降级。
YP小站
2020/06/04
2.3K0
K8s pod 动态弹性扩缩容(HPA )部署!步骤齐全,少走坑路
Horizontal Pod Autoscaler(HPA,Pod水平自动伸缩),根据平均 CPU 利用率、平均内存利用率或你指定的任何其他自定义指标自动调整 Deployment 、ReplicaSet 或 StatefulSet 或其他类似资源,实现部署的自动扩展和缩减,让部署的规模接近于实际服务的负载。HPA不适用于无法缩放的对象,例如DaemonSet。
民工哥
2022/10/27
6.8K0
K8s pod 动态弹性扩缩容(HPA )部署!步骤齐全,少走坑路
【每日一个云原生小技巧 #44】Kubernetes VPA(Pod 纵向自动扩缩)
Kubernetes VPA 自动调整 Pod 中容器的 CPU 和内存资源限制。不同于水平自动扩缩(HPA),它关注的是单个 Pod 的资源分配,而不是增加或减少 Pod 的数量。
郭旭东
2023/12/14
3430
【云原生 | Kubernetes篇】深入了解Deployment(八)
Deployment控制RS,RS控制Pod的副本数 ReplicaSet: 只提供了副本数量的控制功能 Deployment: 每部署一个新版本就会创建一个新的副本集,利用他记录状态,回滚也是直接让指定的rs生效
Lansonli
2022/06/11
4360
【云原生 | Kubernetes篇】深入了解Deployment(八)
kubernetes其他控制器之PodDisruptionBudget
在Kubernetes中为了保证业务不中断或者业务SLA不降级,需要将应用集群化部署,比如Deployment,StatefulSet部署等。虽然是集群化部署,但是在我们主动销毁Pod的时候,为了避免一次性销毁太多Pod,Kubernetes引用PodDisruptionBudget(PDB)控制器,用来控制集群中Pod的运行个数。
极客运维圈
2020/03/23
9430
kubernetes其他控制器之PodDisruptionBudget
Kubernetes(k8s)-Deployment介绍
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
运维小路
2024/12/30
2340
Kubernetes(k8s)-Deployment介绍
云原生|Hi,Pod,你被控制了!
了解了Pod的基础知识之后,对于实验来说可以通过kubectl run或者apply一个yaml来创建Pod,但是对于生产环境中构建一个CNF来说,有些Pod需要多个副本,有的运行完就不再需要了,有些需要定期执行某些任务,有些需要在不同的node上只创建一个Pod,这样通过一个一个的创建Pod是不仅费时费力且不便于维护,因此需要一个概念来根据不同需求创建对应的Pod并确保在任何时候都有对应要求的副本在运行,这个概念便是Pod的控制器。
琉璃康康
2023/11/27
1880
云原生|Hi,Pod,你被控制了!
Kubernetes 微服务最佳实践
原文作者:ryan4yin,🔗: https://thiscute.world/posts/kubernetes-best-practices/ 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes 配置」,是我个人的「最佳实践」。其中大部分内容都经历过线上环境的考验,但是也有少部分还只在我脑子里模拟过,请谨慎参考。 阅读前的几个注意事项: 这份文档比较长,囊括了很多内容,建议当成参考手册使用,先参照目录简单读一读,有需要再细读相关内容。 这份文档需要一定的 Kube
我的小碗汤
2023/03/19
1.2K0
Kubernetes 微服务最佳实践
一文看懂 Kubernetes 弹性伸缩
在 Kubernetes 集群中,自动化资源管理和伸缩是保持应用高效运行的关键。Kubernetes 提供了几种不同的机制来帮助实现这一目标:水平自动伸缩(HPA, Horizontal Pod Autoscaler)、垂直自动伸缩(VPA, Vertical Pod Autoscaler)和集群自动伸缩(CA, Cluster Autoscaler)。这些伸缩器在功能和使用场景上有所不同:
SRE运维手记
2024/09/06
5490
一文看懂 Kubernetes 弹性伸缩
K8s降本增效之VPA上篇
VPA全称VerticalPodAutoscaler,即Pod的横向扩缩,其根据容器资源使用率自动设置CPU和内存的requests及limit,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。它既可以缩小过度请求资源的容器,也可以根据其使用情况随时提升资源不足的容量。
zouyee
2023/01/11
1.5K0
Kubernetes Pod Disruption Budget实用指南
管理Kubernetes集群在保持一致的可用性和对故障的韧性方面存在困难。虽然使用副本可以确保存在多个应用程序实例,但并不能保证应用程序运行时的不间断。
云云众生s
2024/03/28
3350
K8s:通过 Pod 干扰预算(PDB)提高节点故障、维护期间 Pod 频繁调度时工作负载的可用性
对于对高可用要求很高的一些容器化应用,例如一些有状态的工作负载,比如数据库,分布式协调服务等, K8s 集群中 Pod 频繁的调度是不能容忍的一件事。尤其涉及到应用集群数据同步,共识,心跳等诸多因素. 容易造成可用性降低,数据延迟甚至潜在的数据丢失。
山河已无恙
2023/08/21
2.1K0
K8s:通过 Pod 干扰预算(PDB)提高节点故障、维护期间 Pod 频繁调度时工作负载的可用性
Kubernetes中的OOM Killer优化技巧
Kubernetes 中的内存不足 (OOM) 杀手:如何优化容器内存管理并保持应用程序稳定性
云云众生s
2024/09/27
2140
k8s滚动升级和扩缩容
用于实现基于CPU使用率进行自动Pod扩缩容的功能。HPA控制器基于Master的kube-controller-manager服务启动参数--horizontal-pod-autoscaler-sync-period定义的探测周期(默认值为 15s),周期性地监测目标Pod的资源性能指标,并与HPA资源对象中的扩缩容条件进行对比,在满足条件时对Pod副本数量进行调整.
丁D
2022/08/12
1.6K0
一文带你掌握Kubernetes VPA(Pod纵向自动扩缩)
之前的文章我们介绍了HPA(Horizontal Pod Autoscaler)的实现,HPA一般被称为横向扩展,与HPA不同的Vertical Pod Autoscaler ( VPA ) 会自动调整 Pod 的 CPU 和内存属性,被称为纵向扩展。VPA可以给出服务运行所适合的CPU和内存配置,省去估计服务占用资源的时间,更合理的使用资源。当然,VPA也可根据资源的使用情况“调整”pod的资源。这里的调整我们用了双引号,因为他的实现机制是重建而不是动态增加。下面是一个实际的例子:假设我的memory limits是100Mi,但是现在已经用到了98Mi,如果再大的话就oom了,此时vpa会在垂直方向上提升你的memory limits的大小。这种vpa比较适合一些资源消耗比较大的应用,例如es,你给大了资源浪费,给小了,又不够。所以vpa就派上用场了。当然,vpa不像hpa默认集成在k8s里面的,需要你自己去配置的。
用户1107783
2023/09/11
2.9K0
一文带你掌握Kubernetes VPA(Pod纵向自动扩缩)
自动扩缩容HPA实践(一)
在Kubernetes中,HPA(Horizontal Pod Autoscaler)是一种自动扩缩容应用程序的方式,可以根据应用程序负载动态调整Pod副本数量。HPA是一个非常有用的功能,它可以帮助您实现自动水平扩展和收缩应用程序,并确保应用程序始终能够处理负载。
玖叁叁
2023/04/30
5530
Kubernetes HPA 详解
在前面的学习中我们使用用一个 kubectl scale 命令可以来实现 Pod 的扩缩容功能,但是这个毕竟是完全手动操作的,要应对线上的各种复杂情况,我们需要能够做到自动化去感知业务,来自动进行扩缩容。为此,Kubernetes 也为我们提供了这样的一个资源对象:HorizontalPodAutoscaling(Pod水平自动伸缩),简称 HPA,HPA 通过监控分析一些控制器控制的所有 Pod 的负载变化情况来确定是否需要调整 Pod 的副本数量,这是 HPA 最基本的原理:
我是阳明
2020/06/15
4.6K0
Kubernetes HPA 详解
什么是HPA
HPA(Horizontal Pod Autoscaler)是Kubernetes的一项功能,可以自动根据CPU使用率等指标来调整Pod副本数量,以实现自动水平扩展和收缩应用程序。使用HPA,可以根据应用程序的需求动态调整Pod数量,从而实现更好的负载均衡和资源利用率。
玖叁叁
2023/04/30
9221
相关推荐
云原生|什么是HPA和PDB?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档