Istio 流量劫持过程
开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅: Istio 中的 Sidecar 注入及透明流量劫持过程详解 。特别是博主整理的那张“流量劫持示意图”,已经可以很清晰的看出来劫持流程。这里我借着那张图片解释一版该图片的文字版本。在开始文字版前如果对 iptables 命令如果不是非常了解的话建议先重点看下下面的两篇文章,深入浅出的解释了该命令的概念及用法: iptables概念 - 以通俗易懂的方式描述iptables的相关概念 iptables指南 - iptables命令用法指南 这里引用iptables的一张报文流向图(版权归原博主所有) 当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务中,而此时,客户端报文的目标终点为web服务所监听的套接字(IP:Port)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时候,web服务所监听的IP与端口反而变成了原点。 -- 引用自 zsythink 上面这部分描述相当重要,它是理解sidecar在进行流量劫持的基础之一。 下面我们分析下昨天 istio-init 启动时执行的 istio-iptables 命令