雲計算

k8s ingress獲取真實IP地址配置

作者:楓凡

背景

業務架構:
Client->WAF->LB->ECS->容器
問題:在容器中獲取不到真實的客戶端公網IP

抓包分析

1.在ECS上的抓包分析,看到WAF已經將 真實客戶端地址放到了 x-Forwarded-For 的字段中傳給了ECS

6.1.png

2.在容器中抓包,看到一個x-Forwarded-For的字段是錯誤的
對應的IP為WAF的回源地址

6.2.png

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地址方法
](https://yq.aliyun.com/articles/70565)

Leave a Reply

Your email address will not be published. Required fields are marked *