目录
CT
CT(conntrack,connection tracking,连接跟踪),顾名思义,就是跟踪(并记录)连接的状态,是许多网络应用的基础。例如:iptables、LVS/IPVS、OvS、Docker Network、Kubernetes Service、ServiceMesh Sidecar 等。
CT 在 netfilter 框架中完成了 Connection 信息的采集和录入功能,单并不会修改或丢弃数据包,后者是其他模块(e.g. NAT)基于 Netfilter Hook 机制完成的。
需要注意的是,CT 中的 connection,与 TCP 的 connection 并不完全相同。CT 中,一个 IP 5-tuple 定义的一条 Flow 就表示一条 Connection。
例如,上图是一台 IP 地址为 10.1.1.2 的 Linux 机器,我们能看到这台机器上有三条连接:
- 机器访问外部 HTTP 服务的连接(目的端口 80)。
- 外部访问机器内 FTP 服务的连接(目的端口 21)。
- 机器访问外部 DNS 服务的连接(目的端口 53)。
CT 所做的事情就是发现并跟踪这些连接的状态,具体包括:
- 从数据包