IstioCon 2021如何在Istio中进行源地址保持?
Posted 容器魔方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IstioCon 2021如何在Istio中进行源地址保持?相关的知识,希望对你有一定的参考价值。
北京时间2月23日,在全球首届社区峰会IstioCon 2021中,华为云原生开源团队核心成员徐中虎发表了《Preserve Original Source Address within Istio》主题演讲。
演讲嘉宾:徐中虎
徐中虎,华为云原生开源团队核心成员,Istio社区指导委员会委员(亚洲唯一),Istio Maintainer以及核心贡献者,Kubernetes项目核心贡献者。畅销书《云原生服务网格Istio:原理、实践、架构与源码解析》作者之一,聚焦在Kubernetes、容器、Service Mesh等云原生技术。对于分布式系统高性能、高可靠、大规模扩展性有深入的研究和丰富的经验。
演讲主要包含三部分的内容:
2)用于安全策略控制,常用的黑白名单设置;
常见的源IP保持方式及背景知识
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/ef1f2a252e55438ba00c9fd7d64d1f40.jpg)
我们常用的源IP保持的方式从OSI网络模型L3-L7主要分为:
1. L3
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/81e52b8310684230920551c2f7522a18.jpg)
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/147416701f0743dc80f691afe83e8d4d.jpg)
2. L4
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/9b917226007d419888543f465c6eff04.jpg)
3. L7
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/ff0aedbd6fe44c998a5fb9e42cc8784c.jpg)
集群内服务访问
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/7bbe9aa639004783857870bee33fad64.jpg)
Ingress服务访问
1. HTTP类协议源IP保持
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/9154828850614a6484662ee0272db86e.jpg)
那么可以看到,东西向七层HTTP类协议可以非常容易的通过添加XFF的方式,方便服务端获取客户端真实IP。其典型的配置如下:
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/3baf47baf9e94a598675c18fa93ad877.jpg)
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/cd83872002964b9e9147544550edff0f.jpg)
Ingress HTTP
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/f84e94ded0f346c98697d5e927d24eee.jpg)
两种模式下,都需要配置Ingress gateway使其支持XFF自动添加, 另外可以通过xff_num_trusted_hops额外配置Envoy信任的代理跳数,详细参考https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-for。
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/520e22689e2e4883bc954c70d48747b5.jpg)
2. TCP源IP保持
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/266e880550344de8aff5b0a77ce6b896.jpg)
2)配置TPROXY和个性化路由,确保svcB发送到10.244.0.20的数据包被Envoy接收。主要是对数据包打标记,然后根据自定义路由,将非本地的数据包通过本地lo路由。
-A PREROUTING -p tcp -m mark --mark 0x539 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A OUTPUT -p tcp -m connmark --mark 0x539 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
ip -f inet rule add fwmark 1337 lookup 133
ip -f inet route add local default dev lo table 133
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/a6ec54d69501464ca7a3c2e922668c65.jpg)
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/b1c34d2070eb4ba0abd074a529ad4055.jpg)
在svcB上配置envoy.filters.listener.proxy_protocol,保证Envoy监听器获取原始客户端IP。
![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/f84e94ded0f346c98697d5e927d24eee.jpg)
本文小结
本文根据本人在IstioCon 2021的分享整理而来,相关的案例demo都可以在
https://github.com/hzxuzhonghu/istio-demo 找到,希望对大家有所启发。![【IstioCon 2021】如何在Istio中进行源地址保持?](https://image.cha138.com/20210818/2cc550812cf74b729053c30badae9dab.jpg)
即可获取演讲PPT
戳阅读原文,观看演讲视频!
以上是关于IstioCon 2021如何在Istio中进行源地址保持?的主要内容,如果未能解决你的问题,请参考以下文章
国内首次 Istio Meetup 来了,主流社区专家邀你来共聊
国内首次 Istio Meetup 来了,主流社区专家邀你来共聊